Skip to content

Commit a565211

Browse files
ndg63276Mark Williams
andauthored
LIMS-1854: Prevent submission of multiple reprocessing jobs (#1009)
Co-authored-by: Mark Williams <[email protected]>
1 parent 5f882f9 commit a565211

File tree

6 files changed

+45
-15
lines changed

6 files changed

+45
-15
lines changed

api/src/Page/Process.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ function _enqueue()
383383
);
384384
$this->_send_zocalo_message($rabbitmq_zocalo_vhost, $message);
385385

386-
$this->_output(new \stdClass);
386+
$this->_output('Job successfully submitted');
387387
}
388388

389389
function _enqueue_downstream()
@@ -413,7 +413,7 @@ function _enqueue_downstream()
413413

414414
$this->_submit_zocalo_recipe($this->arg('RECIPE'), $parameters);
415415

416-
$this->_output(new \stdClass);
416+
$this->_output('Job successfully submitted');
417417
}
418418

419419
/*

client/src/js/modules/dc/views/downstreamreprocess.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,12 +138,19 @@ define(['backbone', 'marionette', 'views/dialog',
138138

139139
submit: function(e) {
140140
e.preventDefault()
141-
141+
this._disableIntegrateButton()
142142
this._enqueue({ RECIPE: this.model.get('PIPELINE'), DATACOLLECTIONID: this.model.get('ID'), SCALINGID: this.scalingid })
143143
app.message({ message: 'Downstream processing job successfully submitted'})
144144

145145
},
146146

147+
_disableIntegrateButton: function() {
148+
var btn = $('.ui-dialog-buttonpane button:contains("Submit")')
149+
btn.button('disable').button('option', 'label', 'Submitted!')
150+
setTimeout(function() {
151+
btn.button('enable').button('option', 'label', 'Submit')
152+
}, 5000)
153+
},
147154

148155
_enqueue: function(options) {
149156
Backbone.ajax({

client/src/js/modules/dc/views/reprocess.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,7 @@ define(['backbone', 'marionette', 'views/dialog',
352352

353353
integrate: function(e) {
354354
e.preventDefault()
355+
this._disableIntegrateButton()
355356
var s = this.collection.where({ selected: true })
356357

357358
if (!s.length) {
@@ -449,10 +450,10 @@ define(['backbone', 'marionette', 'views/dialog',
449450
}, this)
450451

451452
$.when.apply($, reqs).done(function() {
452-
app.message({ message: jobs+' reprocessing job(s) successfully submitted'})
453453
_.each(rps, function(rp) {
454454
self._enqueue({ PROCESSINGJOBID: rp.get('PROCESSINGJOBID') })
455455
})
456+
app.message({ message: jobs+' reprocessing job(s) successfully submitted'})
456457
})
457458

458459

@@ -541,9 +542,9 @@ define(['backbone', 'marionette', 'views/dialog',
541542
reqs.push(reprocessingsweeps.save())
542543

543544
$.when.apply($, reqs).done(function() {
544-
app.message({ message: '1 reprocessing job successfully submitted'})
545545
self._enqueue({ PROCESSINGJOBID: reprocessing.get('PROCESSINGJOBID') })
546546
})
547+
app.message({ message: '1 reprocessing job successfully submitted'})
547548
},
548549

549550
error: function() {
@@ -555,6 +556,15 @@ define(['backbone', 'marionette', 'views/dialog',
555556
},
556557

557558

559+
_disableIntegrateButton: function() {
560+
var btn = $('.ui-dialog-buttonpane button:contains("Integrate")')
561+
btn.button('disable').button('option', 'label', 'Submitted!')
562+
setTimeout(function() {
563+
btn.button('enable').button('option', 'label', 'Integrate')
564+
}, 5000)
565+
},
566+
567+
558568
_enqueue: function(options) {
559569
Backbone.ajax({
560570
url: app.apiurl+'/process/enqueue',

client/src/js/modules/mc/views/datacollections.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ define(['backbone', 'marionette',
6060

6161
events: {
6262
'click .integrate': 'integrate',
63-
'click a.opt': 'toggleOpts',
63+
'click button.opt': 'toggleOpts',
6464
'change @ui.pipeline': 'updatePipeline',
6565
},
6666

@@ -106,11 +106,12 @@ define(['backbone', 'marionette',
106106

107107
integrate: function(e) {
108108
e.preventDefault()
109+
this._disableIntegrateButton()
109110

110111
var s = this.collection.where({ selected: true })
111112

112113
if (!s.length) {
113-
utils.confirm({ title: 'No data collections selected', content: 'Please selected some data sets to integrate' })
114+
utils.confirm({ title: 'No data collections selected', content: 'Please select some data sets to integrate', buttons: {'Ok': 'closeDialog'}})
114115
return
115116
}
116117

@@ -198,8 +199,8 @@ define(['backbone', 'marionette',
198199
var reprocessingsweeps = new ReprocessingImageSweeps(sweeps)
199200
reprocessingsweeps.save()
200201

201-
app.message({ message: '1 reprocessing job successfully submitted'})
202202
self._enqueue({ PROCESSINGJOBID: reprocessing.get('PROCESSINGJOBID') })
203+
app.message({ message: 'Reprocessing job successfully submitted'})
203204
},
204205

205206
error: function() {
@@ -210,6 +211,16 @@ define(['backbone', 'marionette',
210211
},
211212

212213

214+
_disableIntegrateButton: function() {
215+
var btn = $('button.integrate')
216+
var btnHtml = btn.html()
217+
btn.prop('disabled', true).html('<i class="fa fa-check"></i> Submitted!');
218+
setTimeout(function() {
219+
btn.prop('disabled', false).html(btnHtml);
220+
}, 5000)
221+
},
222+
223+
213224
_enqueue: function(options) {
214225
Backbone.ajax({
215226
url: app.apiurl+'/process/enqueue',

client/src/js/templates/mc/datacollections.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ <h1>Data Collections for <%-VISIT%></h1>
3232
<label>High Res <input type="text" name="res" placeholder="eg 1.5" /> &#197;</label>
3333
<label>Low Res <input type="text" name="lowres" placeholder="eg 40" /> &#197;</label>
3434

35-
<a href="#" class="button integrate" title="Integrate the selected data collections"><i class="fa fa-cog"></i> Integrate</a>
36-
<a href="#" class="button opt">Xia2 Options</a>
35+
<button class="button integrate" title="Integrate the selected data collections"><i class="fa fa-cog"></i> Integrate</button>
36+
<button class="button opt">Xia2 Options</button>
3737
</div>
3838

3939
<div class="options data_collection">

client/src/js/utils.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,10 @@ define(['backbone',
8181
},
8282

8383
events: {
84-
'click a.dismiss': 'disimss',
84+
'click a.dismiss': 'dismiss',
8585
},
8686

87-
disimss: function(e) {
87+
dismiss: function(e) {
8888
e.preventDefault()
8989
this.destroy()
9090
},
@@ -118,13 +118,15 @@ define(['backbone',
118118
var ConfirmDialog = DialogView.extend({
119119
title: options.title,
120120
template: _.template(options.content),
121-
buttons: {
121+
buttons: options.buttons || {
122122
'Ok': 'onOK',
123123
'Cancel': 'closeDialog',
124124
},
125125

126126
onOK: function() {
127-
options.callback()
127+
if (typeof options.callback === 'function') {
128+
options.callback();
129+
}
128130
this.closeDialog()
129131
},
130132
})
@@ -236,4 +238,4 @@ define(['backbone',
236238

237239
return utils
238240

239-
})
241+
})

0 commit comments

Comments
 (0)