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.
This commit is contained in:
2025-09-02 15:52:06 +02:00
parent 9d58904969
commit 3a18ea42fe
3 changed files with 20 additions and 20 deletions

View File

@@ -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",

View File

@@ -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"

View File

@@ -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<AccompanyingPeriodWork[]>([]);
const evaluations = ref<AccompanyingPeriodWorkEvaluation[]>([]);
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<number, { results: AccompanyingPeriodWork[] }>("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<AccompanyingPeriodWork>(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) => {