Web app: add job deletion button to job action bar

WARNING: There is no confirmation popup yet, it'll immediately schedule
the job for deletion.
This commit is contained in:
Sybren A. Stüvel 2023-01-08 13:53:55 +01:00
parent a97a4e6e67
commit 3a16456d5b
2 changed files with 20 additions and 3 deletions

View File

@ -2,7 +2,7 @@
<div class="btn-bar jobs"> <div class="btn-bar jobs">
<button class="btn cancel" :disabled="!jobs.canCancel" v-on:click="onButtonCancel">Cancel Job</button> <button class="btn cancel" :disabled="!jobs.canCancel" v-on:click="onButtonCancel">Cancel Job</button>
<button class="btn requeue" :disabled="!jobs.canRequeue" v-on:click="onButtonRequeue">Requeue</button> <button class="btn requeue" :disabled="!jobs.canRequeue" v-on:click="onButtonRequeue">Requeue</button>
<!-- <button class="action delete dangerous" :disabled="!jobs.canDelete" v-on:click="onButtonDelete">Delete</button> --> <button class="action delete dangerous" :disabled="!jobs.canDelete" v-on:click="onButtonDelete">Delete</button>
</div> </div>
</template> </template>
@ -20,8 +20,14 @@ export default {
}, },
methods: { methods: {
onButtonDelete() { onButtonDelete() {
return this._handleJobActionPromise( return this.jobs.deleteJobs()
this.jobs.deleteJobs(), "marked for deletion"); .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() { onButtonCancel() {
return this._handleJobActionPromise( return this._handleJobActionPromise(
@ -53,4 +59,5 @@ export default {
</script> </script>
<style scoped> <style scoped>
</style> </style>

View File

@ -74,6 +74,16 @@ export const useJobs = defineStore('jobs', {
*/ */
cancelJobs() { return this._setJobStatus("cancel-requested"); }, cancelJobs() { return this._setJobStatus("cancel-requested"); },
requeueJobs() { return this._setJobStatus("requeueing"); }, 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. // Internal methods.