diff --git a/composables/useStaffTime.ts b/composables/useStaffTime.ts index 749166a..e495d6a 100644 --- a/composables/useStaffTime.ts +++ b/composables/useStaffTime.ts @@ -38,6 +38,20 @@ export function useStaffTime() { }) } + async function submit(id: string) { + return await $api(`/api/staff/time/${id}`, { + method: 'PUT', + body: { state: 'submitted' }, + }) + } + + async function approve(id: string) { + return await $api(`/api/staff/time/${id}`, { + method: 'PUT', + body: { state: 'approved' }, + }) + } + async function get(id: string) { return await $api(`/api/staff/time/${id}`, { method: 'GET' }) } @@ -50,5 +64,5 @@ export function useStaffTime() { return await $api(`/api/staff/time/${id}`, { method: 'PUT', body: data }) } - return { list, start, stop, get, create, update } + return { list, start, stop,submit,approve, get, create, update } } diff --git a/pages/staff/time/index.vue b/pages/staff/time/index.vue index 2ac58f1..ab119da 100644 --- a/pages/staff/time/index.vue +++ b/pages/staff/time/index.vue @@ -2,7 +2,7 @@ import { useStaffTime } from '~/composables/useStaffTime' import { useAuthStore } from '~/stores/auth' -const { list, start, stop } = useStaffTime() +const { list, start, stop, submit,approve } = useStaffTime() const auth = useAuthStore() const router = useRouter() @@ -51,6 +51,16 @@ function handleEdit(entry: any) { showModal.value = true } +async function handleSubmit(entry: any) { + await submit(entry.id) + await load() +} + +async function handleApprove(entry: any) { + await approve(entry.id) + await load() +} + onMounted(async () => { await loadUsers() await load() @@ -115,14 +125,19 @@ onMounted(async () => { /> - + + + + @@ -131,15 +146,15 @@ onMounted(async () => { diff --git a/pages/standardEntity/[type]/index.vue b/pages/standardEntity/[type]/index.vue index bc0f445..5ef29a8 100644 --- a/pages/standardEntity/[type]/index.vue +++ b/pages/standardEntity/[type]/index.vue @@ -86,9 +86,7 @@ const changePage = (number) => { setupPage() } -const resetColum = (column) => { - columnsToFilter.value[column] = itemsMeta.value.distinctValues[column] -} + const changeSort = (column) => { if(sort.value.column === column) { @@ -131,7 +129,11 @@ const setupPage = async () => { items.value = data itemsMeta.value = meta if(!initialSetupDone.value){ - Object.keys(itemsMeta.value.distinctValues).forEach(distinctValue => { + Object.keys(tempStore.filters[type] || {}).forEach((column) => { + columnsToFilter.value[column] = tempStore.filters[type][column] + }) + + Object.keys(itemsMeta.value.distinctValues).filter(i => !Object.keys(tempStore.filters[type] || {}).includes(i)).forEach(distinctValue => { columnsToFilter.value[distinctValue] = itemsMeta.value.distinctValues[distinctValue] }) } @@ -144,8 +146,14 @@ const setupPage = async () => { setupPage() - - +const handleFilterChange = async (action,column) => { + if(action === 'reset') { + columnsToFilter.value[column] = itemsMeta.value.distinctValues[column] + } else if(action === 'change') { + tempStore.modifyFilter(type,column,columnsToFilter.value[column]) + } + setupPage() +} @@ -297,7 +305,7 @@ setupPage() sort-mode="manual" v-model:sort="sort" @update:sort="setupPage" - v-if="dataType && columns && items.length > 0" + v-if="dataType && columns && items.length > 0 && !loading" :rows="items" :columns="columns" class="w-full" @@ -328,7 +336,7 @@ setupPage() :options="itemsMeta?.distinctValues?.[column.key]" v-model="columnsToFilter[column.key]" multiple - @change="setupPage" + @change="handleFilterChange('change', column.key)" searchable searchable-placeholder="Suche..." :search-attributes="[column.key]" @@ -367,7 +375,7 @@ setupPage() v-if="columnsToFilter[column.key]?.length !== itemsMeta.distinctValues?.[column.key]?.length && column.distinct" > @@ -428,7 +436,7 @@ setupPage()
+