Skip to content

Commit e5cc741

Browse files
authored
Merge pull request #24 from Mosquito-Alert/add_review_action_filter
Add review action filter
2 parents 8f3ac35 + ab48d4d commit e5cc741

File tree

4 files changed

+74
-2
lines changed

4 files changed

+74
-2
lines changed

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<template>
2+
<Select id="review_action" v-model="reviewAction" :options="options" show-clear>
3+
<template #value="slotProps">
4+
<IdentificationTaskReviewActionTag v-if="slotProps.value" :reviewActionParam="slotProps.value" />
5+
</template>
6+
<template #option="slotProps">
7+
<IdentificationTaskReviewActionTag :reviewActionParam="slotProps.option" />
8+
</template>
9+
</Select>
10+
</template>
11+
12+
<script setup lang="ts">
13+
import { ref } from 'vue';
14+
15+
import { IdentificationtasksListReviewActionParameter } from 'mosquito-alert';
16+
import IdentificationTaskReviewActionTag from './IdentificationTaskReviewActionTag.vue';
17+
18+
const reviewAction = defineModel<IdentificationtasksListReviewActionParameter>();
19+
20+
const options = ref<Array<IdentificationtasksListReviewActionParameter>>([
21+
IdentificationtasksListReviewActionParameter.Agree,
22+
IdentificationtasksListReviewActionParameter.Overwrite,
23+
IdentificationtasksListReviewActionParameter.Null,
24+
]);
25+
26+
</script>
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<template>
2+
<Tag :value="getValue(reviewActionParam)" :severity="getStatusSeverity(reviewActionParam)" />
3+
</template>
4+
<script setup lang="ts">
5+
import { IdentificationtasksListReviewActionParameter } from 'mosquito-alert';
6+
7+
defineProps<{
8+
reviewActionParam: IdentificationtasksListReviewActionParameter,
9+
}>();
10+
11+
const getValue = (reviewAction: IdentificationtasksListReviewActionParameter) => {
12+
switch (reviewAction) {
13+
case IdentificationtasksListReviewActionParameter.Agree:
14+
return 'Agree'
15+
case IdentificationtasksListReviewActionParameter.Overwrite:
16+
return 'Disagree'
17+
case IdentificationtasksListReviewActionParameter.Null:
18+
return 'Not reviewed'
19+
default:
20+
return 'default' // optional fallback
21+
}
22+
}
23+
24+
const getStatusSeverity = (reviewAction: IdentificationtasksListReviewActionParameter) => {
25+
switch (reviewAction) {
26+
case IdentificationtasksListReviewActionParameter.Agree:
27+
return 'success'
28+
case IdentificationtasksListReviewActionParameter.Overwrite:
29+
return 'warn'
30+
case IdentificationtasksListReviewActionParameter.Null:
31+
return 'secondary'
32+
default:
33+
return 'default' // optional fallback
34+
}
35+
}
36+
37+
</script>

src/views/identification_task/ListView.vue

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@
5757
optionValue="value" optionLabel="label" dataKey="value" dropdown-icon="pi pi-plus-circle" showClear />
5858
<label for="num_annotations">Annotations</label>
5959
</FloatLabel>
60+
<FloatLabel variant="on">
61+
<IdentificationTaskReviewActionSelect id="review_action" v-model="selectedReviewAction"
62+
class="min-w-30" />
63+
<label for="review_action">Review</label>
64+
</FloatLabel>
6065
<FloatLabel variant="on">
6166
<Select id="is_flagged" v-model="isFlagged" :options="[true, false]" showClear />
6267
<label for="is_flagged">Flag</label>
@@ -101,13 +106,14 @@ import TaxonTreeSelect from '@/components/taxa/TaxonTreeSelect.vue';
101106
102107
import { identificationTasksApi } from '@/services/apiService';
103108
104-
import type { IdentificationTask, IdentificationTaskResultSource, Country, Taxon } from 'mosquito-alert';
109+
import type { IdentificationTask, IdentificationTaskResultSource, IdentificationtasksListReviewActionParameter, Country, Taxon } from 'mosquito-alert';
105110
import { IdentificationTaskStatus } from 'mosquito-alert';
106111
import { IdentificationtasksListOrderByParameter } from 'mosquito-alert';
107112
import type { IdentificationTasksApiListRequest } from 'mosquito-alert';
108113
109114
import { useAbility } from '@casl/vue';
110115
import type { AppAbility } from '@/services/ability';
116+
import IdentificationTaskReviewActionSelect from '@/components/identificationTasks/IdentificationTaskReviewActionSelect.vue';
111117
112118
const ability = useAbility<AppAbility>();
113119
@@ -155,6 +161,7 @@ const selectedCountryIds = computed<number[]>(() => {
155161
return selectedCountries.value?.map(c => c.id) ?? [];
156162
});
157163
const selectedNumAnnotation = ref<{ min: number | undefined; max: number | undefined }>();
164+
const selectedReviewAction = ref<IdentificationtasksListReviewActionParameter>();
158165
const numAnnotationOptions = ref<Array<{ value: { min: number | undefined; max: number | undefined }; label: string }>>([
159166
{ value: { min: 0, max: 0 }, label: '0' },
160167
{ value: { min: 1, max: 1 }, label: '1' },
@@ -172,6 +179,7 @@ function clearFilters() {
172179
selectedSources.value = [];
173180
selectedCountries.value = [];
174181
selectedNumAnnotation.value = undefined;
182+
selectedReviewAction.value = undefined;
175183
isFlagged.value = undefined;
176184
}
177185
@@ -252,6 +260,7 @@ watchEffect(async () => {
252260
observationCountryIds: selectedCountryIds.value || undefined,
253261
resultSource: selectedSources.value || undefined,
254262
resultTaxonIds: selectedTaxon.value ? [selectedTaxon.value.id] : undefined,
263+
reviewAction: selectedReviewAction.value || undefined,
255264
page: pageSelected.value + 1,
256265
pageSize: numRows.value,
257266
orderBy: selectedOrderBy.value ? [selectedOrderBy.value.value] : undefined

0 commit comments

Comments
 (0)