added loader to training reports
This commit is contained in:
@@ -22,6 +22,7 @@ import SelectContent from '@/components/ui/select/SelectContent.vue';
|
|||||||
import SelectItem from '@/components/ui/select/SelectItem.vue';
|
import SelectItem from '@/components/ui/select/SelectItem.vue';
|
||||||
import Input from '@/components/ui/input/Input.vue';
|
import Input from '@/components/ui/input/Input.vue';
|
||||||
import MemberCard from '@/components/members/MemberCard.vue';
|
import MemberCard from '@/components/members/MemberCard.vue';
|
||||||
|
import Spinner from '@/components/ui/spinner/Spinner.vue';
|
||||||
|
|
||||||
enum sidePanelState { view, create, closed };
|
enum sidePanelState { view, create, closed };
|
||||||
|
|
||||||
@@ -42,6 +43,7 @@ watch(() => route.params.id, async (newID) => {
|
|||||||
focusedTrainingReport.value = null;
|
focusedTrainingReport.value = null;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
TRLoaded.value = false;
|
||||||
viewTrainingReport(Number(route.params.id));
|
viewTrainingReport(Number(route.params.id));
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -60,6 +62,7 @@ const focusedTrainingTrainers = computed<CourseAttendee[] | null>(() => {
|
|||||||
})
|
})
|
||||||
async function viewTrainingReport(id: number) {
|
async function viewTrainingReport(id: number) {
|
||||||
focusedTrainingReport.value = await getTrainingReport(id);
|
focusedTrainingReport.value = await getTrainingReport(id);
|
||||||
|
TRLoaded.value = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function closeTrainingReport() {
|
async function closeTrainingReport() {
|
||||||
@@ -93,6 +96,8 @@ onMounted(async () => {
|
|||||||
viewTrainingReport(Number(route.params.id))
|
viewTrainingReport(Number(route.params.id))
|
||||||
loaded.value = true;
|
loaded.value = true;
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const TRLoaded = ref(false);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@@ -173,7 +178,7 @@ onMounted(async () => {
|
|||||||
<X></X>
|
<X></X>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="max-h-[70vh] overflow-auto scrollbar-themed my-5">
|
<div v-if="TRLoaded" class="max-h-[70vh] overflow-auto scrollbar-themed my-5">
|
||||||
<div class="flex flex-col mb-5 border rounded-lg bg-muted/70 p-2 py-3 px-4">
|
<div class="flex flex-col mb-5 border rounded-lg bg-muted/70 p-2 py-3 px-4">
|
||||||
<p class="scroll-m-20 text-xl font-semibold tracking-tight">{{ focusedTrainingReport.course_name }}
|
<p class="scroll-m-20 text-xl font-semibold tracking-tight">{{ focusedTrainingReport.course_name }}
|
||||||
</p>
|
</p>
|
||||||
@@ -184,7 +189,7 @@ onMounted(async () => {
|
|||||||
:member-id="focusedTrainingReport.created_by" />
|
:member-id="focusedTrainingReport.created_by" />
|
||||||
<p v-else>{{ focusedTrainingReport.created_by_name === null ? "Unknown User" :
|
<p v-else>{{ focusedTrainingReport.created_by_name === null ? "Unknown User" :
|
||||||
focusedTrainingReport.created_by_name
|
focusedTrainingReport.created_by_name
|
||||||
}}</p>
|
}}</p>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -284,6 +289,9 @@ onMounted(async () => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div v-else class="flex w-full items-center justify-center h-[80%]">
|
||||||
|
<Spinner class="size-8"></Spinner>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="sidePanel == sidePanelState.create" class="pl-7 border-l w-3/5 max-w-5xl">
|
<div v-if="sidePanel == sidePanelState.create" class="pl-7 border-l w-3/5 max-w-5xl">
|
||||||
<div class="flex justify-between my-3">
|
<div class="flex justify-between my-3">
|
||||||
|
|||||||
Reference in New Issue
Block a user