Skip to content

Commit b2aed59

Browse files
authored
Reference materials rule fix (#367)
* Fix reviewer materials length rule * Add loading indicators to reviewer materials
1 parent b9e4e07 commit b2aed59

File tree

2 files changed

+27
-6
lines changed

2 files changed

+27
-6
lines changed

client/src/api/api.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -634,10 +634,10 @@ async function getVettingDetailsForUser(userId: number) {
634634
}
635635

636636
async function createOrUpdateVettingDetailsForUser(userId: number, referenceMaterials: string) {
637-
return await axiosInstance.post<UpdateVettingDetails, VettingDetails>(
637+
return (await axiosInstance.post<VettingDetails>(
638638
`/vetting/user/${userId}`,
639639
{ 'reference_materials': referenceMaterials }
640-
);
640+
)).data;
641641
}
642642

643643
export interface Contour {

client/src/components/ReferenceMaterialsDialog.vue

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,40 @@
11
<script setup lang="ts">
2-
import { ref, watch } from 'vue';
2+
import { ref, onMounted, watch } from 'vue';
33
import { createOrUpdateVettingDetailsForUser } from '@api/api';
44
import useState from '@use/useState';
55
6-
const { currentUserId, reviewerMaterials } = useState();
6+
const { currentUserId, reviewerMaterials, loadReviewerMaterials } = useState();
77
88
const referenceDialog = ref(false);
99
const reviewerMaterialsDisplay = ref('');
10+
const loadingMaterials = ref(false);
1011
const valid = ref(true);
1112
const error = ref('');
1213
14+
1315
async function saveReviewerMaterials() {
1416
if (!currentUserId.value || !valid.value) return;
1517
try {
18+
loadingMaterials.value = true;
1619
const details = await createOrUpdateVettingDetailsForUser(currentUserId.value, reviewerMaterialsDisplay.value);
1720
reviewerMaterials.value = details.reference_materials;
21+
loadingMaterials.value = false;
22+
error.value = '';
1823
} catch(err) {
1924
error.value = 'There was a problem saving your changes. Please try again';
2025
}
2126
}
2227
28+
async function fetchMaterials() {
29+
loadingMaterials.value = true;
30+
await loadReviewerMaterials();
31+
loadingMaterials.value = false;
32+
}
33+
2334
watch(reviewerMaterials, () => reviewerMaterialsDisplay.value = reviewerMaterials.value);
35+
watch(currentUserId, async () => await fetchMaterials());
36+
37+
onMounted(fetchMaterials);
2438
2539
</script>
2640

@@ -39,6 +53,12 @@ watch(reviewerMaterials, () => reviewerMaterialsDisplay.value = reviewerMaterial
3953
<v-card>
4054
<v-card-title>
4155
Reference Materials
56+
<v-progress-circular
57+
v-if="loadingMaterials"
58+
indeterminate
59+
size="24"
60+
color="primary"
61+
/>
4262
</v-card-title>
4363
<v-card-text>
4464
<v-form
@@ -48,8 +68,9 @@ watch(reviewerMaterials, () => reviewerMaterialsDisplay.value = reviewerMaterial
4868
v-model="reviewerMaterialsDisplay"
4969
placeholder="Describe any reference materials used during labeling"
5070
:rules="[
51-
v => v.length <= 2000 || 'Only 2000 characters are allowed'
71+
v => (v?.length || 0) <= 2000 || 'Only 2000 characters are allowed'
5272
]"
73+
:disabled="loadingMaterials"
5374
counter="2000"
5475
/>
5576
<span
@@ -68,7 +89,7 @@ watch(reviewerMaterials, () => reviewerMaterialsDisplay.value = reviewerMaterial
6889
</v-btn>
6990
<v-btn
7091
color="primary"
71-
:disabled="!valid"
92+
:disabled="!valid || loadingMaterials"
7293
@click="saveReviewerMaterials"
7394
>
7495
Save

0 commit comments

Comments
 (0)