Initial commit
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
var _ = require('underscore');
|
||||
var Backbone = require('backbone');
|
||||
|
||||
/**
|
||||
* Collection of Dataviews
|
||||
*/
|
||||
module.exports = Backbone.Collection.extend({
|
||||
comparator: 'order',
|
||||
|
||||
initialize: function () {
|
||||
this._allDataviewsFetched = false;
|
||||
this._initBinds();
|
||||
},
|
||||
|
||||
_initBinds: function () {
|
||||
this.bind('change:order', _.debounce(this._onChangeOrder.bind(this), 10), this);
|
||||
// If a category model applies the category colors, rest should remove/disable
|
||||
// the category colors applied before.
|
||||
this.bind('change:autoStyle', function (changedWidgetModel, autoStyle) {
|
||||
if (autoStyle) {
|
||||
this.each(function (widgetModel) {
|
||||
// Only set if model actually has the attr (i.e. it's a category model)
|
||||
if (widgetModel.layerModel && widgetModel !== changedWidgetModel && widgetModel.layerModel.get('layer_name') === changedWidgetModel.layerModel.get('layer_name') && widgetModel.get('autoStyle')) {
|
||||
widgetModel.set('autoStyle', false);
|
||||
}
|
||||
});
|
||||
}
|
||||
}, this);
|
||||
},
|
||||
|
||||
_onChangeOrder: function () {
|
||||
this.sort();
|
||||
this.trigger('orderChanged', this);
|
||||
},
|
||||
|
||||
getStates: function () {
|
||||
var state = {};
|
||||
this.each(function (widgetModel) {
|
||||
var widgetState = widgetModel.getState();
|
||||
if (!_.isEmpty(widgetState)) {
|
||||
state[widgetModel.get('id')] = widgetState;
|
||||
}
|
||||
});
|
||||
return state;
|
||||
},
|
||||
|
||||
setStates: function (states) {
|
||||
for (var i in states) {
|
||||
var widget = this.at(i);
|
||||
widget.setState(states[i]);
|
||||
}
|
||||
},
|
||||
|
||||
hasInitialState: function () {
|
||||
return this._allDataviewsFetched;
|
||||
},
|
||||
|
||||
initialState: function () {
|
||||
this._allDataviewsFetched = true;
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user