multiple fixes
This commit is contained in:
parent
87c09a81d2
commit
cf23d6c5b2
@ -82,6 +82,11 @@
|
|||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
steps: function(_) {
|
||||||
|
this.options.steps = _;
|
||||||
|
return this.rescale();
|
||||||
|
},
|
||||||
|
|
||||||
step: function(s) {
|
step: function(s) {
|
||||||
if(arguments.length === 0) return this.range(this.domain(this._time));
|
if(arguments.length === 0) return this.range(this.domain(this._time));
|
||||||
this._time = this.domainInv(this.rangeInv(s));
|
this._time = this.domainInv(this.rangeInv(s));
|
||||||
|
@ -28,7 +28,11 @@
|
|||||||
for(var i = 0; c && i < c.length; ++i) {
|
for(var i = 0; c && i < c.length; ++i) {
|
||||||
if(c[i] === callback) remove.push(i);
|
if(c[i] === callback) remove.push(i);
|
||||||
}
|
}
|
||||||
while(i = remove.pop()) c.splice(i, 1);
|
while((i = remove.pop()) !== undefined) c.splice(i, 1);
|
||||||
|
};
|
||||||
|
|
||||||
|
Event.callbacks = function(evt) {
|
||||||
|
return (this._evt_callbacks && this._evt_callbacks[evt]) || [];
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.torque.Event = Event;
|
exports.torque.Event = Event;
|
||||||
|
@ -444,7 +444,6 @@ CanvasLayer.prototype.repositionCanvas_ = function() {
|
|||||||
var projection = this.getProjection();
|
var projection = this.getProjection();
|
||||||
var divTopLeft = projection.fromLatLngToDivPixel(this.topLeft_);
|
var divTopLeft = projection.fromLatLngToDivPixel(this.topLeft_);
|
||||||
|
|
||||||
console.log(this.topLeft_.lng(), divTopLeft.x);
|
|
||||||
// when the zoom level is low, more than one map can be shown in the screen
|
// when the zoom level is low, more than one map can be shown in the screen
|
||||||
// so the canvas should be attach to the map with more are in the screen
|
// so the canvas should be attach to the map with more are in the screen
|
||||||
var mapSize = (1 << this.getMap().getZoom())*256;
|
var mapSize = (1 << this.getMap().getZoom())*256;
|
||||||
|
@ -27,6 +27,7 @@ function GMapsTorqueLayer(options) {
|
|||||||
this.pause = this.animator.pause.bind(this.animator);
|
this.pause = this.animator.pause.bind(this.animator);
|
||||||
this.toggle = this.animator.toggle.bind(this.animator);
|
this.toggle = this.animator.toggle.bind(this.animator);
|
||||||
this.setDuration = this.animator.duration.bind(this.animator);
|
this.setDuration = this.animator.duration.bind(this.animator);
|
||||||
|
this.isRunning = this.animator.isRunning.bind(this.animator);
|
||||||
|
|
||||||
|
|
||||||
CanvasLayer.call(this, {
|
CanvasLayer.call(this, {
|
||||||
@ -80,6 +81,15 @@ GMapsTorqueLayer.prototype = _.extend({},
|
|||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
setSQL: function(sql) {
|
||||||
|
if (!this.provider || !this.provider.setSQL) {
|
||||||
|
throw new Error("this provider does not support SQL");
|
||||||
|
}
|
||||||
|
this.provider.setSQL(sql);
|
||||||
|
this._reloadTiles();
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
setBlendMode: function(_) {
|
setBlendMode: function(_) {
|
||||||
this.renderer.setBlendMode(_);
|
this.renderer.setBlendMode(_);
|
||||||
this.redraw();
|
this.redraw();
|
||||||
@ -87,6 +97,7 @@ GMapsTorqueLayer.prototype = _.extend({},
|
|||||||
|
|
||||||
setSteps: function(steps) {
|
setSteps: function(steps) {
|
||||||
this.provider.setSteps(steps);
|
this.provider.setSteps(steps);
|
||||||
|
this.animator.steps(steps);
|
||||||
this._reloadTiles();
|
this._reloadTiles();
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -95,6 +106,10 @@ GMapsTorqueLayer.prototype = _.extend({},
|
|||||||
this._reloadTiles();
|
this._reloadTiles();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getTimeBounds: function() {
|
||||||
|
return this.provider && this.provider.getKeySpan();
|
||||||
|
},
|
||||||
|
|
||||||
getCanvas: function() {
|
getCanvas: function() {
|
||||||
return this.canvas;
|
return this.canvas;
|
||||||
},
|
},
|
||||||
@ -161,7 +176,7 @@ GMapsTorqueLayer.prototype = _.extend({},
|
|||||||
if (!this.provider) return 0;
|
if (!this.provider) return 0;
|
||||||
var times = this.provider.getKeySpan();
|
var times = this.provider.getKeySpan();
|
||||||
var time = times.start + (times.end - times.start)*(step/this.options.steps);
|
var time = times.start + (times.end - times.start)*(step/this.options.steps);
|
||||||
return new Date(time*1000);
|
return new Date(time);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -12,7 +12,7 @@ L.Mixin.TileLoader = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_removeTileLoader: function() {
|
_removeTileLoader: function() {
|
||||||
map.off({
|
this._map.off({
|
||||||
'moveend': this._updateTiles
|
'moveend': this._updateTiles
|
||||||
}, this);
|
}, this);
|
||||||
this._removeTiles();
|
this._removeTiles();
|
||||||
|
@ -34,6 +34,7 @@ L.TorqueLayer = L.CanvasLayer.extend({
|
|||||||
this.pause = this.animator.pause.bind(this.animator);
|
this.pause = this.animator.pause.bind(this.animator);
|
||||||
this.toggle = this.animator.toggle.bind(this.animator);
|
this.toggle = this.animator.toggle.bind(this.animator);
|
||||||
this.setDuration = this.animator.duration.bind(this.animator);
|
this.setDuration = this.animator.duration.bind(this.animator);
|
||||||
|
this.isRunning = this.animator.isRunning.bind(this.animator);
|
||||||
|
|
||||||
|
|
||||||
L.CanvasLayer.prototype.initialize.call(this, options);
|
L.CanvasLayer.prototype.initialize.call(this, options);
|
||||||
@ -58,6 +59,15 @@ L.TorqueLayer = L.CanvasLayer.extend({
|
|||||||
this._removeTileLoader();
|
this._removeTileLoader();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
setSQL: function(sql) {
|
||||||
|
if (!this.provider || !this.provider.setSQL) {
|
||||||
|
throw new Error("this provider does not support SQL");
|
||||||
|
}
|
||||||
|
this.provider.setSQL(sql);
|
||||||
|
this._reloadTiles();
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
setBlendMode: function(_) {
|
setBlendMode: function(_) {
|
||||||
this.renderer.setBlendMode(_);
|
this.renderer.setBlendMode(_);
|
||||||
this.redraw();
|
this.redraw();
|
||||||
@ -65,6 +75,7 @@ L.TorqueLayer = L.CanvasLayer.extend({
|
|||||||
|
|
||||||
setSteps: function(steps) {
|
setSteps: function(steps) {
|
||||||
this.provider.setSteps(steps);
|
this.provider.setSteps(steps);
|
||||||
|
this.animator.steps(steps);
|
||||||
this._reloadTiles();
|
this._reloadTiles();
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -73,6 +84,11 @@ L.TorqueLayer = L.CanvasLayer.extend({
|
|||||||
this._reloadTiles();
|
this._reloadTiles();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getTimeBounds: function() {
|
||||||
|
return this.provider && this.provider.getKeySpan();
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* render the selectef key
|
* render the selectef key
|
||||||
* don't call this function directly, it's called by
|
* don't call this function directly, it's called by
|
||||||
@ -125,7 +141,7 @@ L.TorqueLayer = L.CanvasLayer.extend({
|
|||||||
stepToTime: function(step) {
|
stepToTime: function(step) {
|
||||||
var times = this.provider.getKeySpan();
|
var times = this.provider.getKeySpan();
|
||||||
var time = times.start + (times.end - times.start)*(step/this.options.steps);
|
var time = times.start + (times.end - times.start)*(step/this.options.steps);
|
||||||
return new Date(time*1000);
|
return new Date(time);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -152,9 +152,9 @@
|
|||||||
options = options || {};
|
options = options || {};
|
||||||
torque.net.get(this.url() + "?q=" + encodeURIComponent(sql) + (extra ? "&" + extra: ''), function (data) {
|
torque.net.get(this.url() + "?q=" + encodeURIComponent(sql) + (extra ? "&" + extra: ''), function (data) {
|
||||||
if(options.parseJSON) {
|
if(options.parseJSON) {
|
||||||
data = JSON.parse(data.responseText);
|
data = JSON.parse(data && data.responseText);
|
||||||
}
|
}
|
||||||
callback(data);
|
callback && callback(data);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -203,7 +203,7 @@
|
|||||||
" SELECT ST_SnapToGrid(i.the_geom_webmercator, p.res) g" +
|
" SELECT ST_SnapToGrid(i.the_geom_webmercator, p.res) g" +
|
||||||
", {countby} c" +
|
", {countby} c" +
|
||||||
", floor(({column_conv} - {start})/{step}) d" +
|
", floor(({column_conv} - {start})/{step}) d" +
|
||||||
" FROM {table} i, par p " +
|
" FROM ({_sql}) i, par p " +
|
||||||
" WHERE i.the_geom_webmercator && p.ext " +
|
" WHERE i.the_geom_webmercator && p.ext " +
|
||||||
" GROUP BY g, d" +
|
" GROUP BY g, d" +
|
||||||
") " +
|
") " +
|
||||||
@ -218,7 +218,8 @@
|
|||||||
zoom: zoom,
|
zoom: zoom,
|
||||||
x: coord.x,
|
x: coord.x,
|
||||||
y: coord.y,
|
y: coord.y,
|
||||||
column_conv: column_conv
|
column_conv: column_conv,
|
||||||
|
_sql: this.getSQL()
|
||||||
});
|
});
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
@ -244,6 +245,14 @@
|
|||||||
this._fetchKeySpan();
|
this._fetchKeySpan();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
setSQL: function(sql) {
|
||||||
|
if (this.options.sql != sql) {
|
||||||
|
this.options.sql = sql;
|
||||||
|
this._ready = false;
|
||||||
|
this._fetchKeySpan();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
setSteps: function(steps) {
|
setSteps: function(steps) {
|
||||||
if (this.options.steps !== steps) {
|
if (this.options.steps !== steps) {
|
||||||
this.options.steps = steps;
|
this.options.steps = steps;
|
||||||
@ -255,6 +264,10 @@
|
|||||||
return this.options.bounds;
|
return this.options.bounds;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getSQL: function() {
|
||||||
|
return this.options.sql || "select * from " + this.options.table;
|
||||||
|
},
|
||||||
|
|
||||||
//
|
//
|
||||||
// the data range could be set by the user though ``start``
|
// the data range could be set by the user though ``start``
|
||||||
// option. It can be fecthed from the table when the start
|
// option. It can be fecthed from the table when the start
|
||||||
@ -263,9 +276,13 @@
|
|||||||
_fetchKeySpan: function() {
|
_fetchKeySpan: function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
var max_col, min_col, max_tmpl, min_tmpl;
|
var max_col, min_col, max_tmpl, min_tmpl;
|
||||||
var query = format("select {column} from {table} limit 0", this.options);
|
var query = format("select {column} from ({sql}) __torque_wrap_sql limit 0", {
|
||||||
|
column: this.options.column,
|
||||||
|
sql: self.getSQL()
|
||||||
|
});
|
||||||
|
|
||||||
this.sql(query, function (data) {
|
this.sql(query, function (data) {
|
||||||
|
if (!data) return;
|
||||||
self.options.is_time = data.fields[self.options.column].type === 'date';
|
self.options.is_time = data.fields[self.options.column].type === 'date';
|
||||||
|
|
||||||
if (self.options.is_time){
|
if (self.options.is_time){
|
||||||
@ -279,10 +296,10 @@
|
|||||||
max_col = format(max_tmpl, { column: self.options.column });
|
max_col = format(max_tmpl, { column: self.options.column });
|
||||||
min_col = format(min_tmpl, { column: self.options.column });
|
min_col = format(min_tmpl, { column: self.options.column });
|
||||||
|
|
||||||
var sql = format("SELECT st_xmax(st_envelope(st_collect(the_geom))) xmax,st_ymax(st_envelope(st_collect(the_geom))) ymax, st_xmin(st_envelope(st_collect(the_geom))) xmin, st_ymin(st_envelope(st_collect(the_geom))) ymin, {max_col} max, {min_col} min FROM {table}", {
|
var sql = format("SELECT st_xmax(st_envelope(st_collect(the_geom))) xmax,st_ymax(st_envelope(st_collect(the_geom))) ymax, st_xmin(st_envelope(st_collect(the_geom))) xmin, st_ymin(st_envelope(st_collect(the_geom))) ymin, {max_col} max, {min_col} min FROM ({sql}) __torque_wrap_sql", {
|
||||||
max_col: max_col,
|
max_col: max_col,
|
||||||
min_col: min_col,
|
min_col: min_col,
|
||||||
table: self.options.table
|
sql: self.getSQL()
|
||||||
});
|
});
|
||||||
|
|
||||||
self.sql(sql, function(data) {
|
self.sql(sql, function(data) {
|
||||||
|
@ -3,6 +3,7 @@ var json, url;
|
|||||||
module('provider.json')
|
module('provider.json')
|
||||||
QUnit.testStart(function() {
|
QUnit.testStart(function() {
|
||||||
json = new torque.providers.json({
|
json = new torque.providers.json({
|
||||||
|
table: 'test',
|
||||||
user: "rambo",
|
user: "rambo",
|
||||||
resolution: 1,
|
resolution: 1,
|
||||||
steps: 10,
|
steps: 10,
|
||||||
@ -22,5 +23,14 @@ QUnit.testStart(function() {
|
|||||||
equal(torque.net.lastCall().url, url);
|
equal(torque.net.lastCall().url, url);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("getSQL", function() {
|
||||||
|
var s;
|
||||||
|
equal(json.getSQL(), "select * from test");
|
||||||
|
json.setSQL(s='select * from test limit 10');
|
||||||
|
equal(json.getSQL(), s);
|
||||||
|
json.setSQL(null);
|
||||||
|
equal(json.getSQL(), "select * from test");
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
<script src="../lib/torque/provider.json.js"></script>
|
<script src="../lib/torque/provider.json.js"></script>
|
||||||
|
|
||||||
<script src="data/torque.array.json"></script>
|
<script src="data/torque.array.json"></script>
|
||||||
|
<script src="core.js"></script>
|
||||||
<script src="provider.jsonarray.js"></script>
|
<script src="provider.jsonarray.js"></script>
|
||||||
<script src="provider.json.js"></script>
|
<script src="provider.json.js"></script>
|
||||||
</body>
|
</body>
|
||||||
|
Loading…
Reference in New Issue
Block a user