From 5bacd600b3b606da8952eaf7ccc9712666e3b77f Mon Sep 17 00:00:00 2001 From: juanf <juanf> Date: Mon, 4 Sep 2017 13:26:12 +0000 Subject: [PATCH] SSDM-5537 : Bugfix race condition loading parents table in ELN object forms on view mode with parents of different types SVN: 38699 --- .../SampleForm/widgets/LinksController.js | 33 ++++++++++++------- .../js/views/SampleForm/widgets/LinksView.js | 18 ++++------ 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/widgets/LinksController.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/widgets/LinksController.js index af030241056..8fe34fa03b3 100644 --- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/widgets/LinksController.js +++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/widgets/LinksController.js @@ -135,22 +135,31 @@ function LinksController(title, sampleTypeHints, isDisabled, samplesToEdit, show this.addSamplesOnInit = function(samples) { Util.blockUI(); - var samplesByType = {}; - if(samples && samples.length > 0) { - for(var sIdx = 0; sIdx < samples.length; sIdx++) { - var sampleTypeCode = samples[sIdx].sampleTypeCode; - var samplesOfType = samplesByType[sampleTypeCode]; - if(!samplesOfType) { - samplesOfType = []; - samplesByType[sampleTypeCode] = samplesOfType; + + if(!linksModel.isDisabled) { + var samplesByType = {}; + if(samples && samples.length > 0) { + for(var sIdx = 0; sIdx < samples.length; sIdx++) { + var sampleTypeCode = samples[sIdx].sampleTypeCode; + var samplesOfType = samplesByType[sampleTypeCode]; + if(!samplesOfType) { + samplesOfType = []; + samplesByType[sampleTypeCode] = samplesOfType; + } + samplesOfType.push(samples[sIdx]); } - samplesOfType.push(samples[sIdx]); } + + for(var type in samplesByType) { + linksView.updateSample(samplesByType[type], true, true); + } + } else { + // Only add once on view mode, there can be a race condition happening on this case + // Each time we add, the fuelux repeater html needs to load if is not cached by the browser, typically done the first time you use it during the day, but can vary due to caching policies. + // If the last load, don't finish last, all samples will not be displayed, this can only happen on view mode since all sample types share the same container and this corner case don't requires to load by type anyway. + linksView.updateSample(samples, true, true); } - for(var type in samplesByType) { - linksView.updateSample(samplesByType[type], true, true); - } Util.unblockUI(); } diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/widgets/LinksView.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/widgets/LinksView.js index 5bf958ea496..c328e24d250 100644 --- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/widgets/LinksView.js +++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/widgets/LinksView.js @@ -67,17 +67,15 @@ function LinksView(linksController, linksModel) { } this.updateSample = function(sample, isAdd, isInit) { - var sampleTypeCode = null; - - if(isInit) { - sampleTypeCode = sample[0].sampleTypeCode; - } else { - sampleTypeCode = sample.sampleTypeCode; - } - - var containerCode = null; + if(!linksModel.isDisabled) { + var sampleTypeCode = null; + if(isInit) { + sampleTypeCode = sample[0].sampleTypeCode; + } else { + sampleTypeCode = sample.sampleTypeCode; + } containerCode = sampleTypeCode; } @@ -104,8 +102,6 @@ function LinksView(linksController, linksModel) { } } - - if(isAdd && !isInit) { linksModel.samplesAdded.push(sample.identifier); } -- GitLab