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

Change subject: [wip] Make sure URI comparisons include highlight states
......................................................................

[wip] Make sure URI comparisons include highlight states

Change-Id: Ic6bdd8b7d27280b028f6a40879de0dbeb2850dbd
---
M resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js
M resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
2 files changed, 36 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/14/356614/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 402dbf9..6b2cd88 100644
--- a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js
+++ b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js
@@ -520,6 +520,26 @@
        };
 
        /**
+        * Extract the highlight values from given object. Since highlights are
+        * the same for filter and parameters, it doesn't matter which one is
+        * given; values will be returned with a full list of the highlights
+        * with colors or null values.
+        *
+        * @return {object} Object where keys are "<filter name>_color" and 
values
+        *                  are the selected highlight colors.
+        */
+       mw.rcfilters.dm.FiltersViewModel.prototype.extractHighlightValues = 
function ( representation ) {
+               var result = {};
+
+               this.getItems().forEach( function ( filterItem ) {
+                       var highlightName = filterItem.getName() + '_color';
+                       result[ highlightName ] = representation[ highlightName 
] || null;
+               } );
+
+               return result;
+       };
+
+       /**
         * Sanitize value group of a string_option groups type
         * Remove duplicates and make sure to only use valid
         * values.
diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js 
b/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
index e1694f6..0b3eefc 100644
--- a/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
+++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
@@ -619,6 +619,9 @@
         */
        mw.rcfilters.Controller.prototype._updateURL = function ( params ) {
                var currentFilterState, updatedFilterState, updatedUri,
+                       currentHighlights = {},
+                       updatedHighlight = {},
+                       uri = new mw.Uri(),
                        notEquivalent = function ( obj1, obj2 ) {
                                var keys = Object.keys( obj1 ).concat( 
Object.keys( obj2 ) );
                                return keys.some( function ( key ) {
@@ -635,9 +638,21 @@
                // This will allow us to always have a proper check of whether
                // the requested new url is one to change or not, regardless of
                // actual parameter visibility/representation in the URL
-               currentFilterState = 
this.filtersModel.getFiltersFromParameters( new mw.Uri().query );
+               currentFilterState = 
this.filtersModel.getFiltersFromParameters( uri.query );
                updatedFilterState = 
this.filtersModel.getFiltersFromParameters( updatedUri.query );
 
+               // Include highlight states
+               $.extend( true,
+                       currentFilterState,
+                       this.filtersModel.extractHighlightValues( uri.query ),
+                       { highlight: !!Number( uri.query.highlight ) }
+               );
+               $.extend( true,
+                       updatedFilterState,
+                       this.filtersModel.extractHighlightValues( 
updatedUri.query ),
+                       { highlight: !!Number( updatedUri.query.highlight ) }
+               );
+
                if ( notEquivalent( currentFilterState, updatedFilterState ) ) {
                        if ( this.initializing ) {
                                // Initially, when we just build the first page 
load

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic6bdd8b7d27280b028f6a40879de0dbeb2850dbd
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Mooeypoo <mor...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to