Boy scout rule

pull/39/head
IagoLast 7 years ago
parent 41133a65ad
commit 34799db0cc

@ -210,47 +210,37 @@ tree.Definition.prototype.toXML = function(env, existing) {
tree.Definition.prototype.toJS = function(env) {
var shaderAttrs = {};
// merge conditions from filters with zoom condition of the
// definition
var zoom = "(" + this.zoom + " & (1 << ctx.zoom))";
var frame_offset = this.frame_offset;
var _if = this.filters.toJS(env);
var filtered = _if !== '';
var filters = [zoom];
var zoomFilter = "(" + this.zoom + " & (1 << ctx.zoom))";
var filters = [zoomFilter];
var originalFilters = this.filters.toJS(env);
if(_if) {
filters.push(_if);
if (originalFilters) {
filters.push(originalFilters);
}
if(frame_offset){
filters.push('ctx["frame-offset"] === ' + frame_offset);
if (frame_offset) {
filters.push('ctx["frame-offset"] === ' + frame_offset);
}
_if = filters.join(" && ");
_.each(this.rules, function(rule) {
if(rule instanceof tree.Rule) {
shaderAttrs[rule.name] = shaderAttrs[rule.name] || [];
var r = {
index: rule.index,
symbolizer: rule.symbolizer
};
if (_if) {
r.js = "if(" + _if + "){" + rule.value.toJS(env) + "}";
} else {
r.js = rule.value.toJS(env);
}
_.each(this.rules, function (rule) {
var exportedRule = {};
r.constant = rule.value.ev(env).is !== 'field';
r.filtered = filtered;
shaderAttrs[rule.name].push(r);
} else {
throw new Error("Ruleset not supported");
if (!rule instanceof tree.Rule) {
throw new Error("Ruleset not supported");
}
exportedRule.index = rule.index;
exportedRule.symbolizer = rule.symbolizer;
exportedRule.js = "if(" + filters.join(" && ") + "){" + rule.value.toJS(env) + "}";
exportedRule.constant = rule.value.ev(env).is !== 'field';
exportedRule.filtered = originalFilters !== '';
shaderAttrs[rule.name] = shaderAttrs[rule.name] || [];
shaderAttrs[rule.name].push(exportedRule);
});
return shaderAttrs;
};

Loading…
Cancel
Save