RCFilters: Don't reload when removing highlighted item
[lhc/web/wiklou.git] / resources / src / mediawiki.rcfilters / mw.rcfilters.Controller.js
index 685adb6..f74dc3b 100644 (file)
@@ -43,6 +43,7 @@
        mw.rcfilters.Controller.prototype.initialize = function ( filterStructure, namespaceStructure, tagList ) {
                var parsedSavedQueries,
                        displayConfig = mw.config.get( 'StructuredChangeFiltersDisplayConfig' ),
+                       defaultSavedQueryExists = mw.config.get( 'wgStructuredChangeFiltersDefaultSavedQueryExists' ),
                        controller = this,
                        views = {},
                        items = [],
                                        separator: ';',
                                        fullCoverage: true,
                                        filters: items
+                               },
+                               {
+                                       name: 'invertGroup',
+                                       type: 'boolean',
+                                       hidden: true,
+                                       filters: [ {
+                                               name: 'invert',
+                                               'default': '0'
+                                       } ]
                                } ]
                        };
                }
                // Defaults should only be applied on load (if necessary)
                // or on request
                this.initializing = true;
-               if (
-                       !mw.user.isAnon() && this.savedQueriesModel.getDefault() &&
-                       !this.uriProcessor.doesQueryContainRecognizedParams( uri.query )
-               ) {
-                       // We have defaults from a saved query.
-                       // We will load them straight-forward (as if
-                       // they were clicked in the menu) so we trigger
-                       // a full ajax request and change of URL
+
+               if ( defaultSavedQueryExists ) {
+                       // This came from the server, meaning that we have a default
+                       // saved query, but the server could not load it, probably because
+                       // it was pre-conversion to the new format.
+                       // We need to load this query again
                        this.applySavedQuery( this.savedQueriesModel.getDefault() );
                } else {
                        // There are either recognized parameters in the URL
         */
        mw.rcfilters.Controller.prototype.clearFilter = function ( filterName ) {
                var filterItem = this.filtersModel.getItemByName( filterName ),
-                       isHighlighted = filterItem.isHighlighted();
+                       isHighlighted = filterItem.isHighlighted(),
+                       isSelected = filterItem.isSelected();
 
-               if ( filterItem.isSelected() || isHighlighted ) {
+               if ( isSelected || isHighlighted ) {
                        this.filtersModel.clearHighlightColor( filterName );
                        this.filtersModel.toggleFilterSelected( filterName, false );
-                       this.updateChangesList();
+
+                       if ( isSelected ) {
+                               // Only update the changes list if the filter changed
+                               // its selection state. If it only changed its highlight
+                               // then don't reload
+                               this.updateChangesList();
+                       }
+
                        this.filtersModel.reassessFilterInteractions( filterItem );
 
                        // Log filter grouping
                                params: $.extend(
                                        true,
                                        {
-                                               invert: String( Number( this.filtersModel.areNamespacesInverted() ) ),
                                                highlight: String( Number( this.filtersModel.isHighlightEnabled() ) )
                                        },
                                        this.filtersModel.getParametersFromFilters( selectedState )
                                )
                        );
 
-                       // Update namespace inverted property
-                       this.filtersModel.toggleInvertedNamespaces( !!Number( data.params.invert ) );
-
                        // Update highlight state
                        this.filtersModel.toggleHighlight( !!Number( data.params.highlight ) );
                        this.filtersModel.getItems().forEach( function ( filterItem ) {
                                params: $.extend(
                                        true,
                                        {
-                                               highlight: String( Number( this.filtersModel.isHighlightEnabled() ) ),
-                                               invert: String( Number( this.filtersModel.areNamespacesInverted() ) )
+                                               highlight: String( Number( this.filtersModel.isHighlightEnabled() ) )
                                        },
                                        this.filtersModel.getParametersFromFilters( selectedState )
                                ),
                        return $.extend( true, {},
                                this.filtersModel.getParametersFromFilters( savedFilters ),
                                data.highlights,
-                               { highlight: data.params.highlight, invert: data.params.invert }
+                               { highlight: data.params.highlight }
                        );
                }
                return this.filtersModel.getDefaultParams();