9292</template >
9393
9494<script setup lang="ts">
95- import { ref , watch , watchEffect , computed , onMounted } from ' vue'
95+ import { ref , watch , computed , onMounted } from ' vue'
9696import { useRoute , useRouter } from ' vue-router' ;
9797import type { DataViewPageEvent } from ' primevue/dataview'
9898
@@ -199,8 +199,6 @@ const onPageChange = (event: DataViewPageEvent) => {
199199const identificationTasksTotalCount = ref <number >(0 );
200200const identificationTasksArray = ref <IdentificationTask []>([]);
201201
202- const listRequest = ref <IdentificationTasksApiListRequest >();
203-
204202const numRows = ref <number >(25 );
205203
206204onMounted (() => {
@@ -225,11 +223,31 @@ onMounted(() => {
225223
226224 pageSelected .value = q .page ? Number (q .page ) - 1 : 0
227225 numRows .value = q .pageSize ? Number (q .pageSize ) : 25
226+
227+ fetchData ();
228228})
229229
230- const fetchData = () => {
230+ const listRequest = computed <IdentificationTasksApiListRequest >(() => ({
231+ createdAtAfter: selectedCreatedAtDateRange .value && selectedCreatedAtDateRange .value .length > 1 ? selectedCreatedAtDateRange .value [0 ].toISOString () : undefined ,
232+ createdAtBefore: selectedCreatedAtDateRange .value && selectedCreatedAtDateRange .value .length > 1 ? new Date (new Date (selectedCreatedAtDateRange .value [1 ]).setDate (selectedCreatedAtDateRange .value [1 ].getDate () + 1 )).toISOString () : undefined ,
233+ updatedAtAfter: selectedUpdatedAtDateRange .value && selectedUpdatedAtDateRange .value .length > 1 ? selectedUpdatedAtDateRange .value [0 ].toISOString () : undefined ,
234+ updatedAtBefore: selectedUpdatedAtDateRange .value && selectedUpdatedAtDateRange .value .length > 1 ? new Date (new Date (selectedUpdatedAtDateRange .value [1 ]).setDate (selectedUpdatedAtDateRange .value [1 ].getDate () + 1 )).toISOString () : undefined ,
235+ status: selectedIdentificationTaskStatus .value || undefined ,
236+ isFlagged: isFlagged .value ?? undefined ,
237+ numAnnotationsMin: selectedNumAnnotation .value ?.min ,
238+ numAnnotationsMax: selectedNumAnnotation .value ?.max ,
239+ observationCountryIds: selectedCountryIds .value || undefined ,
240+ resultSource: selectedSources .value || undefined ,
241+ resultTaxonIds: selectedTaxon .value ? [selectedTaxon .value .id ] : undefined ,
242+ reviewAction: selectedReviewAction .value || undefined ,
243+ page: pageSelected .value + 1 ,
244+ pageSize: numRows .value ,
245+ orderBy: selectedOrderBy .value ? [selectedOrderBy .value .value ] : undefined
246+ }));
247+
248+ const fetchData = async () => {
231249 loading .value = true ;
232- identificationTasksApi .list (listRequest .value ).then (
250+ await identificationTasksApi .list (listRequest .value ).then (
233251 (response ) => {
234252 // Assign results to identificationTasksArray.value, or an empty array if results is undefined
235253 identificationTasksArray .value = response .data .results || [];
@@ -244,35 +262,14 @@ const fetchData = () => {
244262}
245263
246264watch (listRequest , async () => {
247- fetchData ();
248- })
249-
250- watchEffect (async () => {
251- listRequest .value = {
252- createdAtAfter: selectedCreatedAtDateRange .value && selectedCreatedAtDateRange .value .length > 1 ? selectedCreatedAtDateRange .value [0 ].toISOString () : undefined ,
253- createdAtBefore: selectedCreatedAtDateRange .value && selectedCreatedAtDateRange .value .length > 1 ? new Date (new Date (selectedCreatedAtDateRange .value [1 ]).setDate (selectedCreatedAtDateRange .value [1 ].getDate () + 1 )).toISOString () : undefined ,
254- updatedAtAfter: selectedUpdatedAtDateRange .value && selectedUpdatedAtDateRange .value .length > 1 ? selectedUpdatedAtDateRange .value [0 ].toISOString () : undefined ,
255- updatedAtBefore: selectedUpdatedAtDateRange .value && selectedUpdatedAtDateRange .value .length > 1 ? new Date (new Date (selectedUpdatedAtDateRange .value [1 ]).setDate (selectedUpdatedAtDateRange .value [1 ].getDate () + 1 )).toISOString () : undefined ,
256- status: selectedIdentificationTaskStatus .value || undefined ,
257- isFlagged: isFlagged .value ?? undefined ,
258- numAnnotationsMin: selectedNumAnnotation .value ?.min ,
259- numAnnotationsMax: selectedNumAnnotation .value ?.max ,
260- observationCountryIds: selectedCountryIds .value || undefined ,
261- resultSource: selectedSources .value || undefined ,
262- resultTaxonIds: selectedTaxon .value ? [selectedTaxon .value .id ] : undefined ,
263- reviewAction: selectedReviewAction .value || undefined ,
264- page: pageSelected .value + 1 ,
265- pageSize: numRows .value ,
266- orderBy: selectedOrderBy .value ? [selectedOrderBy .value .value ] : undefined
267- } as IdentificationTasksApiListRequest
265+ await fetchData ();
268266
269267 const query = Object .fromEntries (
270268 Object .entries (listRequest .value )
271- .filter (([_ , v ]) => v !== undefined && v !== null && ! (Array .isArray (v ) && v .length === 0 ))
269+ .filter (([, v ]) => v !== undefined && v !== null && ! (Array .isArray (v ) && v .length === 0 ))
272270 .map (([k , v ]) => Array .isArray (v ) ? [k , v .join (' ,' )] : [k , v ])
273271 )
274-
275272 router .replace ({ query })
276- })
273+ }, { deep: true } )
277274
278275 </script >
0 commit comments