From 3a18ea42fec6c9372ad6aaa61103d59a2c2a67de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Tue, 2 Sep 2025 15:52:06 +0200 Subject: [PATCH] Add ignore filter for accompanying period work IDs Refactor accompanying period work fetching logic to include a new filter for ignoring specific IDs, and update related components with new prop bindings. --- .../components/DocumentsList.vue | 3 +- .../components/FormEvaluation.vue | 1 + .../AccompanyingPeriodWorkSelectorModal.vue | 36 +++++++++---------- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/components/DocumentsList.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/components/DocumentsList.vue index b295f2ba6..d1506fcab 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/components/DocumentsList.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/components/DocumentsList.vue @@ -231,6 +231,7 @@ v-model:selectedAcpw="selectedAcpw" :accompanying-period-id="accompanyingPeriodId" :is-evaluation-selector="true" + :ignore-accompanying-period-work-ids="[accompanyingPeriodWorkId]" @close-modal="showAccompanyingPeriodSelector = false" @update:selectedEvaluation="selectedEvaluation = $event" /> @@ -254,7 +255,7 @@ import { import { ref, watch } from "vue"; import AccompanyingPeriodWorkSelectorModal from "ChillPersonAssets/vuejs/_components/AccompanyingPeriodWorkSelector/AccompanyingPeriodWorkSelectorModal.vue"; -defineProps(["documents", "docAnchorId", "accompanyingPeriodId"]); +defineProps(["documents", "docAnchorId", "accompanyingPeriodId", "accompanyingPeriodWorkId"]); const emit = defineEmits([ "inputDocumentTitle", "removeDocument", diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/components/FormEvaluation.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/components/FormEvaluation.vue index bbd26da5d..eb7ce8b5c 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/components/FormEvaluation.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/components/FormEvaluation.vue @@ -25,6 +25,7 @@ :documents="evaluation.documents" :docAnchorId="docAnchorId" :accompanyingPeriodId="store.state.work.accompanyingPeriod.id" + :accompanying-period-work-id="store.state.work.id" @inputDocumentTitle="onInputDocumentTitle" @removeDocument="removeDocument" @duplicateDocument="duplicateDocument" diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AccompanyingPeriodWorkSelector/AccompanyingPeriodWorkSelectorModal.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AccompanyingPeriodWorkSelector/AccompanyingPeriodWorkSelectorModal.vue index 0174902cc..12c377892 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AccompanyingPeriodWorkSelector/AccompanyingPeriodWorkSelectorModal.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AccompanyingPeriodWorkSelector/AccompanyingPeriodWorkSelectorModal.vue @@ -75,7 +75,7 @@ import { ACPW_DUPLICATE_SELECT_ACCOMPANYING_PERIOD_WORK, CONFIRM, } from "translator"; -import { makeFetch } from "ChillMainAssets/lib/api/apiMethods"; +import {fetchResults, makeFetch} from "ChillMainAssets/lib/api/apiMethods"; import AccompanyingPeriodWorkEvaluationList from "ChillPersonAssets/vuejs/_components/AccompanyingPeriodWorkSelector/AccompanyingPeriodWorkEvaluationList.vue"; import { AccompanyingPeriodWorkEvaluation } from "../../../types"; @@ -85,10 +85,11 @@ const showModal = ref(false); const accompanyingPeriodWorks = ref([]); const evaluations = ref([]); -const props = defineProps({ - accompanyingPeriodId: String, - isEvaluationSelector: Boolean, -}); +const props = defineProps<{ + accompanyingPeriodId: string, + isEvaluationSelector: boolean, + ignoreAccompanyingPeriodWorkIds: number[], +}>(); const emit = defineEmits<{ pickWork: [payload: { work: AccompanyingPeriodWork | null }]; @@ -105,22 +106,19 @@ onMounted(() => { showModal.value = true; }); -const getAccompanyingPeriodWorks = (periodId: number) => { +const getAccompanyingPeriodWorks = async (periodId: number) => { const url = `/api/1.0/person/accompanying-course/${periodId}/works.json`; - makeFetch("GET", url) - .then((response) => { - if (props.isEvaluationSelector) { - accompanyingPeriodWorks.value = response.results.filter( - (acpw) => acpw.accompanyingPeriodWorkEvaluations.length > 0, - ); - } else { - accompanyingPeriodWorks.value = response.results; - } - }) - .catch((error) => { - console.log(error); - }); + const accompanyingPeriodWorksFetched = await fetchResults(url); + if (props.isEvaluationSelector) { + accompanyingPeriodWorks.value = accompanyingPeriodWorksFetched.filter( + (acpw: AccompanyingPeriodWork) => acpw.accompanyingPeriodWorkEvaluations.length > 0 + && typeof acpw.id !== "undefined" + && !props.ignoreAccompanyingPeriodWorkIds.includes(acpw.id), + ); + } else { + accompanyingPeriodWorks.value = accompanyingPeriodWorksFetched + } }; watch(selectedAcpw, (newValue) => {