jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/367410 )
Change subject: FormState: Add dedicated view class and initialize ...................................................................... FormState: Add dedicated view class and initialize Add class that encapsulates the form field containing the advanced search form state and the synchronization of data between JavaScript and DOM for it. Bug: T171036 Change-Id: I84a08e52ffdb9345e216061d391db3e4bebadd61 --- M extension.json M modules/ext.advancedSearch.init.js A modules/ui/ext.advancedSearch.FormState.js 3 files changed, 48 insertions(+), 17 deletions(-) Approvals: Gabriel Birke: Looks good to me, approved jenkins-bot: Verified diff --git a/extension.json b/extension.json index 63c8fc5..2697ac0 100644 --- a/extension.json +++ b/extension.json @@ -83,6 +83,7 @@ "ext.advancedSearch.dm.SearchModel", "ext.advancedSearch.ui.ArbitraryWordInput", "ext.advancedSearch.ui.FileTypeSelection", + "ext.advancedSearch.ui.FormState", "ext.advancedSearch.ui.ExpandablePane", "ext.advancedSearch.ui.ImageDimensionInput", "ext.advancedSearch.ui.MenuedInput", @@ -102,6 +103,14 @@ "oojs-ui" ] }, + "ext.advancedSearch.ui.FormState": { + "scripts": [ + "modules/ui/ext.advancedSearch.FormState.js" + ], + "dependencies": [ + "oojs-ui" + ] + }, "ext.advancedSearch.ui.FileTypeSelection": { "scripts": [ "modules/ui/ext.advancedSearch.FileTypeSelection.js" diff --git a/modules/ext.advancedSearch.init.js b/modules/ext.advancedSearch.init.js index f115cb2..21a8966 100644 --- a/modules/ext.advancedSearch.init.js +++ b/modules/ext.advancedSearch.init.js @@ -18,20 +18,12 @@ return false; } - function initializeCurrentSearch( state ) { - if ( mw.libs.advancedSearch.initializedFromUrl ) { - return; - } - state.setAllFromJSON( mw.util.getParamValue( 'advancedSearch-current' ) || '' ); - mw.libs.advancedSearch.initializedFromUrl = true; - } - if ( isLoaded() ) { return; } var state = new mw.libs.advancedSearch.dm.SearchModel(); - initializeCurrentSearch( state ); + state.setAllFromJSON( mw.util.getParamValue( 'advancedSearch-current' ) || '' ); // TODO initialize with API call instead var templateModel = new mw.libs.advancedSearch.dm.MenuDataModel( { @@ -489,16 +481,11 @@ .after( $compiledSearchField ); } ); - // TODO Move this element into an OOUI component with the state as constructor param - var $currentSearch = $( '<input>' ).prop( { - name: 'advancedSearch-current', - type: 'hidden' + var currentSearch = new mw.libs.advancedSearch.ui.FormState( state, { + name: 'advancedSearch-current' } ); - state.on( 'update', function () { - $currentSearch.val( state.toJSON() ); - } ); - $search.append( $currentSearch ); + $search.append( currentSearch.$element ); var namespaceSelection = new mw.libs.advancedSearch.ui.NamespaceFilters( state, { namespaces: prepareNamespaces() diff --git a/modules/ui/ext.advancedSearch.FormState.js b/modules/ui/ext.advancedSearch.FormState.js new file mode 100644 index 0000000..742b220 --- /dev/null +++ b/modules/ui/ext.advancedSearch.FormState.js @@ -0,0 +1,35 @@ +( function ( mw ) { + 'use strict'; + + mw.libs = mw.libs || {}; + mw.libs.advancedSearch = mw.libs.advancedSearch || {}; + mw.libs.advancedSearch.ui = mw.libs.advancedSearch.ui || {}; + + /** + * @class + * @extends {OO.ui.HiddenInputWidget} + * @constructor + * + * @param {ext.advancedSearch.dm.SearchModel} store + * @param {Object} config + */ + mw.libs.advancedSearch.ui.FormState = function ( store, config ) { + this.store = store; + mw.libs.advancedSearch.ui.FormState.parent.call( this, config ); + + this.store.connect( this, { update: 'onStoreUpdate' } ); + + this.populateFromStore(); + }; + + OO.inheritClass( mw.libs.advancedSearch.ui.FormState, OO.ui.HiddenInputWidget ); + + mw.libs.advancedSearch.ui.FormState.prototype.onStoreUpdate = function () { + this.populateFromStore(); + }; + + mw.libs.advancedSearch.ui.FormState.prototype.populateFromStore = function () { + this.$element.val( this.store.toJSON() ); + }; + +}( mediaWiki ) ); -- To view, visit https://gerrit.wikimedia.org/r/367410 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I84a08e52ffdb9345e216061d391db3e4bebadd61 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/AdvancedSearch Gerrit-Branch: master Gerrit-Owner: Pablo Grass (WMDE) <pablo.gr...@wikimedia.de> Gerrit-Reviewer: Addshore <addshorew...@gmail.com> Gerrit-Reviewer: Andrew-WMDE <andrew.kos...@wikimedia.de> Gerrit-Reviewer: Gabriel Birke <gabriel.bi...@wikimedia.de> Gerrit-Reviewer: Tobias Gritschacher <tobias.gritschac...@wikimedia.de> Gerrit-Reviewer: WMDE-Fisch <christoph.jau...@wikimedia.de> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits