Mooeypoo has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/392182 )

Change subject: RCFilters: Ignore 'invert' model if there are no namespaces in 
saved queries
......................................................................

RCFilters: Ignore 'invert' model if there are no namespaces in saved queries

When comparing and when saving the query, normalize the 'invert'
state so that it represents the **effective** state of the filters.
If there are no namespaces, then 'invert' is irrelevant.

Make sure we ignore that state when it is irrelevant when we save
saved queries and when we compare the current state to a saved query.

Change-Id: If80b50c3d2b90b5116b6b0018a8d56bce2deb7c4
---
M resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js
M resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js
2 files changed, 32 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/82/392182/1

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 d959540..99558bd 100644
--- a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js
+++ b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js
@@ -1036,6 +1036,23 @@
        };
 
        /**
+        * Check whether the invert state is a valid one. A valid invert state 
is one where
+        * there are actual namespaces selcted.
+        *
+        * This is done to compare states to previous ones that may have had 
the invert model
+        * selected but effectively had no namespaces, so are not effectively 
different than
+        * ones where invert is not selected.
+        *
+        * @return {boolean} Invert is effectively selected
+        */
+       
mw.rcfilters.dm.FiltersViewModel.prototype.areNamespacesEffectivelyInverted = 
function () {
+               return this.getInvertModel().isSelected() &&
+                       this.getSelectedItems().some( function ( itemModel ) {
+                               return itemModel.getGroupModel().getView() === 
'namespace';
+                       } );
+       };
+
+       /**
         * 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 1d7934f..1caacf4 100644
--- a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js
+++ b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js
@@ -123,6 +123,11 @@
                                // the given data, if they exist
                                normalizedData.params = 
model.filtersModel.removeExcludedParams( normalizedData.params );
 
+                               // Correct the invert state for effective 
selection
+                               if ( normalizedData.params.invert && 
!normalizedData.params.namespaces ) {
+                                       delete normalizedData.params.invert;
+                               }
+
                                model.cleanupHighlights( normalizedData );
 
                                id = String( id );
@@ -226,6 +231,11 @@
                        }
                } );
 
+               // Correct the invert state for effective selection
+               if ( normalizedData.params.invert && 
!this.filtersModel.areNamespacesEffectivelyInverted() ) {
+                       delete normalizedData.params.invert;
+               }
+
                // Add item
                this.addItems( [
                        new mw.rcfilters.dm.SavedQueryItemModel(
@@ -272,6 +282,11 @@
                // Minimize before comparison
                fullQueryComparison = 
this.filtersModel.getMinimizedParamRepresentation( fullQueryComparison );
 
+               // Correct the invert state for effective selection
+               if ( fullQueryComparison.invert ) {
+                       delete fullQueryComparison.invert;
+               }
+
                return this.getItems().filter( function ( item ) {
                        return OO.compare(
                                item.getCombinedData(),

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: If80b50c3d2b90b5116b6b0018a8d56bce2deb7c4
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Mooeypoo <[email protected]>

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

Reply via email to