Files
memberApp/src/vueLib/tables/responsible/ResponsibleTable.ts
Adrian Zürcher bdcceb53e0 change whole backend and tables for gorm table references
simplify tables with table components close #31
2025-11-29 15:59:18 +01:00

89 lines
2.1 KiB
TypeScript

import { appApi } from 'src/boot/axios';
import { ref, computed } from 'vue';
import type { Members } from 'src/vueLib/models/member';
import { useNotify } from 'src/vueLib/general/useNotify';
import { i18n } from 'boot/lang';
import type { Responsibles } from 'src/vueLib/models/responsible';
import MenuComponent from '../components/MenuComponent.vue';
import ClickableComponent from '../components/ClickableComponent.vue';
export function useResponsibleTable() {
const responsibleMember = ref<Members>([]);
const responsibles = ref<Responsibles>([]);
const pagination = ref({
sortBy: 'firstName',
descending: false,
page: 1,
rowsPerPage: 20,
});
const columns = computed(() => [
{
name: 'firstName',
align: 'left' as const,
label: i18n.global.t('prename'),
field: 'firstName',
sortable: true,
component: ClickableComponent,
},
{
name: 'lastName',
align: 'left' as const,
label: i18n.global.t('lastName'),
field: 'lastName',
sortable: true,
component: ClickableComponent,
},
{
name: 'option',
align: 'center' as const,
label: '',
field: 'option',
icon: 'option',
component: MenuComponent,
},
]);
const { NotifyResponse } = useNotify();
const loading = ref(false);
//updates responsible list from database
async function updateResponsibles() {
loading.value = true;
await appApi
.get('responsible')
.then((resp) => {
responsibleMember.value = [];
if (resp.data === null) {
return;
}
responsibles.value = resp.data as Responsibles;
responsibles.value.forEach((d) => {
d.member.memberId = d.memberId;
d.member.id = d.id;
responsibleMember.value.push(d.member);
});
})
.catch((err) => {
NotifyResponse(err, 'error');
})
.finally(() => {
loading.value = false;
});
}
return {
responsibles,
responsibleMember,
pagination,
columns,
loading,
updateResponsibles,
};
}