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) { tree.Definition.prototype.toJS = function(env) {
var shaderAttrs = {}; 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 frame_offset = this.frame_offset;
var _if = this.filters.toJS(env); var zoomFilter = "(" + this.zoom + " & (1 << ctx.zoom))";
var filtered = _if !== ''; var filters = [zoomFilter];
var filters = [zoom]; var originalFilters = this.filters.toJS(env);
if(_if) { if (originalFilters) {
filters.push(_if); filters.push(originalFilters);
} }
if(frame_offset){ if (frame_offset) {
filters.push('ctx["frame-offset"] === ' + frame_offset); filters.push('ctx["frame-offset"] === ' + frame_offset);
} }
_if = filters.join(" && "); _.each(this.rules, function (rule) {
var exportedRule = {};
_.each(this.rules, function(rule) { if (!rule instanceof tree.Rule) {
if(rule instanceof tree.Rule) { throw new Error("Ruleset not supported");
shaderAttrs[rule.name] = shaderAttrs[rule.name] || []; }
var r = { exportedRule.index = rule.index;
index: rule.index, exportedRule.symbolizer = rule.symbolizer;
symbolizer: rule.symbolizer exportedRule.js = "if(" + filters.join(" && ") + "){" + rule.value.toJS(env) + "}";
}; exportedRule.constant = rule.value.ev(env).is !== 'field';
exportedRule.filtered = originalFilters !== '';
if (_if) { shaderAttrs[rule.name] = shaderAttrs[rule.name] || [];
r.js = "if(" + _if + "){" + rule.value.toJS(env) + "}"; shaderAttrs[rule.name].push(exportedRule);
} else {
r.js = rule.value.toJS(env);
}
r.constant = rule.value.ev(env).is !== 'field';
r.filtered = filtered;
shaderAttrs[rule.name].push(r);
} else {
throw new Error("Ruleset not supported");
}
}); });
return shaderAttrs; return shaderAttrs;
}; };

Loading…
Cancel
Save