Merge branch 'master' into per_series
[dygraphs.git] / dygraph-canvas.js
index 123fa83..8d3bfe2 100644 (file)
@@ -41,9 +41,9 @@ DygraphLayout.prototype.setAnnotations = function(ann) {
       return;
     }
     if (ann[i].icon &&
-        !(ann[i].hasOwnProperty('iconWidth') &&
-          ann[i].hasOwnProperty('iconHeight'))) {
-      this.dygraph_.error("Must set iconWidth and iconHeight when setting " +
+        !(ann[i].hasOwnProperty('width') &&
+          ann[i].hasOwnProperty('height'))) {
+      this.dygraph_.error("Must set width and height when setting " +
                           "annotation.icon property");
       return;
     }
@@ -501,7 +501,7 @@ DygraphCanvasRenderer.prototype._renderAnnotations = function() {
     "position": "absolute",
     "fontSize": this.options.axisLabelFontSize + "px",
     "zIndex": 10,
-    "overflow": "hidden",
+    "overflow": "hidden"
   };
 
   var bindEvt = function(eventName, classEventName, p, self) {
@@ -547,14 +547,18 @@ DygraphCanvasRenderer.prototype._renderAnnotations = function() {
     if (a.hasOwnProperty('icon')) {
       var img = document.createElement("img");
       img.src = a.icon;
-      img.width = width = a.iconWidth;
-      img.height = height = a.iconHeight;
+      img.width = width;
+      img.height = height;
       div.appendChild(img);
     } else if (p.annotation.hasOwnProperty('shortText')) {
       div.appendChild(document.createTextNode(p.annotation.shortText));
     }
     div.style.left = (p.canvasx - width / 2) + "px";
-    div.style.top = (p.canvasy - height - tick_height) + "px";
+    if (a.attachAtBottom) {
+      div.style.top = (this.area.h - height - tick_height) + "px";
+    } else {
+      div.style.top = (p.canvasy - height - tick_height) + "px";
+    }
     div.style.width = width + "px";
     div.style.height = height + "px";
     div.title = p.annotation.text;
@@ -577,8 +581,13 @@ DygraphCanvasRenderer.prototype._renderAnnotations = function() {
     var ctx = this.element.getContext("2d");
     ctx.strokeStyle = this.colors[p.name];
     ctx.beginPath();
-    ctx.moveTo(p.canvasx, p.canvasy);
-    ctx.lineTo(p.canvasx, p.canvasy - 2 - tick_height);
+    if (!a.attachAtBottom) {
+      ctx.moveTo(p.canvasx, p.canvasy);
+      ctx.lineTo(p.canvasx, p.canvasy - 2 - tick_height);
+    } else {
+      ctx.moveTo(p.canvasx, this.area.h);
+      ctx.lineTo(p.canvasx, this.area.h - 2 - tick_height);
+    }
     ctx.closePath();
     ctx.stroke();
   }