X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=dygraph-canvas.js;h=d4b088eca7f149440d7122e4770cd3989d5f23c0;hb=015b31df6875dddacbb0ce94314382464c2b4d74;hp=4f4a5472ee7b782807b6bc05617e0715cadbdcfa;hpb=48e614acf3084b9836803f8b014bf0e65f1ca119;p=dygraphs.git diff --git a/dygraph-canvas.js b/dygraph-canvas.js index 4f4a547..d4b088e 100644 --- a/dygraph-canvas.js +++ b/dygraph-canvas.js @@ -1,5 +1,8 @@ -// Copyright 2006 Dan Vanderkam (danvdk@gmail.com) -// All Rights Reserved. +/** + * @license + * Copyright 2006 Dan Vanderkam (danvdk@gmail.com) + * MIT-licensed (http://opensource.org/licenses/MIT) + */ /** * @fileoverview Based on PlotKit.CanvasRenderer, but modified to meet the @@ -41,7 +44,7 @@ DygraphCanvasRenderer = function(dygraph, element, elementContext, layout) { this.annotations = new Array(); this.chartLabels = {}; - this.area = this.computeArea_(); + this.area = layout.getPlotArea(); this.container.style.position = "relative"; this.container.style.width = this.width + "px"; @@ -62,56 +65,6 @@ DygraphCanvasRenderer.prototype.attr_ = function(x) { return this.dygraph_.attr_(x); }; -// Compute the box which the chart should be drawn in. This is the canvas's -// box, less space needed for axis and chart labels. -// TODO(danvk): this belongs in DygraphLayout. -DygraphCanvasRenderer.prototype.computeArea_ = function() { - var area = { - // TODO(danvk): per-axis setting. - x: 0, - y: 0 - }; - if (this.attr_('drawYAxis')) { - area.x = this.attr_('yAxisLabelWidth') + 2 * this.attr_('axisTickSize'); - } - - area.w = this.width - area.x - this.attr_('rightGap'); - area.h = this.height; - if (this.attr_('drawXAxis')) { - if (this.attr_('xAxisHeight')) { - area.h -= this.attr_('xAxisHeight'); - } else { - area.h -= this.attr_('axisLabelFontSize') + 2 * this.attr_('axisTickSize'); - } - } - - // Shrink the drawing area to accomodate additional y-axes. - if (this.dygraph_.numAxes() == 2) { - // TODO(danvk): per-axis setting. - area.w -= (this.attr_('yAxisLabelWidth') + 2 * this.attr_('axisTickSize')); - } else if (this.dygraph_.numAxes() > 2) { - this.dygraph_.error("Only two y-axes are supported at this time. (Trying " + - "to use " + this.dygraph_.numAxes() + ")"); - } - - // Add space for chart labels: title, xlabel and ylabel. - if (this.attr_('title')) { - area.h -= this.attr_('titleHeight'); - area.y += this.attr_('titleHeight'); - } - if (this.attr_('xlabel')) { - area.h -= this.attr_('xLabelHeight'); - } - if (this.attr_('ylabel')) { - // It would make sense to shift the chart here to make room for the y-axis - // label, but the default yAxisLabelWidth is large enough that this results - // in overly-padded charts. The y-axis label should fit fine. If it - // doesn't, the yAxisLabelWidth option can be increased. - } - - return area; -}; - DygraphCanvasRenderer.prototype.clear = function() { if (this.isIE) { // VML takes a while to start up, so we just poll every this.IEDelay @@ -237,7 +190,7 @@ DygraphCanvasRenderer.prototype.render = function() { // Do the ordinary rendering, as before this._renderLineChart(); this._renderAxis(); - this._renderChartLabels(); + this._renderChartLabels(); this._renderAnnotations(); }; @@ -258,6 +211,7 @@ DygraphCanvasRenderer.prototype._renderAxis = function() { color: this.attr_('axisLabelColor'), width: this.attr_('axisLabelWidth') + "px", // height: this.attr_('axisLabelFontSize') + 2 + "px", + lineHeight: "normal", // Something other than "normal" line-height screws up label positioning. overflow: "hidden" }; var makeDiv = function(txt, axis, prec_axis) { @@ -599,7 +553,7 @@ DygraphCanvasRenderer.prototype._renderLineChart = function() { var isNullOrNaN = function(x) { return (x === null || isNaN(x)); }; - + // TODO(danvk): use this.attr_ for many of these. var context = this.elementContext; var fillAlpha = this.attr_('fillAlpha');