Ssmith has submitted this change and it was merged.

Change subject: Fix widget loader tracking on board switch
......................................................................


Fix widget loader tracking on board switch

Regenerate list of tracking observables whenever displayedBoard
changes.  TODO: turn displayedBoard.widgets into an observable array
and track changes that way.

Change-Id: I838ddff5dd48ebc3be1f8d7cb12704e7fa792a5d
---
M src/components/boards/generic-board/generic-board.js
1 file changed, 23 insertions(+), 10 deletions(-)

Approvals:
  Ssmith: Looks good to me, approved



diff --git a/src/components/boards/generic-board/generic-board.js 
b/src/components/boards/generic-board/generic-board.js
index 5d28730..282a82d 100644
--- a/src/components/boards/generic-board/generic-board.js
+++ b/src/components/boards/generic-board/generic-board.js
@@ -14,25 +14,38 @@
         self.sharedContext = {};
 
         self.displayedBoard = params.displayedBoard;
-        self.widgetLoads = [];
-        $.each( self.displayedBoard().widgets, function( i, widget ) {
-            widget.dataLoading = ko.observable( false );
-            self.widgetLoads.push( widget.dataLoading );
-        } );
+        self.widgetLoads = ko.observableArray([]);
+               function setWidgetLoads() {
+                       self.widgetLoads.removeAll();
+                       $.each( self.displayedBoard().widgets, function( i, 
widget ) {
+                               widget.dataLoading = ko.observable( false );
+                               self.widgetLoads.push( widget.dataLoading );
+                       } );
+               }
+               setWidgetLoads();
+               self.displayedBoard.subscribe( setWidgetLoads );
 
         //This will return true if any child widget is loading
         self.dataLoading = ko.computed( function() {
-            var i, widgetCount = self.widgetLoads.length;
+            var i,
+                               loads = self.widgetLoads(),
+                               widgetCount = loads.length;
+
             for ( i = 0; i < widgetCount; i++ ) {
-                if ( self.widgetLoads[i]() === true ) {
-                    $('#loadingModal').modal('show'); //todo: knockout-style!
+                if ( loads[i]() === true ) {
                     return true;
                 }
             }
-            $('#loadingModal').modal('hide'); //todo: knockout-style!
             return false;
-        } );
+        } ).extend( { throttle: 10 } ); // don't flip too often
 
+        self.dataLoading.subscribe( function( value ) {
+            if ( value ) {
+                $('#loadingModal').modal('show'); //todo: knockout-style!
+            } else {
+                $('#loadingModal').modal('hide'); //todo: knockout-style!
+            }
+        } );
         // Get the date
         self.displayDate = ko.observable( moment().format( timeFormat ) );
 

-- 
To view, visit https://gerrit.wikimedia.org/r/198265
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I838ddff5dd48ebc3be1f8d7cb12704e7fa792a5d
Gerrit-PatchSet: 2
Gerrit-Project: wikimedia/fundraising/dash
Gerrit-Branch: master
Gerrit-Owner: Ejegg <eeggles...@wikimedia.org>
Gerrit-Reviewer: Ssmith <ssm...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to