X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=resources%2Fsrc%2Fmediawiki.rcfilters%2Fdm%2Fmw.rcfilters.dm.FiltersViewModel.js;h=5013c086214cbc6ad1deec00bad071eb87bdcc7e;hb=f58546ef6e55342ff2d54bdf9e421102aed7aa76;hp=3b882a6ba7cbde5351a22394c75b08843b78b0f3;hpb=bdc10df7d0b1a3a6f0b37265f2f8b445cdace2d6;p=lhc%2Fweb%2Fwiklou.git 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 3b882a6ba7..5013c08621 100644 --- a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js +++ b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js @@ -598,6 +598,31 @@ return result; }; + /** + * Get the parameter names that represent filters that are excluded + * from saved queries. + * + * @return {string[]} Parameter names + */ + mw.rcfilters.dm.FiltersViewModel.prototype.getExcludedParams = function () { + var result = []; + + $.each( this.groups, function ( name, model ) { + if ( model.isExcludedFromSavedQueries() ) { + if ( model.isPerGroupRequestParameter() ) { + result.push( name ); + } else { + // Each filter is its own param + result = result.concat( model.getItems().map( function ( filterItem ) { + return filterItem.getParamName(); + } ) ); + } + } + } ); + + return result; + }; + /** * Analyze the groups and their filters and output an object representing * the state of the parameters they represent. @@ -1026,12 +1051,14 @@ enable = enable === undefined ? !this.highlightEnabled : enable; if ( this.highlightEnabled !== enable ) { - this.highlightEnabled = enable; - + // HACK make sure highlights are disabled globally while we toggle on the items, + // otherwise we'll call clearHighlight() and applyHighlight() many many times + this.highlightEnabled = false; this.getItems().forEach( function ( filterItem ) { - filterItem.toggleHighlight( this.highlightEnabled ); - }.bind( this ) ); + filterItem.toggleHighlight( enable ); + } ); + this.highlightEnabled = enable; this.emit( 'highlightChange', this.highlightEnabled ); } };