projects
/
dygraphs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of http://github.com/danvk/dygraphs
[dygraphs.git]
/
dygraph.js
diff --git
a/dygraph.js
b/dygraph.js
index
6e9aac7
..
e7cb8f8
100644
(file)
--- a/
dygraph.js
+++ b/
dygraph.js
@@
-182,6
+182,11
@@
Dygraph.prototype.__init__ = function(div, file, attrs) {
this.is_initial_draw_ = true;
this.annotations_ = [];
this.is_initial_draw_ = true;
this.annotations_ = [];
+ // Zoomed indicators - These indicate when the graph has been zoomed and on what axis.
+ this.zoomed = false;
+ this.zoomedX = false;
+ this.zoomedY = false;
+
// Clear the div. This ensure that, if multiple dygraphs are passed the same
// div, then only one will be drawn.
div.innerHTML = "";
// Clear the div. This ensure that, if multiple dygraphs are passed the same
// div, then only one will be drawn.
div.innerHTML = "";
@@
-843,6
+848,14
@@
Dygraph.prototype.createDragInterface_ = function() {
// Track the beginning of drag events
Dygraph.addEvent(this.mouseEventElement_, 'mousedown', function(event) {
// Track the beginning of drag events
Dygraph.addEvent(this.mouseEventElement_, 'mousedown', function(event) {
+ // prevents mouse drags from selecting page text.
+ if (event.preventDefault) {
+ event.preventDefault(); // Firefox, Chrome, etc.
+ } else {
+ event.returnValue = false; // IE
+ event.cancelBubble = true;
+ }
+
px = Dygraph.findPosX(self.canvas_);
py = Dygraph.findPosY(self.canvas_);
dragStartX = getX(event);
px = Dygraph.findPosX(self.canvas_);
py = Dygraph.findPosY(self.canvas_);
dragStartX = getX(event);
@@
-1066,6
+1079,8
@@
Dygraph.prototype.doZoomX_ = function(lowX, highX) {
*/
Dygraph.prototype.doZoomXDates_ = function(minDate, maxDate) {
this.dateWindow_ = [minDate, maxDate];
*/
Dygraph.prototype.doZoomXDates_ = function(minDate, maxDate) {
this.dateWindow_ = [minDate, maxDate];
+ this.zoomed = true;
+ this.zoomedX = true;
this.drawGraph_();
if (this.attr_("zoomCallback")) {
var yRange = this.yAxisRange();
this.drawGraph_();
if (this.attr_("zoomCallback")) {
var yRange = this.yAxisRange();
@@
-1094,10
+1109,13
@@
Dygraph.prototype.doZoomY_ = function(lowY, highY) {
valueRanges.push([low[1], hi[1]]);
}
valueRanges.push([low[1], hi[1]]);
}
+ this.zoomed = true;
+ this.zoomedY = true;
this.drawGraph_();
if (this.attr_("zoomCallback")) {
var xRange = this.xAxisRange();
this.drawGraph_();
if (this.attr_("zoomCallback")) {
var xRange = this.xAxisRange();
- this.attr_("zoomCallback")(xRange[0], xRange[1], this.yAxisRanges());
+ var yRange = this.yAxisRange();
+ this.attr_("zoomCallback")(xRange[0], xRange[1], yRange[0], yRange[1]);
}
};
}
};
@@
-1124,6
+1142,9
@@
Dygraph.prototype.doUnzoom_ = function() {
if (dirty) {
// Putting the drawing operation before the callback because it resets
// yAxisRange.
if (dirty) {
// Putting the drawing operation before the callback because it resets
// yAxisRange.
+ this.zoomed = false;
+ this.zoomedX = false;
+ this.zoomedY = false;
this.drawGraph_();
if (this.attr_("zoomCallback")) {
var minDate = this.rawData_[0][0];
this.drawGraph_();
if (this.attr_("zoomCallback")) {
var minDate = this.rawData_[0][0];
@@
-1962,6
+1983,15
@@
Dygraph.prototype.drawGraph_ = function() {
* indices are into the axes_ array.
*/
Dygraph.prototype.computeYAxes_ = function() {
* indices are into the axes_ array.
*/
Dygraph.prototype.computeYAxes_ = function() {
+ var valueWindow;
+ if (this.axes_ != undefined) {
+ // Preserve valueWindow settings.
+ valueWindow = [];
+ for (var index = 0; index < this.axes_.length; index++) {
+ valueWindow.push(this.axes_[index].valueWindow);
+ }
+ }
+
this.axes_ = [{}]; // always have at least one y-axis.
this.seriesToAxisMap_ = {};
this.axes_ = [{}]; // always have at least one y-axis.
this.seriesToAxisMap_ = {};
@@
-2034,6
+2064,13
@@
Dygraph.prototype.computeYAxes_ = function() {
if (vis[i - 1]) seriesToAxisFiltered[s] = this.seriesToAxisMap_[s];
}
this.seriesToAxisMap_ = seriesToAxisFiltered;
if (vis[i - 1]) seriesToAxisFiltered[s] = this.seriesToAxisMap_[s];
}
this.seriesToAxisMap_ = seriesToAxisFiltered;
+
+ if (valueWindow != undefined) {
+ // Restore valueWindow settings.
+ for (var index = 0; index < valueWindow.length; index++) {
+ this.axes_[index].valueWindow = valueWindow[index];
+ }
+ }
};
/**
};
/**
@@
-2820,7
+2857,7
@@
Dygraph.prototype.visibility = function() {
*/
Dygraph.prototype.setVisibility = function(num, value) {
var x = this.visibility();
*/
Dygraph.prototype.setVisibility = function(num, value) {
var x = this.visibility();
- if (num < 0
&&
num >= x.length) {
+ if (num < 0
||
num >= x.length) {
this.warn("invalid series number in setVisibility: " + num);
} else {
x[num] = value;
this.warn("invalid series number in setVisibility: " + num);
} else {
x[num] = value;
@@
-2914,7
+2951,14
@@
Dygraph.GVizChart = function(container) {
}
Dygraph.GVizChart.prototype.draw = function(data, options) {
}
Dygraph.GVizChart.prototype.draw = function(data, options) {
+ // Clear out any existing dygraph.
+ // TODO(danvk): would it make more sense to simply redraw using the current
+ // date_graph object?
this.container.innerHTML = '';
this.container.innerHTML = '';
+ if (typeof(this.date_graph) != 'undefined') {
+ this.date_graph.destroy();
+ }
+
this.date_graph = new Dygraph(this.container, data, options);
}
this.date_graph = new Dygraph(this.container, data, options);
}