Changes due to code review.
authorRobert Konigsberg <konigsberg@google.com>
Fri, 24 Feb 2012 03:19:06 +0000 (22:19 -0500)
committerRobert Konigsberg <konigsberg@google.com>
Fri, 24 Feb 2012 03:19:06 +0000 (22:19 -0500)
auto_tests/tests/callback.js
dygraph-options-reference.js
dygraph-utils.js
dygraph.js
tests/custom-circles.html

index a7266d1..3431070 100644 (file)
@@ -124,10 +124,10 @@ CallbackTestCase.prototype.testDrawPointCallback_pointSize = function() {
  * is properly called when the first series is hidden (setVisibility = false) 
  * 
  */
-CallbackTestCase.prototype.testDrawHighlightCallbackIsCalled = function() {
+CallbackTestCase.prototype.testDrawHighlightPointCallbackIsCalled = function() {
   var called = false;
 
-  var drawHighlightCallback  = function() {
+  var drawHighlightPointCallback  = function() {
     called = true;
   }; 
 
@@ -136,7 +136,7 @@ CallbackTestCase.prototype.testDrawHighlightCallbackIsCalled = function() {
       {
         width: 100,
         height : 100,
-        drawHighlightCallback : drawHighlightCallback
+        drawHighlightPointCallback : drawHighlightPointCallback
       });
 
   assertFalse(called);
index a5869fa..35d6c5f 100644 (file)
@@ -87,7 +87,7 @@ Dygraph.OPTIONS_REFERENCE =  // <JSON>
     "type": "function(event, x, points,row)",
     "description": "When set, this callback gets called every time a new point is highlighted. The parameters are the JavaScript mousemove event, the x-coordinate of the highlighted points and an array of highlighted points: <code>[ {name: 'series', yval: y-value}, &hellip; ]</code>"
   },
-  "drawHighlightCallback": {
+  "drawHighlightPointCallback": {
     "default": "null",
     "labels": ["Data Line display"],
     "type": "function(g, seriesName, canvasContext, cx, cy, color, pointSize)",
index 06eb666..61aba43 100644 (file)
@@ -700,7 +700,7 @@ Dygraph.isPixelChangingOptionList = function(labels, attrs) {
     'clickCallback': true,
     'digitsAfterDecimal': true,
     'drawCallback': true,
-    'drawHighlightCallback': true,
+    'drawHighlightPointCallback': true,
     'drawPoints': true,
     'drawPointCallback': true,
     'drawXGrid': true,
@@ -809,21 +809,23 @@ Dygraph.compareArrays = function(array1, array2) {
 };
 
 /**
- * this.sides: the number of sides in the shape.
- * this.rotation: the shift of the initial angle.
- * this.delta: the angle shift for each line. If missing, creates a regular
+ * ctx: the canvas context
+ * sides: the number of sides in the shape.
+ * radius: the radius of the image.
+ * cx: center x coordate
+ * cy: center y coordinate
+ * rotationRadians: the shift of the initial angle, in radians.
+ * delta: the angle shift for each line. If missing, creates a regular
  *   polygon.
  */
-Dygraph.RegularShape_ = function(sides, rotation, delta) {
-  this.sides = sides;
-  this.rotation = rotation ? rotation : 0;
-  this.delta = delta ? delta : Math.PI * 2 / sides;
-}
+Dygraph.regularShape_ = function(
+    ctx, sides, radius, cx, cy, rotationRadians, delta) {
+  rotationRadians = rotationRadians ? rotationRadians : 0;
+  delta = delta ? delta : Math.PI * 2 / sides;
 
-Dygraph.RegularShape_.prototype.draw = function(ctx, cx, cy, radius) {
   ctx.beginPath();
   var first = true;
-  var initialAngle = this.rotation;
+  var initialAngle = rotationRadians;
   var angle = initialAngle;
 
   var computeCoordinates = function() {
@@ -837,8 +839,8 @@ Dygraph.RegularShape_.prototype.draw = function(ctx, cx, cy, radius) {
   var y = initialCoordinates[1];
   ctx.moveTo(x, y);
 
-  for (var idx = 0; idx < this.sides; idx++) {
-    angle = (idx == this.sides - 1) ? initialAngle : (angle + this.delta);
+  for (var idx = 0; idx < sides; idx++) {
+    angle = (idx == sides - 1) ? initialAngle : (angle + delta);
     var coords = computeCoordinates();
     ctx.lineTo(coords[0], coords[1]);
   }
@@ -846,8 +848,16 @@ Dygraph.RegularShape_.prototype.draw = function(ctx, cx, cy, radius) {
   ctx.closePath();
 }
 
-Dygraph.DrawPolygon_ = function(sides, rotation, ctx, cx, cy, color, radius, delta) {
-  new Dygraph.RegularShape_(sides, rotation, delta).draw(ctx, cx, cy, radius);
+Dygraph.shapeFunction_ = function(sides, rotationRadians, delta) {
+  return function(g, name, ctx, cx, cy, color, radius) {
+    ctx.lineWidth = 1;
+    ctx.strokeStyle = color;
+    Dygraph.regularShape_(ctx, sides, radius, cx, cy, rotationRadians, delta);
+  };
+};
+
+Dygraph.DrawPolygon_ = function(sides, rotationRadians, ctx, cx, cy, color, radius, delta) {
+  new Dygraph.RegularShape_(sides, rotationRadians, delta).draw(ctx, cx, cy, radius);
 }
 
 Dygraph.Circles = {
@@ -857,42 +867,18 @@ Dygraph.Circles = {
     ctx.arc(canvasx, canvasy, radius, 0, 2 * Math.PI, false);
     ctx.fill();
   },
-  TRIANGLE : function(g, name, ctx, cx, cy, color, radius) {
-    ctx.lineWidth = 1;
-    ctx.strokeStyle = color;
-    new Dygraph.RegularShape_(3).draw(ctx, cx, cy, radius);
-  },
-  SQUARE : function(g, name, ctx, cx, cy, color, radius) {
-    ctx.lineWidth = 1;
-    ctx.strokeStyle = color;
-    new Dygraph.RegularShape_(4, Math.PI / 4).draw(ctx, cx, cy, radius);
-  },
-  DIAMOND : function(g, name, ctx, cx, cy, color, radius) {
-    ctx.lineWidth = 1;
-    ctx.strokeStyle = color;
-    new Dygraph.RegularShape_(4).draw(ctx, cx, cy, radius);
-  },
-  PENTAGON : function(g, name, ctx, cx, cy, color, radius) {
-    ctx.lineWidth = 1;
-    ctx.strokeStyle = color;
-    new Dygraph.RegularShape_(5).draw(ctx, cx, cy, radius);
-  },
-  HEXAGON : function(g, name, ctx, cx, cy, color, radius) {
-    ctx.lineWidth = 1;
-    ctx.strokeStyle = color;
-    new Dygraph.RegularShape_(6).draw(ctx, cx, cy, radius);
-  },
+  TRIANGLE : Dygraph.shapeFunction_(3),
+  SQUARE : Dygraph.shapeFunction_(4, Math.PI / 4),
+  DIAMOND : Dygraph.shapeFunction_(4),
+  PENTAGON : Dygraph.shapeFunction_(5),
+  HEXAGON : Dygraph.shapeFunction_(6),
   CIRCLE : function(g, name, ctx, cx, cy, color, radius) {
     ctx.beginPath();
     ctx.strokeStyle = color;
     ctx.arc(cx, cy, radius, 0, 2 * Math.PI, false);
     ctx.stroke();
   },
-  STAR : function(g, name, ctx, cx, cy, color, radius) {
-    ctx.lineWidth = 1;
-    ctx.strokeStyle = color;
-    new Dygraph.RegularShape_(5, 0, 4 * Math.PI / 5).draw(ctx, cx, cy, radius);
-  },
+  STAR : Dygraph.shapeFunction_(5, 0, 4 * Math.PI / 5),
   PLUS : function(g, name, ctx, cx, cy, color, radius) {
     ctx.lineWidth = 1;
     ctx.strokeStyle = color;
index 51d66ba..f5f19d2 100644 (file)
@@ -1753,7 +1753,7 @@ Dygraph.prototype.updateSelection_ = function() {
       if (!Dygraph.isOK(pt.canvasy)) continue;
 
       var circleSize = this.attr_('highlightCircleSize', pt.name);
-      var callback = this.attr_("drawHighlightCallback", pt.name);
+      var callback = this.attr_("drawHighlightPointCallback", pt.name);
       if (!callback) {
         callback = Dygraph.Circles.DEFAULT;
       }
index 6d7caa1..c2f1ab2 100644 (file)
             highlightCircleSize : 8,
             'default' : {
               drawPointCallback : Dygraph.Circles.DEFAULT,
-              drawHighlightCallback : Dygraph.Circles.DEFAULT
+              drawHighlightPointCallback : Dygraph.Circles.DEFAULT
             },
             'triangle' : {
               drawPointCallback : Dygraph.Circles.TRIANGLE,
-              drawHighlightCallback : Dygraph.Circles.TRIANGLE
+              drawHighlightPointCallback : Dygraph.Circles.TRIANGLE
             },
             'square' : {
               drawPointCallback : Dygraph.Circles.SQUARE,
-              drawHighlightCallback : Dygraph.Circles.SQUARE
+              drawHighlightPointCallback : Dygraph.Circles.SQUARE
             },
             'diamond' : {
               drawPointCallback : Dygraph.Circles.DIAMOND,
-              drawHighlightCallback : Dygraph.Circles.DIAMOND
+              drawHighlightPointCallback : Dygraph.Circles.DIAMOND
             },
             'pentagon' : {
               drawPointCallback : Dygraph.Circles.PENTAGON,
-              drawHighlightCallback : Dygraph.Circles.PENTAGON
+              drawHighlightPointCallback : Dygraph.Circles.PENTAGON
             },
             'hexagon' : {
               drawPointCallback : Dygraph.Circles.HEXAGON,
-              drawHighlightCallback : Dygraph.Circles.HEXAGON
+              drawHighlightPointCallback : Dygraph.Circles.HEXAGON
             },
             'circle' : {
               drawPointCallback : Dygraph.Circles.CIRCLE,
-              drawHighlightCallback : Dygraph.Circles.CIRCLE
+              drawHighlightPointCallback : Dygraph.Circles.CIRCLE
             },
             'star' : {
               drawPointCallback : Dygraph.Circles.STAR,
-              drawHighlightCallback : Dygraph.Circles.STAR
+              drawHighlightPointCallback : Dygraph.Circles.STAR
             },
             'plus' : {
               drawPointCallback : Dygraph.Circles.PLUS,
-              drawHighlightCallback : Dygraph.Circles.PLUS
+              drawHighlightPointCallback : Dygraph.Circles.PLUS
             },
             'ex' : {
               drawPointCallback : Dygraph.Circles.EX,
-              drawHighlightCallback : Dygraph.Circles.EX
+              drawHighlightPointCallback : Dygraph.Circles.EX
             },
             'custom' : {
               drawPointCallback : frown,
-              drawHighlightCallback : smile
+              drawHighlightPointCallback : smile
             },
           }
       );