From 8c31c7db4c13940f8a6bbab254a72a7991ae82ee Mon Sep 17 00:00:00 2001 From: Boivin Benoit Date: Wed, 11 Jun 2014 15:27:05 +0200 Subject: [PATCH] Now considering the issue as a bug, adding an auto_test (might be wrong) --- auto_tests/misc/local.html | 1 + auto_tests/tests/fill_step_plot.js | 59 ++++++++++++++++++++++++++++++++++++ dygraph-canvas.js | 10 ++----- dygraph-options-reference.js | 6 ---- dygraph.js | 1 - tests/fillStepPlot.html | 61 -------------------------------------- 6 files changed, 63 insertions(+), 75 deletions(-) create mode 100644 auto_tests/tests/fill_step_plot.js delete mode 100644 tests/fillStepPlot.html diff --git a/auto_tests/misc/local.html b/auto_tests/misc/local.html index f356fc5..455b6cb 100644 --- a/auto_tests/misc/local.html +++ b/auto_tests/misc/local.html @@ -30,6 +30,7 @@ + diff --git a/auto_tests/tests/fill_step_plot.js b/auto_tests/tests/fill_step_plot.js new file mode 100644 index 0000000..fb66ad0 --- /dev/null +++ b/auto_tests/tests/fill_step_plot.js @@ -0,0 +1,59 @@ +/** + * @fileoverview Test if you put give null values to dygraph with stepPlot + * and fillGraph options enabled + * + * @author benoitboivin.pro@gmail.com (Benoit Boivin) + */ +var fillStepPlotTestCase = TestCase("fill-step-plot"); + +fillStepPlotTestCase.prototype.setUp = function() { + document.body.innerHTML = "
"; +}; + +fillStepPlotTestCase.origFunc = Dygraph.getContext; + +fillStepPlotTestCase.prototype.setUp = function() { + document.body.innerHTML = "
"; + Dygraph.getContext = function(canvas) { + return new Proxy(fillStepPlotTestCase.origFunc(canvas)); + }; +}; + +fillStepPlotTestCase.prototype.tearDown = function() { + Dygraph.getContext = fillStepPlotTestCase.origFunc; +}; + + +fillStepPlotTestCase.prototype.testFillStepPlotNullValues = function() { + var attrs = {}; + var opts = { + labels: ["x","y"], + width: 480, + height: 320, + fillGraph: true, + stepPlot: true + }; + var data = [ + [1,3], + [2,0], + [3,8], + [4,null], + [5,9], + [6,8], + [7,6], + [8,3] + ]; + var graph = document.getElementById("graph"); + var g = new Dygraph(graph, data, opts); + + htx = g.hidden_ctx_; + var x1 = data[3][0]; + var y1 = data[2][1]; + var x2 = data[3][0]; + var y2 = 0; + var xy1 = g.toDomCoords(x1, y1); + var xy2 = g.toDomCoords(x2, y2); + + // Check if a line is drawn between the previous y and the bottom of the chart + CanvasAssertions.assertLineDrawn(htx, xy1, xy2, attrs); +}; \ No newline at end of file diff --git a/dygraph-canvas.js b/dygraph-canvas.js index b7a49a5..5bfbfbf 100644 --- a/dygraph-canvas.js +++ b/dygraph-canvas.js @@ -691,7 +691,6 @@ DygraphCanvasRenderer._fillPlotter = function(e) { if (!g.getBooleanOption('fillGraph', setName)) continue; var stepPlot = g.getBooleanOption('stepPlot', setName); - var fillStepPlot = stepPlot && g.getBooleanOption("fillStepPlot", setName); var color = colors[setIdx]; var axis = g.axisPropertiesForSeries(setName); var axisY = 1.0 + axis.minyval * axis.yscale; @@ -717,7 +716,7 @@ DygraphCanvasRenderer._fillPlotter = function(e) { var last_x, is_first = true; while (iter.hasNext) { var point = iter.next(); - if (!Dygraph.isOK(point.y) && !fillStepPlot) { + if (!Dygraph.isOK(point.y) && !stepPlot) { prevX = NaN; if (point.y_stacked !== null && !isNaN(point.y_stacked)) { baseline[point.canvasx] = area.h * point.y_stacked + area.y; @@ -758,12 +757,9 @@ DygraphCanvasRenderer._fillPlotter = function(e) { } } else { - if (isNaN(point.canvasy) && fillStepPlot) - { + if (isNaN(point.canvasy) && stepPlot) { newYs = [ area.y + area.h, axisY ]; - } - else - { + } else { newYs = [ point.canvasy, axisY ]; } } diff --git a/dygraph-options-reference.js b/dygraph-options-reference.js index bc0b2f4..3030bc7 100644 --- a/dygraph-options-reference.js +++ b/dygraph-options-reference.js @@ -413,12 +413,6 @@ Dygraph.OPTIONS_REFERENCE = // "type": "boolean", "description": "Should the area underneath the graph be filled? This option is not compatible with error bars. This may be set on a per-series basis." }, - "fillStepPlot": { - "default": "false", - "labels": ["Data Line display"], - "type": "boolean", - "description": "If true, allows the graph to be filled the right way including gaps (only if stepPlot and fillGraph are set true) and ignored if stepPlot is set to false" - }, "highlightCircleSize": { "default": "3", "labels": ["Interactive Elements"], diff --git a/dygraph.js b/dygraph.js index 8a0ee08..9570d3c 100644 --- a/dygraph.js +++ b/dygraph.js @@ -280,7 +280,6 @@ Dygraph.DEFAULT_ATTRS = { customBars: false, fillGraph: false, fillAlpha: 0.15, - fillStepPlot: false, connectSeparatedPoints: false, stackedGraph: false, diff --git a/tests/fillStepPlot.html b/tests/fillStepPlot.html deleted file mode 100644 index 7cc310b..0000000 --- a/tests/fillStepPlot.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - dygraph - - - - - - -

1: Showing the fill problem near the gap due to the null value:

-
- - -

2: Showing the proper fill with the fillStepPlot option:

-
- - - - -- 2.7.4