mw.rcfilters.dm.FiltersViewModel.prototype.areDefaultFiltersEmpty = function () {
var defaultFilters;
- if ( this.defaultFiltersEmpty !== null ) {
+ 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 = Object.keys( defaultFilters ).every( function ( filterName ) {
+ this.defaultFiltersEmpty = $.isEmptyObject( defaultFilters ) || Object.keys( defaultFilters ).every( function ( filterName ) {
return !defaultFilters[ filterName ];
} );
}
click: 'onSaveQueryButtonClick',
saveCurrent: 'setSavedQueryVisibility'
} );
- this.queriesModel.connect( this, { itemUpdate: 'onSavedQueriesItemUpdate' } );
+ this.queriesModel.connect( this, {
+ itemUpdate: 'onSavedQueriesItemUpdate',
+ initialize: 'onSavedQueriesInitialize'
+ } );
}
this.emptyFilterMessage = new OO.ui.LabelWidget( {
this.getMenu().toggle( false );
};
+ /**
+ * Respond to save query model initialization
+ */
+ mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.onSavedQueriesInitialize = function () {
+ this.setSavedQueryVisibility();
+ };
+
/**
* Respond to save query item change. Mainly this is done to update the label in case
* a query item has been edited
this.matchingQuery ? this.matchingQuery.getLabel() : ''
);
this.savedQueryTitle.toggle( !!this.matchingQuery );
- this.saveQueryButton.toggle(
- !this.isEmpty() &&
- !this.matchingQuery
- );
+ this.saveQueryButton.toggle( !this.matchingQuery );
if ( this.matchingQuery ) {
this.emphasize();
} ),
'Default parameters are stored properly per filter and group'
);
+
+ assert.ok(
+ !model.areDefaultFiltersEmpty(),
+ 'Check if default filters are empty when defaults exist'
+ );
+
+ // Reset on special filter object that has no defaults
+ model = new mw.rcfilters.dm.FiltersViewModel();
+ model.initializeFilters(
+ [ {
+ name: 'group1',
+ type: 'send_unselected_if_any',
+ filters: [
+ { name: 'filter1', label: 'group1filter1-label', description: 'group1filter1-desc' },
+ { name: 'filter2', label: 'group1filter2-label', description: 'group1filter2-desc' },
+ { name: 'filter3', label: 'group1filter3-label', description: 'group1filter3-desc' }
+ ]
+ } ]
+ );
+
+ assert.ok(
+ model.areDefaultFiltersEmpty(),
+ 'Check if default filters are empty when defaults do not exist'
+ );
} );
QUnit.test( 'Finding matching filters', function ( assert ) {