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([]); const responsibles = ref([]); 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, }; }