} );
// Collect views
- allViews = {
+ allViews = $.extend( true, {
'default': {
title: mw.msg( 'rcfilters-filterlist-title' ),
groups: filterGroups
}
- };
-
- if ( views && mw.config.get( 'wgStructuredChangeFiltersEnableExperimentalViews' ) ) {
- // If we have extended views, add them in
- $.extend( true, allViews, views );
- }
+ }, views );
// Go over all views
$.each( allViews, function ( viewName, viewData ) {
// Create a map between known parameters and their models
$.each( this.groups, function ( group, groupModel ) {
- if ( groupModel.getType() === 'send_unselected_if_any' ) {
+ if (
+ groupModel.getType() === 'send_unselected_if_any' ||
+ groupModel.getType() === 'boolean'
+ ) {
// Individual filters
groupModel.getItems().forEach( function ( filterItem ) {
model.parameterMap[ filterItem.getParamName() ] = filterItem;
// group2: "param4|param5"
// }
$.each( params, function ( paramName, paramValue ) {
- var itemOrGroup = model.parameterMap[ paramName ];
-
- if ( itemOrGroup instanceof mw.rcfilters.dm.FilterItem ) {
- groupMap[ itemOrGroup.getGroupName() ] = groupMap[ itemOrGroup.getGroupName() ] || {};
- groupMap[ itemOrGroup.getGroupName() ][ itemOrGroup.getParamName() ] = paramValue;
- } else if ( itemOrGroup instanceof mw.rcfilters.dm.FilterGroup ) {
- // This parameter represents a group (values are the filters)
- // this is equivalent to checking if the group is 'string_options'
- groupMap[ itemOrGroup.getName() ] = groupMap[ itemOrGroup.getName() ] || {};
- groupMap[ itemOrGroup.getName() ] = paramValue;
+ var groupName,
+ itemOrGroup = model.parameterMap[ paramName ];
+
+ if ( itemOrGroup ) {
+ groupName = itemOrGroup instanceof mw.rcfilters.dm.FilterItem ?
+ itemOrGroup.getGroupName() : itemOrGroup.getName();
+
+ groupMap[ groupName ] = groupMap[ groupName ] || {};
+ groupMap[ groupName ][ paramName ] = paramValue;
}
} );
/**
* Get the highlight parameters based on current filter configuration
*
- * @return {Object} Object where keys are "<filter name>_color" and values
+ * @return {Object} Object where keys are `<filter name>_color` and values
* are the selected highlight colors.
*/
mw.rcfilters.dm.FiltersViewModel.prototype.getHighlightParameters = function () {
*
* @param {Object} representation Object containing representation of
* some or all highlight values
- * @return {Object} Object where keys are "<filter name>_color" and values
+ * @return {Object} Object where keys are `<filter name>_color` and values
* are the selected highlight colors. The returned object
* contains all available filters either with a color value
* or with null.
// Check if there are either any selected items or any items
// that have highlight enabled
return !this.getItems().some( function ( filterItem ) {
- return filterItem.isSelected() || filterItem.isHighlighted();
+ return !filterItem.getGroupModel().isHidden() && ( filterItem.isSelected() || filterItem.isHighlighted() );
} );
};
} );
};
+ /**
+ * Get all selected items
+ *
+ * @return {mw.rcfilters.dm.FilterItem[]} Selected items
+ */
+ mw.rcfilters.dm.FiltersViewModel.prototype.getSelectedItems = function () {
+ var allSelected = [];
+
+ $.each( this.getFilterGroups(), function ( groupName, groupModel ) {
+ allSelected = allSelected.concat( groupModel.getSelectedItems() );
+ } );
+
+ return allSelected;
+ };
/**
* Switch the current view
*