* @fires initialize
*/
mw.rcfilters.dm.SavedQueriesModel.prototype.initialize = function ( savedQueries, baseState ) {
- var items = [];
+ var items = [],
+ defaultItem = null;
savedQueries = savedQueries || {};
this.clearItems();
$.each( savedQueries.queries || {}, function ( id, obj ) {
- var normalizedData = $.extend( true, {}, baseState, obj.data );
+ var item,
+ normalizedData = $.extend( true, {}, baseState, obj.data ),
+ isDefault = String( savedQueries.default ) === String( id );
// Backwards-compat fix: We stored the 'highlight' state with
// "1" and "0" instead of true/false; for already-stored states,
// for existing users, who are only betalabs users at the moment.
normalizedData.highlights.highlight = !!Number( normalizedData.highlights.highlight );
- items.push(
- new mw.rcfilters.dm.SavedQueryItemModel(
- id,
- obj.label,
- normalizedData,
- { 'default': savedQueries.default === id }
- )
+ item = new mw.rcfilters.dm.SavedQueryItemModel(
+ id,
+ obj.label,
+ normalizedData,
+ { 'default': isDefault }
);
+
+ if ( isDefault ) {
+ defaultItem = item;
+ }
+
+ items.push( item );
} );
- this.default = savedQueries.default;
+ if ( defaultItem ) {
+ this.default = defaultItem.getID();
+ }
this.addItems( items );
] );
};
+ /**
+ * Remove query from model
+ *
+ * @param {string} queryID Query ID
+ */
+ mw.rcfilters.dm.SavedQueriesModel.prototype.removeQuery = function ( queryID ) {
+ var query = this.getItemByID( queryID );
+
+ if ( query ) {
+ // Check if this item was the default
+ if ( String( this.getDefault() ) === String( queryID ) ) {
+ // Nulify the default
+ this.savedQueriesModel.setDefault( null );
+ }
+
+ this.savedQueriesModel.removeItems( [ query ] );
+ }
+ };
+
/**
* Get an item that matches the requested query
*
* @param {string} queryID Query id
*/
mw.rcfilters.Controller.prototype.removeSavedQuery = function ( queryID ) {
- var query = this.savedQueriesModel.getItemByID( queryID );
+ this.savedQueriesModel.removeQuery( queryID );
- this.savedQueriesModel.removeItems( [ query ] );
-
- // Check if this item was the default
- if ( this.savedQueriesModel.getDefault() === queryID ) {
- // Nulify the default
- this.savedQueriesModel.setDefault( null );
- }
this._saveSavedQueries();
};