Catrope has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/379431 )

Change subject: Lazy creation for heavy menu
......................................................................

Lazy creation for heavy menu

Assumptions:
* Generally if we have a model we don't need UI
* UI can be created lazy if it is not shown to user

Bug: T176250
Change-Id: Iba7f889d8610de2eb3056248cd1c664b0cd90940
(cherry picked from commit 7a28c62e99a9b935cf8c3c94d367b1b5d8d56223)
---
M resources/src/mediawiki.rcfilters/mw.rcfilters.init.js
M resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.MenuSelectWidget.js
2 files changed, 30 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/31/379431/1

diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js 
b/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js
index 20c1463..5ab32ea 100644
--- a/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js
+++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js
@@ -96,7 +96,12 @@
                }
        };
 
-       $( rcfilters.init );
+       // Early execute of init
+       if ( document.readyState === 'interactive' || document.readyState === 
'complete' ) {
+               rcfilters.init();
+       } else {
+               $( rcfilters.init );
+       }
 
        module.exports = rcfilters;
 
diff --git 
a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.MenuSelectWidget.js 
b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.MenuSelectWidget.js
index 07d4506..5ba42e7 100644
--- a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.MenuSelectWidget.js
+++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.MenuSelectWidget.js
@@ -32,6 +32,7 @@
                this.views = {};
                this.userSelecting = false;
 
+               this.menuInitialized = false;
                this.inputValue = '';
                this.$overlay = config.$overlay || this.$element;
                this.$body = $( '<div>' ).addClass( 
'mw-rcfilters-ui-menuSelectWidget-body' );
@@ -129,13 +130,26 @@
        };
 
        /**
-        * Respond to model initialize event. Populate the menu from the model
+        * @inheritdoc
         */
-       mw.rcfilters.ui.MenuSelectWidget.prototype.onModelInitialize = function 
() {
+       mw.rcfilters.ui.MenuSelectWidget.prototype.toggle = function ( show ) {
+               this.lazyMenuCreation();
+               mw.rcfilters.ui.MenuSelectWidget.parent.prototype.toggle.call( 
this, show );
+       };
+
+       /**
+        * lazy creation of the menu
+        */
+       mw.rcfilters.ui.MenuSelectWidget.prototype.lazyMenuCreation = function 
() {
                var widget = this,
                        viewGroupCount = {},
                        groups = this.model.getFilterGroups();
 
+               if ( this.menuInitialized ) {
+                       return;
+               }
+
+               this.menuInitialized = true;
                // Reset
                this.clearItems();
 
@@ -188,6 +202,13 @@
                } );
 
                this.switchView( this.model.getCurrentView() );
+       };
+
+       /**
+        * Respond to model initialize event. Populate the menu from the model
+        */
+       mw.rcfilters.ui.MenuSelectWidget.prototype.onModelInitialize = function 
() {
+               this.menuInitialized = false;
        };
 
        /**
@@ -285,6 +306,7 @@
         * @return {mw.rcfilters.ui.ItemMenuOptionWidget} Option widget
         */
        mw.rcfilters.ui.MenuSelectWidget.prototype.getItemFromModel = function 
( model ) {
+               this.lazyMenuCreation();
                return this.views[ model.getGroupModel().getView() ].filter( 
function ( item ) {
                        return item.getName() === model.getName();
                } )[ 0 ];

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iba7f889d8610de2eb3056248cd1c664b0cd90940
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: wmf/1.30.0-wmf.19
Gerrit-Owner: Catrope <r...@wikimedia.org>
Gerrit-Reviewer: Eranroz <eranro...@gmail.com>

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

Reply via email to