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

Reply via email to