Prevent labels from wrapping.
[dygraphs.git] / auto_tests / tests / missing_points.js
index 3c52dd0..a78e0ac 100644 (file)
@@ -18,7 +18,7 @@
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
 
-/** 
+/**
  * @fileoverview Test cases for drawing lines with missing points.
  *
  * @author konigsberg@google.com (Robert Konigsberg)
@@ -85,7 +85,7 @@ MissingPointsTestCase.prototype.testSeparatedPointsDontDraw_expanded_connected =
   var num_lines = 0;
 
   assertEquals(3, CanvasAssertions.numLinesDrawn(htx, '#0000ff'));
-  CanvasAssertions.assertConsecutiveLinesDrawn(htx, 
+  CanvasAssertions.assertConsecutiveLinesDrawn(htx,
       [[56, 275], [161, 212], [370, 87], [475, 25]],
       { strokeStyle: '#0000ff' });
 };
@@ -114,12 +114,12 @@ MissingPointsTestCase.prototype.testConnectSeparatedPoints = function() {
   var htx = g.hidden_ctx_;
 
   assertEquals(2, CanvasAssertions.numLinesDrawn(htx, '#0000ff'));
-  CanvasAssertions.assertConsecutiveLinesDrawn(htx, 
+  CanvasAssertions.assertConsecutiveLinesDrawn(htx,
       [[56, 225], [223, 25], [391, 125]],
       { strokeStyle: '#0000ff' });
 
   assertEquals(2, CanvasAssertions.numLinesDrawn(htx, '#ff0000'));
-  CanvasAssertions.assertConsecutiveLinesDrawn(htx, 
+  CanvasAssertions.assertConsecutiveLinesDrawn(htx,
       [[140, 275], [307, 125], [475, 225]],
       { strokeStyle: '#ff0000' });
 };
@@ -155,12 +155,12 @@ MissingPointsTestCase.prototype.testConnectSeparatedPointsWithNan = function() {
 
   // Blue's lines are consecutive, however.
   assertEquals(2, CanvasAssertions.numLinesDrawn(htx, '#0000ff'));
-  CanvasAssertions.assertConsecutiveLinesDrawn(htx, 
+  CanvasAssertions.assertConsecutiveLinesDrawn(htx,
       [[56, 244], [149, 181], [242, 118]],
       { strokeStyle: '#0000ff' });
 };
 
-/* These lines contain awesome powa!  
+/* These lines contain awesome powa!
   var lines = CanvasAssertions.getLinesDrawn(htx, {strokeStyle: "#0000ff"});
   for (var idx = 0; idx < lines.length; idx++) {
     var line = lines[idx];
@@ -188,15 +188,15 @@ MissingPointsTestCase.prototype.testErrorBarsWithMissingPoints = function() {
 
   var htx = g.hidden_ctx_;
 
-  assertEquals(8, CanvasAssertions.numLinesDrawn(htx, '#ff0000'));
+  assertEquals(2, CanvasAssertions.numLinesDrawn(htx, '#ff0000'));
 
   var p0 = g.toDomCoords(data[0][0], data[0][1][0]);
   var p1 = g.toDomCoords(data[1][0], data[1][1][0]);
   var p2 = g.toDomCoords(data[3][0], data[3][1][0]);
   var p3 = g.toDomCoords(data[4][0], data[4][1][0]);
-  CanvasAssertions.assertConsecutiveLinesDrawn(htx, 
+  CanvasAssertions.assertConsecutiveLinesDrawn(htx,
       [p0, p1], { strokeStyle: '#ff0000' });
-  CanvasAssertions.assertConsecutiveLinesDrawn(htx, 
+  CanvasAssertions.assertConsecutiveLinesDrawn(htx,
       [p2, p3], { strokeStyle: '#ff0000' });
 };
 
@@ -221,13 +221,13 @@ MissingPointsTestCase.prototype.testErrorBarsWithMissingPointsConnected = functi
   );
 
   var htx = g.hidden_ctx_;
-  
-  assertEquals(8, CanvasAssertions.numLinesDrawn(htx, '#ff0000'));
+
+  assertEquals(2, CanvasAssertions.numLinesDrawn(htx, '#ff0000'));
 
   var p1 = g.toDomCoords(data[1][0], data[1][1][0]);
   var p2 = g.toDomCoords(data[3][0], data[3][1][0]);
   var p3 = g.toDomCoords(data[5][0], data[5][1][0]);
-  CanvasAssertions.assertConsecutiveLinesDrawn(htx, 
+  CanvasAssertions.assertConsecutiveLinesDrawn(htx,
       [p1, p2, p3],
       { strokeStyle: '#ff0000' });
 };
@@ -257,12 +257,12 @@ MissingPointsTestCase.prototype.testCustomBarsWithMissingPoints = function() {
 
   var htx = g.hidden_ctx_;
 
-  assertEquals(16, CanvasAssertions.numLinesDrawn(htx, '#ff0000'));
+  assertEquals(4, CanvasAssertions.numLinesDrawn(htx, '#ff0000'));
 
   var p0 = g.toDomCoords(data[0][0], data[0][1][1]);
   var p1 = g.toDomCoords(data[1][0], data[1][1][1]);
   CanvasAssertions.assertLineDrawn(htx, p0, p1, { strokeStyle: '#ff0000' });
-  
+
   p0 = g.toDomCoords(data[3][0], data[3][1][1]);
   p1 = g.toDomCoords(data[4][0], data[4][1][1]);
   CanvasAssertions.assertLineDrawn(htx, p0, p1, { strokeStyle: '#ff0000' });
@@ -297,13 +297,74 @@ MissingPointsTestCase.prototype.testCustomBarsWithMissingPointsConnected = funct
   );
 
   var htx = g.hidden_ctx_;
-  
-  assertEquals(8, CanvasAssertions.numLinesDrawn(htx, '#ff0000'));
+
+  assertEquals(2, CanvasAssertions.numLinesDrawn(htx, '#ff0000'));
 
   var p1 = g.toDomCoords(data[1][0], data[1][1][1]);
   var p2 = g.toDomCoords(data[3][0], data[3][1][1]);
   var p3 = g.toDomCoords(data[5][0], data[5][1][1]);
-  CanvasAssertions.assertConsecutiveLinesDrawn(htx, 
+  CanvasAssertions.assertConsecutiveLinesDrawn(htx,
       [p1, p2, p3],
       { strokeStyle: '#ff0000' });
 };
+
+MissingPointsTestCase.prototype.testLeftBoundaryWithMisingPoints = function() {
+  var data = [
+              [1, null, 3],
+              [2, 1, null],
+              [3, 0, 5],
+              [4, 2, 1],
+              [5, 4, null],
+              [6, 3, 2]
+             ];
+  var g = new Dygraph(
+    document.getElementById("graph"),
+    data,
+    {
+      connectSeparatedPoints: true,
+      drawPoints: true,
+      colors: ['red','blue']
+    }
+  );
+  g.updateOptions({ dateWindow : [ 2.5, 4.5 ] });
+  assertEquals(1, g.getLeftBoundary_(0));
+  assertEquals(0, g.getLeftBoundary_(1));
+
+  var domX = g.toDomXCoord(1.9);
+  var closestRow = g.findClosestRow(domX);
+  assertEquals(1, closestRow);
+
+  g.setSelection(closestRow);
+  assertEquals(1, g.selPoints_.length);
+  assertEquals(1, g.selPoints_[0].yval);
+
+  g.setSelection(3);
+  assertEquals(2, g.selPoints_.length);
+  assertEquals(g.selPoints_[0].xval, g.selPoints_[1].xval);
+  assertEquals(2, g.selPoints_[0].yval);
+  assertEquals(1, g.selPoints_[1].yval);
+};
+
+// Regression test for issue #411
+MissingPointsTestCase.prototype.testEmptySeries = function() {
+  var graphDiv = document.getElementById("graph");
+  var g = new Dygraph(
+       graphDiv,
+       "Time,Empty Series,Series 1,Series 2\n" +
+       "1381134460,,0,100\n" +
+       "1381134461,,1,99\n" +
+       "1381134462,,2,98\n" +
+       "1381134463,,3,97\n" +
+       "1381134464,,4,96\n" +
+       "1381134465,,5,95\n" +
+       "1381134466,,6,94\n" +
+       "1381134467,,7,93\n" +
+       "1381134468,,8,92\n" +
+       "1381134469,,9,91\n", {
+           visibility: [true, false, true],
+           dateWindow: [1381134465, 1381134467]
+       });
+
+  g.setSelection(6);
+  assertEquals("1381134466: Series 2: 94", Util.getLegend(graphDiv));
+};