jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/378755 )

Change subject: RCFilters: Actually check whether defaults are empty and update 
state
......................................................................


RCFilters: Actually check whether defaults are empty and update state

Defaults come from either the backend or the saved queries, and that can
also change during the session. Allow the system to update itself properly
over whether defaults are empty at any given state, and hide/show the
proper button at the correct state.

Bug: T172387
Change-Id: I173c72a391886b41e899ac64621b504c5eb55b0c
---
M resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js
M resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js
M resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
M 
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js
M tests/qunit/suites/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js
5 files changed, 28 insertions(+), 47 deletions(-)

Approvals:
  Sbisson: Looks good to me, approved
  jenkins-bot: Verified



diff --git 
a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js 
b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js
index 1f9fd39..3b882a6 100644
--- a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js
+++ b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js
@@ -775,26 +775,6 @@
        };
 
        /**
-        * Check whether the default values of the filters are all false.
-        *
-        * @return {boolean} Default filters are all false
-        */
-       mw.rcfilters.dm.FiltersViewModel.prototype.areDefaultFiltersEmpty = 
function () {
-               var defaultFilters;
-
-               if ( this.defaultFiltersEmpty === null ) {
-                       // We only need to do this test once,
-                       // because defaults are set once per session
-                       defaultFilters = this.getFiltersFromParameters( 
this.getDefaultParams() );
-                       this.defaultFiltersEmpty = $.isEmptyObject( 
defaultFilters ) || Object.keys( defaultFilters ).every( function ( filterName 
) {
-                               return !defaultFilters[ filterName ];
-                       } );
-               }
-
-               return this.defaultFiltersEmpty;
-       };
-
-       /**
         * Get the item that matches the given name
         *
         * @param {string} name Filter name
diff --git 
a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js 
b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js
index d87ef734..f878941 100644
--- a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js
+++ b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js
@@ -45,6 +45,13 @@
         * An item has changed
         */
 
+       /**
+        * @event default
+        * @param {string} New default ID
+        *
+        * The default has changed
+        */
+
        /* Methods */
 
        /**
@@ -259,6 +266,8 @@
                        this.getItems().forEach( function ( item ) {
                                item.toggleDefault( item.getID() === itemID );
                        } );
+
+                       this.emit( 'default', itemID );
                }
        };
 
diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js 
b/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
index b07df57..507c979 100644
--- a/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
+++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
@@ -367,6 +367,22 @@
        };
 
        /**
+        * Check whether the default values of the filters are all false.
+        *
+        * @return {boolean} Defaults are all false
+        */
+       mw.rcfilters.Controller.prototype.areDefaultsEmpty = function () {
+               var defaultFilters = 
this.filtersModel.getFiltersFromParameters( this._getDefaultParams() );
+
+               this._deleteExcludedValuesFromFilterState( defaultFilters );
+
+               // Defaults can change in a session, so we need to do this 
every time
+               return Object.keys( defaultFilters ).every( function ( 
filterName ) {
+                       return !defaultFilters[ filterName ];
+               } );
+       };
+
+       /**
         * Empty all selected filters
         */
        mw.rcfilters.Controller.prototype.emptyFilters = function () {
@@ -1047,7 +1063,6 @@
 
                        queryHighlights = data.highlights || {};
                        savedParams = 
this.filtersModel.getParametersFromFilters(
-                               // Merge filters with sticky values
                                $.extend( true, {}, data.filters, 
this.filtersModel.getStickyFiltersState() )
                        );
 
diff --git 
a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js
 
b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js
index df3263a..757a000 100644
--- 
a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js
+++ 
b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js
@@ -99,7 +99,8 @@
                        } );
                        this.queriesModel.connect( this, {
                                itemUpdate: 'onSavedQueriesItemUpdate',
-                               initialize: 'onSavedQueriesInitialize'
+                               initialize: 'onSavedQueriesInitialize',
+                               'default': 'reevaluateResetRestoreState'
                        } );
                }
 
@@ -575,7 +576,7 @@
         * Reevaluate the restore state for the widget between setting to 
defaults and clearing all filters
         */
        
mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.reevaluateResetRestoreState
 = function () {
-               var defaultsAreEmpty = this.model.areDefaultFiltersEmpty(),
+               var defaultsAreEmpty = this.controller.areDefaultsEmpty(),
                        currFiltersAreEmpty = 
this.model.areCurrentFiltersEmpty(),
                        hideResetButton = currFiltersAreEmpty && 
defaultsAreEmpty;
 
diff --git 
a/tests/qunit/suites/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js 
b/tests/qunit/suites/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js
index acbd0da..58e4d29 100644
--- 
a/tests/qunit/suites/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js
+++ 
b/tests/qunit/suites/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js
@@ -279,30 +279,6 @@
                        } ),
                        'Default parameters are stored properly per filter and 
group'
                );
-
-               assert.ok(
-                       !model.areDefaultFiltersEmpty(),
-                       'Check if default filters are empty when defaults exist'
-               );
-
-               // Reset on special filter object that has no defaults
-               model = new mw.rcfilters.dm.FiltersViewModel();
-               model.initializeFilters(
-                       [ {
-                               name: 'group1',
-                               type: 'send_unselected_if_any',
-                               filters: [
-                                       { name: 'filter1', label: 
'group1filter1-label', description: 'group1filter1-desc' },
-                                       { name: 'filter2', label: 
'group1filter2-label', description: 'group1filter2-desc' },
-                                       { name: 'filter3', label: 
'group1filter3-label', description: 'group1filter3-desc' }
-                               ]
-                       } ]
-               );
-
-               assert.ok(
-                       model.areDefaultFiltersEmpty(),
-                       'Check if default filters are empty when defaults do 
not exist'
-               );
        } );
 
        QUnit.test( 'Finding matching filters', function ( assert ) {

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I173c72a391886b41e899ac64621b504c5eb55b0c
Gerrit-PatchSet: 5
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Mooeypoo <[email protected]>
Gerrit-Reviewer: Jack Phoenix <[email protected]>
Gerrit-Reviewer: Sbisson <[email protected]>
Gerrit-Reviewer: TTO <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to