- for ( i = 0; i < data.filters.length; i++ ) {
- // Filter conflicts
- if ( data.filters[ i ].conflicts ) {
- filterItem = model.groups[ group ].getItemByParamName( data.filters[ i ].name );
- filterConflictMap[ filterItem.getName() ] = data.filters[ i ].conflicts;
+ if ( views && mw.config.get( 'wgStructuredChangeFiltersEnableExperimentalViews' ) ) {
+ // If we have extended views, add them in
+ $.extend( true, allViews, views );
+ }
+
+ // Go over all views
+ $.each( allViews, function ( viewName, viewData ) {
+ // Define the view
+ model.views[ viewName ] = {
+ name: viewData.name,
+ title: viewData.title,
+ trigger: viewData.trigger
+ };
+
+ // Go over groups
+ viewData.groups.forEach( function ( groupData ) {
+ var group = groupData.name;
+
+ model.groups[ group ] = new mw.rcfilters.dm.FilterGroup(
+ group,
+ $.extend( true, {}, groupData, { view: viewName } )
+ );
+
+ model.groups[ group ].initializeFilters( groupData.filters, groupData.default );
+ items = items.concat( model.groups[ group ].getItems() );
+
+ // Prepare conflicts
+ if ( groupData.conflicts ) {
+ // Group conflicts
+ groupConflictMap[ group ] = groupData.conflicts;