isDefault = String( savedQueries.default ) === String( id );
if ( normalizedData && normalizedData.params ) {
- // Backwards-compat fix: Remove excluded parameters from
+ // Backwards-compat fix: Remove sticky parameters from
// the given data, if they exist
- normalizedData.params = model.filtersModel.removeExcludedParams( normalizedData.params );
+ normalizedData.params = model.filtersModel.removeStickyParams( normalizedData.params );
+
+ // Correct the invert state for effective selection
+ if ( normalizedData.params.invert && !normalizedData.params.namespace ) {
+ delete normalizedData.params.invert;
+ }
+
+ model.cleanupHighlights( normalizedData );
id = String( id );
this.emit( 'initialize' );
};
+ /**
+ * Clean up highlight parameters.
+ * 'highlight' used to be stored, it's not inferred based on the presence of absence of
+ * filter colors.
+ *
+ * @param {Object} data Saved query data
+ */
+ mw.rcfilters.dm.SavedQueriesModel.prototype.cleanupHighlights = function ( data ) {
+ if (
+ data.params.highlight === '0' &&
+ data.highlights && Object.keys( data.highlights ).length
+ ) {
+ data.highlights = {};
+ }
+ delete data.params.highlight;
+ };
+
/**
* Convert from representation of filters to representation of parameters
*
this.filtersModel.getParametersFromFilters( fullFilterRepresentation )
);
- // Highlights (taking out 'highlight' itself, appending _color to keys)
+ // Highlights: appending _color to keys
newData.highlights = {};
$.each( data.highlights, function ( highlightedFilterName, value ) {
if ( value ) {
}
} );
+ // 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(
// Minimize before comparison
fullQueryComparison = this.filtersModel.getMinimizedParamRepresentation( fullQueryComparison );
+ // Correct the invert state for effective selection
+ if ( fullQueryComparison.invert && !this.filtersModel.areNamespacesEffectivelyInverted() ) {
+ delete fullQueryComparison.invert;
+ }
+
return this.getItems().filter( function ( item ) {
return OO.compare(
item.getCombinedData(),
/**
* Get the full data representation of the default query, if it exists
*
- * @param {boolean} [excludeHiddenParams] Exclude hidden parameters in the result
* @return {Object|null} Representation of the default params if exists.
* Null if default doesn't exist or if the user is not logged in.
*/
- mw.rcfilters.dm.SavedQueriesModel.prototype.getDefaultParams = function ( excludeHiddenParams ) {
- var data = ( !mw.user.isAnon() && this.getItemParams( this.getDefault() ) ) || {};
-
- if ( excludeHiddenParams ) {
- Object.keys( this.filtersModel.getDefaultHiddenParams() ).forEach( function ( paramName ) {
- delete data[ paramName ];
- } );
- }
-
- return data;
+ mw.rcfilters.dm.SavedQueriesModel.prototype.getDefaultParams = function () {
+ return ( !mw.user.isAnon() && this.getItemParams( this.getDefault() ) ) || {};
};
/**
* @return {Object} Full param representation
*/
mw.rcfilters.dm.SavedQueriesModel.prototype.buildParamsFromData = function ( data ) {
- // Merge saved filter state with sticky filter values
- var savedFilters;
-
data = data || {};
-
- // In order to merge sticky filters with the data, we have to
- // transform this to filters first, merge, and then back to
- // parameters
- savedFilters = $.extend(
- true, {},
- this.filtersModel.getFiltersFromParameters( data.params ),
- this.filtersModel.getStickyFiltersState()
- );
-
// Return parameter representation
return this.filtersModel.getMinimizedParamRepresentation( $.extend( true, {},
- this.filtersModel.getParametersFromFilters( savedFilters ),
- data.highlights,
- { highlight: data.params.highlight }
+ data.params,
+ data.highlights
) );
};