Initial commit
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
var _ = require('underscore');
|
||||
var legendsMetadata = require('./legends-metadata');
|
||||
|
||||
var CUSTOM_ATTRIBUTES = ['title'];
|
||||
var instance;
|
||||
var legends;
|
||||
|
||||
var State = (function () {
|
||||
var getType = function (type) {
|
||||
var legend = legendsMetadata[type];
|
||||
return legend && legend.legendType;
|
||||
};
|
||||
|
||||
var onLayerAdded = function (layer) {
|
||||
instance[layer.id] = {};
|
||||
};
|
||||
|
||||
var onLayerRemoved = function (layer) {
|
||||
delete instance[layer.id];
|
||||
};
|
||||
|
||||
return {
|
||||
init: function (layersDefinitionCollection, legendsDefinitionCollection) {
|
||||
if (!instance) {
|
||||
instance = {};
|
||||
layersDefinitionCollection.on('add', onLayerAdded);
|
||||
layersDefinitionCollection.on('remove', onLayerRemoved);
|
||||
legends = legendsDefinitionCollection;
|
||||
this.reset();
|
||||
}
|
||||
},
|
||||
|
||||
reset: function () {
|
||||
legends.each(function (legend) {
|
||||
var layer = legend.layerDefinitionModel;
|
||||
if (!instance[layer.id]) {
|
||||
instance[layer.id] = {};
|
||||
}
|
||||
|
||||
var legendType = getType(legend.get('type'));
|
||||
if (!instance[layer.id][legendType]) {
|
||||
instance[layer.id][legendType] = {};
|
||||
}
|
||||
|
||||
var state = _.pick(legend.attributes, legend.attributes.conf.columns);
|
||||
instance[layer.id][legendType] = state;
|
||||
});
|
||||
},
|
||||
|
||||
set: function (layer, type, attrs) {
|
||||
var attributes = _.pick(attrs, CUSTOM_ATTRIBUTES);
|
||||
var legendType = getType(type);
|
||||
if (instance && legendType) {
|
||||
if (!instance[layer.id]) {
|
||||
instance[layer.id] = {};
|
||||
}
|
||||
instance[layer.id][legendType] = attributes;
|
||||
}
|
||||
},
|
||||
|
||||
get: function (layer, type) {
|
||||
var legendType = getType(type);
|
||||
return instance && legendType && instance[layer.id] && instance[layer.id][legendType];
|
||||
},
|
||||
|
||||
getInstance: function () {
|
||||
return instance;
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
||||
module.exports = State;
|
||||
Reference in New Issue
Block a user