X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=dygraph.js;h=8858396e8d0cc2df9ea52cd3f973f4b7003f6c21;hb=f18986e594ec54f8402757b9c087f6a20d611b06;hp=386781dec93f9d7ca171f60b055530e116ac3a90;hpb=f6401bf68f1ccec4c891b2b6bf40982fb806b32d;p=dygraphs.git diff --git a/dygraph.js b/dygraph.js index 386781d..8858396 100644 --- a/dygraph.js +++ b/dygraph.js @@ -526,6 +526,7 @@ Dygraph.prototype.createDragInterface_ = function() { // Tracks whether the mouse is down right now var isZooming = false; + var isPanning = false; var dragStartX = null; var dragStartY = null; var dragEndX = null; @@ -569,7 +570,7 @@ Dygraph.prototype.createDragInterface_ = function() { dragStartX = getX(event); dragStartY = getY(event); - if (event.altKey) { + if (event.altKey || event.shiftKey) { if (!self.dateWindow_) return; // have to be zoomed in to pan. isPanning = true; dateRange = self.dateWindow_[1] - self.dateWindow_[0]; @@ -975,7 +976,7 @@ Dygraph.prototype.GetXAxis = function(start_time, end_time, granularity) { if (granularity < Dygraph.MONTHLY) { // Generate one tick mark for every fixed interval of time. var spacing = Dygraph.SHORT_SPACINGS[granularity]; - var format = '%d%b'; // e.g. "1 Jan" + var format = '%d%b'; // e.g. "1Jan" // TODO(danvk): be smarter about making sure this really hits a "nice" time. if (granularity < Dygraph.HOURLY) { start_time = spacing * Math.floor(0.5 + start_time / spacing); @@ -1064,12 +1065,20 @@ Dygraph.numericTicks = function(minV, maxV, self) { // Try labels every 1, 2, 5, 10, 20, 50, 100, etc. // Calculate the resulting tick spacing (i.e. this.height_ / nTicks). // The first spacing greater than pixelsPerYLabel is what we use. - var mults = [1, 2, 5]; + if (self.attr_("labelsKMG2")) { + var mults = [1, 2, 4, 8]; + } else { + var mults = [1, 2, 5]; + } var scale, low_val, high_val, nTicks; // TODO(danvk): make it possible to set this for x- and y-axes independently. var pixelsPerTick = self.attr_('pixelsPerYLabel'); for (var i = -10; i < 50; i++) { - var base_scale = Math.pow(10, i); + if (self.attr_("labelsKMG2")) { + var base_scale = Math.pow(16, i); + } else { + var base_scale = Math.pow(10, i); + } for (var j = 0; j < mults.length; j++) { scale = base_scale * mults[j]; low_val = Math.floor(minV / scale) * scale; @@ -1248,9 +1257,7 @@ Dygraph.prototype.drawGraph_ = function(data) { this.addXTicks_(); // Tell PlotKit to use this new data and render itself - if (this.dateWindow_) { - this.layout_.updateOptions({dateWindow: this.dateWindow_}); - } + this.layout_.updateOptions({dateWindow: this.dateWindow_}); this.layout_.evaluateWithError(); this.plotter_.clear(); this.plotter_.render(); @@ -1638,7 +1645,13 @@ Dygraph.prototype.parseDataTable_ = function(data) { var ret = []; for (var i = 0; i < rows; i++) { var row = []; - if (!data.getValue(i, 0)) continue; + if (typeof(data.getValue(i, 0)) === 'undefined' || + data.getValue(i, 0) === null) { + this.warning("Ignoring row " + i + + " of DataTable because of undefined or null first column."); + continue; + } + if (indepType == 'date') { row.push(data.getValue(i, 0).getTime()); } else {