diff --git a/centers/analytics/frontend/src/views/ParsersView.vue b/centers/analytics/frontend/src/views/ParsersView.vue index 0d2a547..acfd98f 100644 --- a/centers/analytics/frontend/src/views/ParsersView.vue +++ b/centers/analytics/frontend/src/views/ParsersView.vue @@ -22,6 +22,7 @@ const jobs = ref([]); const loading = ref(true); const error = ref(""); const submitting = ref(false); +const forcingJobId = ref(null); const editingJob = ref(null); const editForm = ref({ @@ -268,12 +269,21 @@ async function handleDelete(job: ParseJob) { } } -async function handleRetry(jobId: number) { +function canForceRun(job: ParseJob): boolean { + return job.status !== "queued" && job.status !== "running"; +} + +async function handleForceRun(jobId: number) { + forcingJobId.value = jobId; + error.value = ""; try { await retryJob(jobId); await loadJobs(); } catch (err) { - error.value = err instanceof Error ? err.message : "Не удалось перезапустить задание"; + error.value = + err instanceof Error ? err.message : "Не удалось запустить запрос постов"; + } finally { + forcingJobId.value = null; } } @@ -428,12 +438,17 @@ onUnmounted(() => {