*/
protected $priority;
+ /**
+ *
+ * @var string $defaultHighlightColor
+ */
+ protected $defaultHighlightColor;
+
const RESERVED_NAME_CHAR = '_';
/**
'priority' => $this->priority,
'subset' => $this->subsetFilters,
'conflicts' => [],
+ 'defaultHighlightColor' => $this->defaultHighlightColor
];
$output['messageKeys'] = [
}
);
}
+
+ /**
+ * @param string $defaultHighlightColor
+ */
+ public function setDefaultHighlightColor( $defaultHighlightColor ) {
+ $this->defaultHighlightColor = $defaultHighlightColor;
+ }
}
*/
mw.rcfilters.dm.FilterGroup.prototype.initializeFilters = function ( filterDefinition, groupDefault ) {
var defaultParam,
+ anyHighlighted,
supersetMap = {},
model = this,
items = [];
description: filter.description || '',
labelPrefixKey: model.labelPrefixKey,
cssClass: filter.cssClass,
- identifiers: filter.identifiers
+ identifiers: filter.identifiers,
+ defaultHighlightColor: filter.defaultHighlightColor
} );
if ( filter.subset ) {
this.defaultParams[ this.getName() ] = defaultParam;
}
+ // add highlights to defaultParams
+ anyHighlighted = false;
+ this.getItems().forEach( function ( filterItem ) {
+ if ( filterItem.isHighlighted() ) {
+ anyHighlighted = true;
+ this.defaultParams[ filterItem.getName() + '_color' ] = filterItem.getHighlightColor();
+ }
+ }.bind( this ) );
+ if ( anyHighlighted ) {
+ this.defaultParams.highlight = '1';
+ }
+
// Store default filter state based on default params
this.defaultFilters = this.getFilterRepresentation( this.getDefaultParams() );
this.currentView = 'default';
+ if ( this.getHighlightedItems().length > 0 ) {
+ this.toggleHighlight( true );
+ }
+
// Finish initialization
this.emit( 'initialize' );
};
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
* @cfg {string} [cssClass] The class identifying the results that match this filter
* @cfg {string[]} [identifiers] An array of identifiers for this item. They will be
* added and considered in the view.
+ * @cfg {string} [defaultHighlightColor] If set, highlight this filter by default with this color
*/
mw.rcfilters.dm.ItemModel = function MwRcfiltersDmItemModel( param, config ) {
config = config || {};
// Highlight
this.cssClass = config.cssClass;
- this.highlightColor = null;
- this.highlightEnabled = false;
+ this.highlightColor = config.defaultHighlightColor;
+ this.highlightEnabled = !!config.defaultHighlightColor;
};
/* Initialization */
*/
mw.rcfilters.UriProcessor.prototype._buildEmptyParameterState = function () {
var emptyParams = this.filtersModel.getParametersFromFilters( {} ),
- emptyHighlights = this.filtersModel.getHighlightParameters();
+ emptyHighlights = this.filtersModel.getEmptyHighlightParameters();
this.emptyParameterState = $.extend(
true,
'cssClass' => null,
'conflicts' => [],
'subset' => [],
+ 'defaultHighlightColor' => null,
],
[
'name' => 'hidefoo',
'cssClass' => null,
'conflicts' => [],
'subset' => [],
+ 'defaultHighlightColor' => null,
],
],
'conflicts' => [],
'default' => 1,
'priority' => 1,
'cssClass' => null,
+ 'defaultHighlightColor' => null,
'conflicts' => [
[
'group' => 'group',
'default' => 1,
'priority' => 1,
'cssClass' => null,
+ 'defaultHighlightColor' => null,
'conflicts' => [
[
'group' => 'group',
'cssClass' => null,
'conflicts' => [],
'subset' => [],
+ 'defaultHighlightColor' => null,
],
[
'name' => 'foo',
'cssClass' => null,
'conflicts' => [],
'subset' => [],
+ 'defaultHighlightColor' => null,
],
],
'conflicts' => [],
'cssClass' => null,
'conflicts' => [],
'subset' => [],
+ 'defaultHighlightColor' => null
],
[
'name' => 'hidefoo',
'cssClass' => null,
'conflicts' => [],
'subset' => [],
+ 'defaultHighlightColor' => null
],
],
'fullCoverage' => true,
'priority' => -2,
'conflicts' => [],
'subset' => [],
+ 'defaultHighlightColor' => null
],
[
'name' => 'garply',
'priority' => -3,
'conflicts' => [],
'subset' => [],
+ 'defaultHighlightColor' => null
],
],
'conflicts' => [],