<script type="text/javascript" src="../tests/date_formats.js"></script>
<script type="text/javascript" src="../tests/dygraph-options-tests.js"></script>
<script type="text/javascript" src="../tests/error_bars.js"></script>
+ <script type="text/javascript" src="../tests/fill_step_plot.js"></script>
<script type="text/javascript" src="../tests/formats.js"></script>
<script type="text/javascript" src="../tests/grid_per_axis.js"></script>
<script type="text/javascript" src="../tests/interaction_model.js"></script>
--- /dev/null
+/**
+ * @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 = "<div id='graph'></div>";
+};
+
+fillStepPlotTestCase.origFunc = Dygraph.getContext;
+
+fillStepPlotTestCase.prototype.setUp = function() {
+ document.body.innerHTML = "<div id='graph'></div>";
+ 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
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;
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;
}
} else {
- if (isNaN(point.canvasy) && fillStepPlot)
- {
+ if (isNaN(point.canvasy) && stepPlot) {
newYs = [ area.y + area.h, axisY ];
- }
- else
- {
+ } else {
newYs = [ point.canvasy, axisY ];
}
}
"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 <a href='per-axis.html'>per-series</a> 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"],
customBars: false,
fillGraph: false,
fillAlpha: 0.15,
- fillStepPlot: false,
connectSeparatedPoints: false,
stackedGraph: false,
+++ /dev/null
-<!DOCTYPE html>
-<html>
- <head>
- <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7; IE=EmulateIE9">
- <title>dygraph</title>
- <!--[if IE]>
- <script type="text/javascript" src="../excanvas.js"></script>
- <![endif]-->
- <!--
- For production (minified) code, use:
- <script type="text/javascript" src="dygraph-combined.js"></script>
- -->
- <script type="text/javascript" src="../dygraph-dev.js"></script>
-
- </head>
- <body>
- <p>1: Showing the fill problem near the gap due to the null value:</p>
- <div id="graph1"></div>
- <script type="text/javascript">
- var g1 = new Dygraph(document.getElementById("graph1"),
- [
- [1,3],
- [2,0],
- [3,8],
- [4,null],
- [5,9],
- [6,8],
- [7,6],
- [8,3]
- ],
- {
- labels: ["x1","y1"],
- fillGraph: true,
- stepPlot: true
- });
- </script>
-
- <p>2: Showing the proper fill with the fillStepPlot option:</p>
- <div id="graph2"></div>
- <script type="text/javascript">
- var g2 = new Dygraph(document.getElementById("graph2"),
- [
- [1,3],
- [2,0],
- [3,8],
- [4,null],
- [5,9],
- [6,8],
- [7,6],
- [8,3]
- ],
- {
- labels: ["x2","y2"],
- fillGraph: true,
- stepPlot: true,
- fillStepPlot: true
- });
- </script>
-
- </body>
-</html>