first stab at keying DygraphLayout.points on setIdx
[dygraphs.git] / plugins / legend.js
index d63f080..85424c6 100644 (file)
@@ -1,3 +1,9 @@
+/**
+ * @license
+ * Copyright 2012 Dan Vanderkam (danvdk@gmail.com)
+ * MIT-licensed (http://opensource.org/licenses/MIT)
+ */
+
 Dygraph.Plugins.Legend = (function() {
 
 /*
@@ -88,13 +94,14 @@ legend.prototype.activate = function(g) {
   }
 
   this.legend_div_ = div;
+  this.one_em_width_ = 10;  // just a guess, will be updated.
 
   return {
     select: this.select,
     deselect: this.deselect,
     // TODO(danvk): rethink the name "predraw" before we commit to it in any API.
     predraw: this.predraw,
-    drawChart: this.drawChart
+    didDrawChart: this.didDrawChart
   };
 };
 
@@ -112,21 +119,20 @@ legend.prototype.select = function(e) {
   var xValue = e.selectedX;
   var points = e.selectedPoints;
 
-  // Have to do this every time, since styles might have changed.
-  // TODO(danvk): this is not necessary; dashes never used in this case.
-  var oneEmWidth = calculateEmWidthInDiv(this.legend_div_);
-
-  var html = generateLegendHTML(e.dygraph, xValue, points, oneEmWidth);
+  var html = generateLegendHTML(e.dygraph, xValue, points, this.one_em_width_);
   this.legend_div_.innerHTML = html;
 };
 
 legend.prototype.deselect = function(e) {
+  // Have to do this every time, since styles might have changed.
   var oneEmWidth = calculateEmWidthInDiv(this.legend_div_);
+  this.one_em_width_ = oneEmWidth;
+
   var html = generateLegendHTML(e.dygraph, undefined, undefined, oneEmWidth);
   this.legend_div_.innerHTML = html;
 };
 
-legend.prototype.drawChart = function(e) {
+legend.prototype.didDrawChart = function(e) {
   this.deselect(e);
 }
 
@@ -203,7 +209,10 @@ var generateLegendHTML = function(g, x, sel_points, oneEmWidth) {
   // TODO(danvk): remove this use of a private API
   var xOptView = g.optionsViewForAxis_('x');
   var xvf = xOptView('valueFormatter');
-  html = xvf(x, xOptView, labels[0], g) + ":";
+  html = xvf(x, xOptView, labels[0], g);
+  if(html !== '') {
+       html += ':';
+  }
 
   var yOptViews = [];
   var num_axes = g.numAxes();