X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=dygraph.js;h=41145e17fda807e782ad94ca5eec702d6f68ddae;hb=76d2ee984cbebf0bdf6f01269d6ce6449722f1f4;hp=971dd4451327645cfb35ae14c332e3fda691b0d7;hpb=67e650dcfdbb3b8c11a9025456839fa7154704d2;p=dygraphs.git diff --git a/dygraph.js b/dygraph.js index 971dd44..41145e1 100644 --- a/dygraph.js +++ b/dygraph.js @@ -144,7 +144,8 @@ DateGraph.prototype.__init__ = function(div, file, labels, attrs) { this.createRollInterface_(); this.createDragInterface_(); - connect(window, 'onload', this, function(e) { this.start_(); }); + // connect(window, 'onload', this, function(e) { this.start_(); }); + this.start_(); }; /** @@ -257,13 +258,18 @@ DateGraph.prototype.createStatusMessage_ = function(){ */ DateGraph.prototype.createRollInterface_ = function() { var padding = this.plotter_.options.padding; + if (typeof this.attrs_.showRoller == 'undefined') { + this.attrs_.showRoller = false; + } + var display = this.attrs_.showRoller ? "block" : "none"; var textAttr = { "type": "text", "size": "2", "value": this.rollPeriod_, "style": { "position": "absolute", "zIndex": 10, "top": (this.height_ - 25 - padding.bottom) + "px", - "left": (padding.left+1) + "px" } + "left": (padding.left+1) + "px", + "display": display } }; var roller = MochiKit.DOM.INPUT(textAttr); var pa = this.graphDiv; @@ -625,10 +631,15 @@ DateGraph.prototype.dateTicker = function(startDate, endDate) { for (var week = startDate - 14; week < endDate + 14; week += 7) { scale.push(week * ONE_DAY); } - } else { // daily + } else if (dateSpan > 1) { // daily for (var day = startDate - 14; day < endDate + 14; day += 1) { scale.push(day * ONE_DAY); } + } else { // hourly + for (var hour = (startDate - 1) * 24; + hour < (endDate + 1) * 24; hour += 1) { + scale.push(hour * 60*60*1000); + } } var xTicks = []; @@ -847,12 +858,29 @@ DateGraph.prototype.rollingAverage = function(originalData, rollPeriod) { } } } else if (this.customBars_) { - // just ignore the rolling for now. - // TODO(danvk): do something reasonable. + var low = 0; + var mid = 0; + var high = 0; + var count = 0; for (var i = 0; i < originalData.length; i++) { var data = originalData[i][1]; var y = data[1]; rollingData[i] = [originalData[i][0], [y, y - data[0], data[2] - y]]; + + low += data[0]; + mid += y; + high += data[2]; + count += 1; + if (i - rollPeriod >= 0) { + var prev = originalData[i - rollPeriod]; + low -= prev[1][0]; + mid -= prev[1][1]; + high -= prev[1][2]; + count -= 1; + } + rollingData[i] = [originalData[i][0], [ 1.0 * mid / count, + 1.0 * (mid - low) / count, + 1.0 * (high - mid) / count ]]; } } else { // Calculate the rolling average for the first rollPeriod - 1 points where @@ -915,15 +943,21 @@ DateGraph.prototype.rollingAverage = function(originalData, rollPeriod) { */ DateGraph.prototype.dateParser = function(dateStr) { var dateStrSlashed; - if (dateStr.search("-") != -1) { + if (dateStr.length == 10 && dateStr.search("-") != -1) { // e.g. '2009-07-12' dateStrSlashed = dateStr.replace("-", "/", "g"); - } else if (dateStr.search("/") != -1) { - return Date.parse(dateStr); - } else { + while (dateStrSlashed.search("-") != -1) { + dateStrSlashed = dateStrSlashed.replace("-", "/"); + } + return Date.parse(dateStrSlashed); + } else if (dateStr.length == 8) { // e.g. '20090712' dateStrSlashed = dateStr.substr(0,4) + "/" + dateStr.substr(4,2) + "/" + dateStr.substr(6,2); + return Date.parse(dateStrSlashed); + } else { + // Any format that Date.parse will accept, e.g. "2009/07/12" or + // "2009/07/12 12:34:56" + return Date.parse(dateStr); } - return Date.parse(dateStrSlashed); }; /**