Skip to content

Commit 82994c6

Browse files
committed
feat: add dialog close functionality and optimize API call handling
1 parent d72e352 commit 82994c6

File tree

2 files changed

+26
-7
lines changed

2 files changed

+26
-7
lines changed

custom/VisionAction.vue

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
ref="confirmDialog"
1010
header="Bulk AI Flow"
1111
class="!max-w-full w-full lg:w-[1600px] !lg:max-w-[1600px]"
12+
:beforeCloseFunction="closeDialog"
1213
:buttons="[
1314
{ label: checkedCount > 1 ? 'Save fields' : 'Save field', options: { disabled: isLoading || checkedCount < 1 || isCriticalError || isFetchingRecords || isGeneratingImages || isAnalizingFields || isAnalizingImages, loader: isLoading, class: 'w-fit sm:w-40' }, onclick: (dialog) => { saveData(); dialog.hide(); } },
1415
{ label: 'Cancel', onclick: (dialog) => dialog.hide() },
@@ -91,9 +92,10 @@ const checkedCount = ref(0);
9192
const isGeneratingImages = ref(false);
9293
const isAnalizingFields = ref(false);
9394
const isAnalizingImages = ref(false);
94-
95+
const isDialogOpen = ref(false);
9596
9697
const openDialog = async () => {
98+
isDialogOpen.value = true;
9799
confirmDialog.value.open();
98100
isFetchingRecords.value = true;
99101
await getRecords();
@@ -143,6 +145,23 @@ const openDialog = async () => {
143145
}
144146
}
145147
148+
const closeDialog = () => {
149+
confirmDialog.value.close();
150+
isAiResponseReceivedAnalize.value = [];
151+
isAiResponseReceivedImage.value = [];
152+
153+
records.value = [];
154+
images.value = [];
155+
selected.value = [];
156+
tableColumns.value = [];
157+
tableColumnsIndexes.value = [];
158+
isError.value = false;
159+
isCriticalError.value = false;
160+
isImageGenerationError.value = false;
161+
errorMessage.value = '';
162+
isDialogOpen.value = false;
163+
}
164+
146165
watch(selected, (val) => {
147166
//console.log('Selected changed:', val);
148167
checkedCount.value = val.filter(item => item.isChecked === true).length;
@@ -468,7 +487,7 @@ async function runAiAction({
468487
//polling jobs
469488
let isInProgress = true;
470489
//if no jobs were created, skip polling
471-
while (isInProgress) {
490+
while (isInProgress && isDialogOpen.value) {
472491
//check if at least one job is still in progress
473492
let isAtLeastOneInProgress = false;
474493
//checking status of each job

index.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -642,25 +642,25 @@ export default class BulkAiFlowPlugin extends AdminForthPlugin {
642642

643643
switch(actionType) {
644644
case 'generate_images':
645-
setTimeout(async () => await this.initialImageGenerate(jobId, recordId, adminUser, headers), 100);
645+
this.initialImageGenerate(jobId, recordId, adminUser, headers);
646646
break;
647647
case 'analyze_no_images':
648-
setTimeout(async () => await this.analyzeNoImages(jobId, recordId, adminUser, headers), 100);
648+
this.analyzeNoImages(jobId, recordId, adminUser, headers);
649649
break;
650650
case 'analyze':
651-
setTimeout(async () => await this.analyze_image(jobId, recordId, adminUser, headers), 100);
651+
this.analyze_image(jobId, recordId, adminUser, headers);
652652
break;
653653
case 'regenerate_images':
654654
if (!body.prompt || !body.fieldName) {
655655
jobs.set(jobId, { status: "failed", error: "Missing prompt or field name" });
656656
break;
657657
}
658-
setTimeout(async () => await this.regenerateImage(jobId, recordId, body.fieldName, body.prompt, adminUser, headers), 100);
658+
this.regenerateImage(jobId, recordId, body.fieldName, body.prompt, adminUser, headers);
659659
break;
660660
default:
661661
jobs.set(jobId, { status: "failed", error: "Unknown action type" });
662662
}
663-
setTimeout(() => jobs.delete(jobId), 300_000);
663+
setTimeout(() => jobs.delete(jobId), 1_800_000);
664664
return { ok: true, jobId };
665665
}
666666
});

0 commit comments

Comments
 (0)