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