Skip to content

Commit 2c66fab

Browse files
Fix test failures when QC Metric config doesn't load in time (#1081)
* Fix test failures when QC Metric config doesn't load in time * Make callbacks optional
1 parent 2623f4a commit 2c66fab

3 files changed

Lines changed: 23 additions & 6 deletions

File tree

webapp/TargetedMS/js/ParetoPlotPanel.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@ Ext4.define('LABKEY.targetedms.ParetoPlotPanel', {
1717

1818
Ext4.get(this.plotDivId).mask("Loading...");
1919

20-
LABKEY.targetedms.QCMetricConfigLoader.getMetrics(this.initPlot, this);
20+
LABKEY.targetedms.QCMetricConfigLoader.getMetrics(this.initPlot, this, function() {
21+
Ext4.get(this.plotDivId).unmask();
22+
Ext4.get(this.plotDivId).update('Failed to load');
23+
});
2124
},
2225

2326
initPlot : function(metrics) {

webapp/TargetedMS/js/QCMetricConfigLoader.js

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,19 @@ if (!LABKEY.targetedms) {
55
if (!LABKEY.targetedms.QCMetricConfigLoader) {
66
LABKEY.targetedms.QCMetricConfigLoader = {
77
initialQcMetrics: null,
8+
failureResponse: null,
89
initialQcMetricsCallbacks: [],
910
initialQcMetricsRequested: false,
1011

11-
getMetrics : function(successCallback, callbackScope) {
12+
getMetrics : function(successCallback, callbackScope, failureCallback) {
1213
if (this.initialQcMetrics) {
1314
successCallback.call(callbackScope, this.initialQcMetrics);
1415
}
16+
else if (this.failureResponse) {
17+
failureCallback.call(callbackScope, this.failureResponse);
18+
}
1519
else {
16-
this.initialQcMetricsCallbacks.push({callback: successCallback, scope: callbackScope});
20+
this.initialQcMetricsCallbacks.push({callback: successCallback, scope: callbackScope, failure: failureCallback});
1721

1822
if (!this.initialQcMetricsRequested) {
1923
this.initialQcMetricsRequested = true;
@@ -24,12 +28,20 @@ if (!LABKEY.targetedms.QCMetricConfigLoader) {
2428
const configs = Ext4.JSON.decode(response.responseText).configurations;
2529
this.initialQcMetrics = configs;
2630
for (const c of this.initialQcMetricsCallbacks) {
27-
c.callback.call(c.scope, this.initialQcMetrics);
31+
if (c.callback) {
32+
c.callback.call(c.scope, this.initialQcMetrics);
33+
}
2834
}
2935
this.initialQcMetricsCallbacks = [];
3036
},
3137
failure: LABKEY.Utils.getCallbackWrapper(function (response) {
32-
this.failureHandler(response);
38+
this.failureResponse = response;
39+
for (const c of this.initialQcMetricsCallbacks) {
40+
if (c.failure) {
41+
c.failure.call(c.scope, response);
42+
}
43+
}
44+
this.initialQcMetricsCallbacks = [];
3345
}, null, true),
3446
scope: this
3547
});

webapp/TargetedMS/js/QCTrendPlotPanel.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,9 @@ Ext4.define('LABKEY.targetedms.QCTrendPlotPanel', {
9494
else {
9595
Ext4.get(this.plotDivId).update("Loading...");
9696
// Load replicate annotations in the callback.
97-
LABKEY.targetedms.QCMetricConfigLoader.getMetrics(this.queryContainerReplicateAnnotations, this);
97+
LABKEY.targetedms.QCMetricConfigLoader.getMetrics(this.queryContainerReplicateAnnotations, this, function() {
98+
Ext4.get(this.plotDivId).update('Failed to load');
99+
});
98100
}
99101
},
100102

0 commit comments

Comments
 (0)