this.currentView = 'default';
+ if ( this.getHighlightedItems().length > 0 ) {
+ this.toggleHighlight( true );
+ }
+
// Finish initialization
this.emit( 'initialize' );
};
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.
return result;
};
+ /**
+ * Get an object representing the complete empty state of highlights
+ *
+ * @return {Object} Object containing all the highlight parameters set to their negative value
+ */
+ mw.rcfilters.dm.FiltersViewModel.prototype.getEmptyHighlightParameters = function () {
+ var result = {};
+
+ this.getItems().forEach( function ( filterItem ) {
+ result[ filterItem.getName() + '_color' ] = null;
+ } );
+ result.highlight = '0';
+
+ return result;
+ };
+
/**
* Extract the highlight values from given object. Since highlights are
* the same for filter and parameters, it doesn't matter which one is
} );
};
- /**
- * Check whether the default values of the filters are all false.
- *
- * @return {boolean} Default filters are all false
- */
- mw.rcfilters.dm.FiltersViewModel.prototype.areDefaultFiltersEmpty = function () {
- var defaultFilters;
-
- if ( this.defaultFiltersEmpty === null ) {
- // We only need to do this test once,
- // because defaults are set once per session
- defaultFilters = this.getFiltersFromParameters( this.getDefaultParams() );
- this.defaultFiltersEmpty = $.isEmptyObject( defaultFilters ) || Object.keys( defaultFilters ).every( function ( filterName ) {
- return !defaultFilters[ filterName ];
- } );
- }
-
- return this.defaultFiltersEmpty;
- };
-
/**
* Get the item that matches the given name
*
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 );
}
};