diff --git a/src/common/compute/backends/gme/ExecutorHelper.js b/src/common/compute/backends/gme/ExecutorHelper.js index 4404130c3..29e865be5 100644 --- a/src/common/compute/backends/gme/ExecutorHelper.js +++ b/src/common/compute/backends/gme/ExecutorHelper.js @@ -50,5 +50,24 @@ define([ return this.get(JOBS_ENDPOINT, webgmeToken); }; + ExecutorHelper.cancelJob = function(jobId, token) { + const endpoint = `/rest/executor/cancel/${jobId}`; + + const deferred = Q.defer(); + const url = this.url(endpoint); + const req = superagent.post(url); + if (token) { + req.set('Authorization', 'Bearer ' + token); + } + req.end(err => { + if (err) { + return deferred.reject(err); + } + deferred.resolve(); + }); + + return deferred.promise; + }; + return ExecutorHelper; }); diff --git a/src/common/compute/backends/gme/dashboard/WorkerJobItem.html b/src/common/compute/backends/gme/dashboard/WorkerJobItem.html index 3fa3b920a..c3370a3e7 100644 --- a/src/common/compute/backends/gme/dashboard/WorkerJobItem.html +++ b/src/common/compute/backends/gme/dashboard/WorkerJobItem.html @@ -4,4 +4,5 @@ unknown unknown unknown + diff --git a/src/common/compute/backends/gme/dashboard/index.js b/src/common/compute/backends/gme/dashboard/index.js index cc482082e..f9d36bc75 100644 --- a/src/common/compute/backends/gme/dashboard/index.js +++ b/src/common/compute/backends/gme/dashboard/index.js @@ -191,11 +191,11 @@ define([ }; WorkerDialog.prototype.updateJobItem = function(jobId) { - var job = this.jobs[jobId] || $(WorkerJobItem), + const job = this.jobs[jobId] || $(WorkerJobItem), info = this.jobsDict[jobId], createdTime = new Date(info.createTime).getTime(), - clazz = utils.ClassForJobStatus[info.status.toLowerCase()], - status = info.status; + clazz = utils.ClassForJobStatus[info.status.toLowerCase()]; + let status = info.status; job[0].className = `job-tag ${clazz}`; @@ -207,6 +207,11 @@ define([ job.find('.status').text(status); if (!this.jobs[jobId]) { + job.find('.cancel').on('click', async event => { + event.stopPropagation(); + event.preventDefault(); + await ExecutorHelper.cancelJob(jobId); + }); job.find('.job-id').text('Loading'); job.find('.createdAt').text(utils.getDisplayTime(createdTime)); this.updateJobItemName(jobId);