From 5879307d645ba06bceb1664d33f689888628556c Mon Sep 17 00:00:00 2001 From: Robert Konigsberg Date: Thu, 23 Feb 2012 22:19:06 -0500 Subject: [PATCH] Changes due to code review. --- auto_tests/tests/callback.js | 6 ++-- dygraph-options-reference.js | 2 +- dygraph-utils.js | 76 ++++++++++++++++++-------------------------- dygraph.js | 2 +- tests/custom-circles.html | 22 ++++++------- 5 files changed, 47 insertions(+), 61 deletions(-) diff --git a/auto_tests/tests/callback.js b/auto_tests/tests/callback.js index a7266d1..3431070 100644 --- a/auto_tests/tests/callback.js +++ b/auto_tests/tests/callback.js @@ -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); diff --git a/dygraph-options-reference.js b/dygraph-options-reference.js index a5869fa..35d6c5f 100644 --- a/dygraph-options-reference.js +++ b/dygraph-options-reference.js @@ -87,7 +87,7 @@ Dygraph.OPTIONS_REFERENCE = // "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: [ {name: 'series', yval: y-value}, … ]" }, - "drawHighlightCallback": { + "drawHighlightPointCallback": { "default": "null", "labels": ["Data Line display"], "type": "function(g, seriesName, canvasContext, cx, cy, color, pointSize)", diff --git a/dygraph-utils.js b/dygraph-utils.js index 06eb666..61aba43 100644 --- a/dygraph-utils.js +++ b/dygraph-utils.js @@ -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; diff --git a/dygraph.js b/dygraph.js index 51d66ba..f5f19d2 100644 --- a/dygraph.js +++ b/dygraph.js @@ -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; } diff --git a/tests/custom-circles.html b/tests/custom-circles.html index 6d7caa1..c2f1ab2 100644 --- a/tests/custom-circles.html +++ b/tests/custom-circles.html @@ -79,47 +79,47 @@ 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 }, } ); -- 2.7.4