Pablo Grass (WMDE) has uploaded a new change for review. ( 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(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/AdvancedSearch refs/changes/10/367410/1 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: newchange Gerrit-Change-Id: I84a08e52ffdb9345e216061d391db3e4bebadd61 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/AdvancedSearch Gerrit-Branch: master Gerrit-Owner: Pablo Grass (WMDE) <pablo.gr...@wikimedia.de> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits