Skip to content

Commit 63e70d1

Browse files
Merge pull request #307 from CartoDB/306-fix-cannot-read-undefined-layer
306 fix cannot read undefined layer
2 parents 4d2540e + 62bc50b commit 63e70d1

File tree

3 files changed

+48
-8
lines changed

3 files changed

+48
-8
lines changed

NEWS

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
3.1.0 (2019-mm-dd)
2-
1+
3.1.1 (2019-06-21)
2+
- Fixed reading undefined layer #306
33

44
3.1.0 (2019-04-02)
55
- Upgrade canvas to version 2.4.1

lib/torque/renderer/point.js

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,12 @@ var CartoDatasource = require('./datasource');
5757
return COMP_OP_TO_CANVAS[compop] || compop;
5858
}
5959

60+
// Take an input cartocss that may contain comments and remove them
61+
var COMMENTS_RE = /\/\*.*?\*\/\n?/mg;
62+
function stripComments(cartocss) {
63+
return cartocss.replace(COMMENTS_RE, '');
64+
}
65+
6066
//
6167
// this renderer just render points depending of the value
6268
//
@@ -73,8 +79,7 @@ var CartoDatasource = require('./datasource');
7379
this._icons = {};
7480
this._iconsToLoad = 0;
7581
this._filters = new Filters(this._canvas, {canvasClass: options.canvasClass});
76-
this.style = this.options.cartocss || DEFAULT_CARTOCSS;
77-
this.setCartoCSS(this.style);
82+
this.setCartoCSS(this.options.cartocss || DEFAULT_CARTOCSS);
7883
this.TILE_SIZE = 256;
7984
this._style = null;
8085
this._gradients = {};
@@ -116,11 +121,11 @@ var CartoDatasource = require('./datasource');
116121
setCartoCSS: function(cartocss, callback) {
117122
var self = this;
118123

119-
this.style = cartocss;
124+
this.style = stripComments(cartocss);
120125

121-
if (PointRenderer.isTurboCarto(cartocss)) {
126+
if (PointRenderer.isTurboCarto(this.style) && self.layer) {
122127
var datasource = new CartoDatasource(self.layer._tiles);
123-
turbocarto(cartocss, datasource, function (err, parsedCartoCSS) {
128+
turbocarto(this.style, datasource, function (err, parsedCartoCSS) {
124129
if (err) {
125130
return callback(err, null);
126131
}
@@ -131,7 +136,7 @@ var CartoDatasource = require('./datasource');
131136
callback && callback();
132137
});
133138
} else {
134-
self.setShader(new carto.RendererJS().render(cartocss));
139+
self.setShader(new carto.RendererJS().render(this.style));
135140
callback && callback();
136141
}
137142
},

test/renderer/point.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,3 +137,38 @@ test('get values for tile', function() {
137137
equal(v[0], 5);
138138
equal(v[1], 7);
139139
});
140+
141+
test('should deal with no layer and commented out cartocss', function() {
142+
var css = [
143+
'Map {',
144+
' -torque-frame-count: 1;',
145+
' -torque-animation-duration: 30;',
146+
' -torque-time-attribute: "cartodb_id";',
147+
' -torque-aggregation-function: "count(1)";',
148+
' -torque-resolution: 4;',
149+
' -torque-data-aggregation: linear;',
150+
'}',
151+
'#layer {',
152+
' marker-width: 16.6;',
153+
' /*marker-width: ramp([value], range(2, 40), jenks(6));*/',
154+
' marker-fill-opacity: 1;',
155+
' marker-file: url(http://cartodb-libs.global.ssl.fastly.net/cartodbui/assets/unversioned/images/alphamarker.png);',
156+
' marker-allow-overlap: true;',
157+
' marker-line-width: 1;',
158+
' marker-line-color: #FFFFFF;',
159+
' marker-line-opacity: 1;',
160+
' marker-comp-op: darken;',
161+
' image-filters: colorize-alpha(#4b2991,#872ca2,#c0369d,#ea4f88,#fa7876,#f6a97a,#edd9a3);',
162+
'}'
163+
].join('\n');
164+
165+
var canvas = document.createElement('canvas');
166+
var myRenderer = new torque.renderer.Point(canvas, {
167+
layer: undefined
168+
});
169+
170+
myRenderer.setCartoCSS(css);
171+
var shader = renderer._shader.getLayers()[0];
172+
var sprite = myRenderer.generateSprite(shader, 0, { zoom: 0 });
173+
notEqual(sprite, null);
174+
});

0 commit comments

Comments
 (0)