From b9cf984405627823778aa58ecf6cc64275ab0080 Mon Sep 17 00:00:00 2001 From: Mark Williams Date: Fri, 6 Feb 2026 13:34:15 +0000 Subject: [PATCH] LIMS-2059: Reenable reprocess button after any parameter change --- .../modules/dc/views/downstreamreprocess.js | 19 +++++++++++--- client/src/js/modules/dc/views/reprocess.js | 21 +++++++++++++--- .../js/modules/mc/views/datacollections.js | 25 +++++++++++++++---- 3 files changed, 54 insertions(+), 11 deletions(-) diff --git a/client/src/js/modules/dc/views/downstreamreprocess.js b/client/src/js/modules/dc/views/downstreamreprocess.js index b9b58e603..cec8cb339 100644 --- a/client/src/js/modules/dc/views/downstreamreprocess.js +++ b/client/src/js/modules/dc/views/downstreamreprocess.js @@ -74,6 +74,7 @@ define(['backbone', 'marionette', 'views/dialog', ui: { pipeline: 'select[name=pipeline]', warning: '#warning', + fields: 'input, select', }, buttons: { @@ -87,6 +88,8 @@ define(['backbone', 'marionette', 'views/dialog', events: { 'change @ui.pipeline': 'updatePipeline', + 'input @ui.fields': 'onFieldChanged', + 'change @ui.fields': 'onFieldChanged', }, templateHelpers: function() { @@ -144,14 +147,24 @@ define(['backbone', 'marionette', 'views/dialog', }, + onFieldChanged: function() { + this._enableIntegrateButton(); + }, + _disableIntegrateButton: function() { var btn = $('.ui-dialog-buttonpane button:contains("Submit")') - btn.button('disable').button('option', 'label', 'Submitted!') - setTimeout(function() { - btn.button('enable').button('option', 'label', 'Submit') + btn.addClass('submitted').button('disable').button('option', 'label', 'Submitted!') + this.resetTimeout = setTimeout(() => { + this._enableIntegrateButton() }, 5000) }, + _enableIntegrateButton: function() { + var btn = $('.ui-dialog-buttonpane button.submitted') + btn.removeClass('submitted').button('enable').button('option', 'label', 'Submit') + clearTimeout(this.resetTimeout); + }, + _enqueue: function(options) { Backbone.ajax({ url: app.apiurl+'/process/enqueue/downstream', diff --git a/client/src/js/modules/dc/views/reprocess.js b/client/src/js/modules/dc/views/reprocess.js index 8ed8b3f5d..74e507c91 100644 --- a/client/src/js/modules/dc/views/reprocess.js +++ b/client/src/js/modules/dc/views/reprocess.js @@ -267,6 +267,7 @@ define(['backbone', 'marionette', 'views/dialog', al: 'input[name=alpha]', be: 'input[name=beta]', ga: 'input[name=gamma]', + fields: 'input, select', }, buttons: { @@ -281,6 +282,8 @@ define(['backbone', 'marionette', 'views/dialog', 'change @ui.pipeline': 'updatePipeline', 'change @ui.indexingMethod': 'updateIndexingMethod', 'click a.multicrystal': 'closeDialog', + 'input @ui.fields': 'onFieldChanged', + 'change @ui.fields': 'onFieldChanged', }, templateHelpers: function() { @@ -556,15 +559,27 @@ define(['backbone', 'marionette', 'views/dialog', }, + onFieldChanged: function() { + this._enableIntegrateButton(); + }, + + _disableIntegrateButton: function() { var btn = $('.ui-dialog-buttonpane button:contains("Integrate")') - btn.button('disable').button('option', 'label', 'Submitted!') - setTimeout(function() { - btn.button('enable').button('option', 'label', 'Integrate') + btn.addClass('submitted').button('disable').button('option', 'label', 'Submitted!') + this.resetTimeout = setTimeout(() => { + this._enableIntegrateButton() }, 5000) }, + _enableIntegrateButton: function() { + var btn = $('.ui-dialog-buttonpane button.submitted') + btn.removeClass('submitted').button('enable').button('option', 'label', 'Integrate') + clearTimeout(this.resetTimeout); + }, + + _enqueue: function(options) { Backbone.ajax({ url: app.apiurl+'/process/enqueue', diff --git a/client/src/js/modules/mc/views/datacollections.js b/client/src/js/modules/mc/views/datacollections.js index 5ca413450..729146f4a 100644 --- a/client/src/js/modules/mc/views/datacollections.js +++ b/client/src/js/modules/mc/views/datacollections.js @@ -62,6 +62,8 @@ define(['backbone', 'marionette', 'click .integrate': 'integrate', 'click button.opt': 'toggleOpts', 'change @ui.pipeline': 'updatePipeline', + 'input @ui.fields': 'onFieldChanged', + 'change @ui.fields': 'onFieldChanged', }, ui: { @@ -73,6 +75,8 @@ define(['backbone', 'marionette', opts: 'div.options', sm: 'input[name=sm]', sg: 'select[name=sg]', + integrateBtn: 'button.integrate', + fields: 'input, select', }, templateHelpers: function() { @@ -211,16 +215,26 @@ define(['backbone', 'marionette', }, + onFieldChanged: function() { + this._enableIntegrateButton(); + }, + + _disableIntegrateButton: function() { - var btn = $('button.integrate') - var btnHtml = btn.html() - btn.prop('disabled', true).html(' Submitted!'); - setTimeout(function() { - btn.prop('disabled', false).html(btnHtml); + this.btnHtml = this.ui.integrateBtn.html() + this.ui.integrateBtn.prop('disabled', true).html(' Submitted!'); + this.resetTimeout = setTimeout(() => { + this._enableIntegrateButton() }, 5000) }, + _enableIntegrateButton: function() { + this.ui.integrateBtn.prop('disabled', false).html(this.btnHtml); + clearTimeout(this.resetTimeout); + }, + + _enqueue: function(options) { Backbone.ajax({ url: app.apiurl+'/process/enqueue', @@ -252,6 +266,7 @@ define(['backbone', 'marionette', }, onRender: function() { + this.btnHtml = this.ui.integrateBtn.html() this.pages.show(this.paginator) this.srch.show(this.search) this.ui.opts.hide()