@@ -5,15 +5,19 @@ if (!LABKEY.targetedms) {
55if ( ! 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 } ) ;
0 commit comments