Initial commit
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
var StyleGenerator = require('./style-converter');
|
||||
var _ = require('underscore');
|
||||
|
||||
/**
|
||||
* this class manages the changes in layerdef styles and generate the proper cartocss and sql
|
||||
*/
|
||||
function StyleManager (layerDefinitionsCollection, map, configModel) {
|
||||
this.layerDefinitionsCollection = layerDefinitionsCollection;
|
||||
this.map = map;
|
||||
this._configModel = configModel;
|
||||
this._initBinds();
|
||||
}
|
||||
|
||||
StyleManager.prototype = {
|
||||
_initBinds: function () {
|
||||
var self = this;
|
||||
|
||||
function _generate (layerDef) {
|
||||
return function () {
|
||||
self.generate(layerDef);
|
||||
};
|
||||
}
|
||||
|
||||
function _bind (layerDef) {
|
||||
if (layerDef && layerDef.styleModel) {
|
||||
layerDef.styleModel.bind('change', _generate(layerDef), this);
|
||||
layerDef.bind('change:autoStyle', _generate(layerDef), this);
|
||||
}
|
||||
}
|
||||
|
||||
function _unbind (layerDef) {
|
||||
if (layerDef.styleModel) {
|
||||
layerDef.styleModel.unbind('change', _generate(layerDef), this);
|
||||
layerDef.unbind('change:autoStyle', _generate(layerDef), this);
|
||||
}
|
||||
}
|
||||
|
||||
function _bindAll () {
|
||||
this.layerDefinitionsCollection.each(_bind, this);
|
||||
}
|
||||
|
||||
this.layerDefinitionsCollection.bind('reset', _bindAll, this);
|
||||
this.layerDefinitionsCollection.bind('add', _bind, this);
|
||||
this.layerDefinitionsCollection.bind('remove', _unbind, this);
|
||||
|
||||
_bindAll.call(this);
|
||||
},
|
||||
|
||||
generate: function (layerDef) {
|
||||
var isAutoStyleApplied = layerDef.get('autoStyle');
|
||||
var stylesChanged = layerDef.styleModel.changed;
|
||||
|
||||
if (isAutoStyleApplied) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (stylesChanged.type && _.size(stylesChanged) === 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
var simpleGeometryType = layerDef.getAnalysisDefinitionNodeModel().queryGeometryModel.get('simple_geom') || 'point';
|
||||
var generated = StyleGenerator.generateStyle(
|
||||
layerDef.styleModel.toJSON(),
|
||||
simpleGeometryType,
|
||||
{
|
||||
zoom: this.map.get('zoom')
|
||||
},
|
||||
this._configModel
|
||||
);
|
||||
|
||||
var properties = {
|
||||
cartocss: generated.cartoCSS,
|
||||
sql_wrap: generated.sql,
|
||||
type: generated.layerType
|
||||
};
|
||||
|
||||
if (layerDef.get('previousCartoCSSCustom')) {
|
||||
properties = _.extend(properties, {
|
||||
cartocss: layerDef.get('previousCartoCSS'),
|
||||
cartocss_custom: layerDef.get('previousCartoCSSCustom'),
|
||||
previousCartoCSSCustom: false
|
||||
});
|
||||
}
|
||||
|
||||
layerDef.set(properties);
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = StyleManager;
|
||||
Reference in New Issue
Block a user