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