diff --git a/web/app/src/components/jobs/JobActionsBar.vue b/web/app/src/components/jobs/JobActionsBar.vue index e2f03b34..b13952f4 100644 --- a/web/app/src/components/jobs/JobActionsBar.vue +++ b/web/app/src/components/jobs/JobActionsBar.vue @@ -2,7 +2,7 @@
@@ -20,8 +20,14 @@ export default { }, methods: { onButtonDelete() { - return this._handleJobActionPromise( - this.jobs.deleteJobs(), "marked for deletion"); + return this.jobs.deleteJobs() + .then(() => { + this.notifs.add("job marked for deletion"); + }) + .catch((error) => { + const errorMsg = JSON.stringify(error); // TODO: handle API errors better. + this.notifs.add(`Error: ${errorMsg}`); + }) }, onButtonCancel() { return this._handleJobActionPromise( @@ -53,4 +59,5 @@ export default { diff --git a/web/app/src/stores/jobs.js b/web/app/src/stores/jobs.js index c6854852..671e7a62 100644 --- a/web/app/src/stores/jobs.js +++ b/web/app/src/stores/jobs.js @@ -74,6 +74,16 @@ export const useJobs = defineStore('jobs', { */ cancelJobs() { return this._setJobStatus("cancel-requested"); }, requeueJobs() { return this._setJobStatus("requeueing"); }, + deleteJobs() { + if (!this.activeJobID) { + console.warn(`deleteJobs() impossible, no active job ID`); + return new Promise((resolve, reject) => { + reject("No job selected, unable to delete"); + }); + } + + return jobsAPI.deleteJob(this.activeJobID); + }, // Internal methods.