div = document.createElement("div");
div.style.position = 'absolute';
if (axis == 1) {
- div.style.left = box.left;
+ // NOTE: this is cheating. Should be positioned relative to the box.
+ div.style.left = '0px';
} else {
- div.style.right = box.left;
+ div.style.left = box.x + 'px';
}
- div.style.top = box.top + 'px';
- div.style.width = box.width + 'px';
- div.style.height = box.height + 'px';
+ div.style.top = box.y + 'px';
+ div.style.width = box.w + 'px';
+ div.style.height = box.h + 'px';
div.style.fontSize = (g.getOption('yLabelWidth') - 2) + 'px';
var inner_div = document.createElement("div");
inner_div.style.position = 'absolute';
- inner_div.style.width = box.height + 'px';
- inner_div.style.height = box.width + 'px';
- inner_div.style.top = (box.height / 2 - box.width / 2) + 'px';
- inner_div.style.left = (box.width / 2 - box.height / 2) + 'px';
+ inner_div.style.width = box.h + 'px';
+ inner_div.style.height = box.w + 'px';
+ inner_div.style.top = (box.h / 2 - box.w / 2) + 'px';
+ inner_div.style.left = (box.w / 2 - box.h / 2) + 'px';
inner_div.style.textAlign = 'center';
// CSS rotation is an HTML5 feature which is not standardized. Hence every
// QUESTION: should this return an absolutely-positioned div instead?
var title_rect = e.reserveSpaceTop(g.getOption('titleHeight'));
this.title_div_ = createDivInRect(title_rect);
- this.title_div_.className = 'dygraph-label dygraph-title';
- this.title_div_.innerHTML = g.getOption('title');
this.title_div_.style.textAlign = 'center';
this.title_div_.style.fontSize = (g.getOption('titleHeight') - 8) + 'px';
this.title_div_.style.fontWeight = 'bold';
+
+ var class_div = document.createElement("div");
+ class_div.className = 'dygraph-label dygraph-title';
+ class_div.innerHTML = g.getOption('title');
+ this.title_div_.appendChild(class_div);
div.appendChild(this.title_div_);
}
+ if (g.getOption('xlabel')) {
+ var x_rect = e.reserveSpaceBottom(g.getOption('xLabelHeight'));
+ this.xlabel_div_ = createDivInRect(x_rect);
+ this.xlabel_div_.style.textAlign = 'center';
+ this.xlabel_div_.style.fontSize = (g.getOption('xLabelHeight') - 2) + 'px';
+
+ var class_div = document.createElement("div");
+ class_div.className = 'dygraph-label dygraph-xlabel';
+ class_div.innerHTML = g.getOption('xlabel');
+ this.xlabel_div_.appendChild(class_div);
+ div.appendChild(this.xlabel_div_);
+ }
+
if (g.getOption('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
div.appendChild(this.ylabel_div_);
}
- /*
- if (g.getOption('xlabel')) {
- var x_rect = e.reserveSpaceBottom(g.getOption('xLabelHeight'));
- }
-
- if (g.getOption('y2label')) {
+ if (g.getOption('y2label') && g.numAxes() == 2) {
+ // same logic applies here as for ylabel.
var y2_rect = e.reserveSpaceRight(0);
+ this.y2label_div_ = createRotatedDiv(
+ g, y2_rect,
+ 2, // secondary (right) y-axis
+ 'dygraph-label dygraph-y2label',
+ g.getOption('y2label'));
+ div.appendChild(this.y2label_div_);
}
- */
};
chart_labels.prototype.drawChart = function(e) {
var g = e.dygraph;
if (this.title_div_) {
- this.title_div_.innerHTML = g.getOption('title');
+ this.title_div_.children[0].innerHTML = g.getOption('title');
+ }
+ if (this.xlabel_div_) {
+ this.xlabel_div_.children[0].innerHTML = g.getOption('xlabel');
}
if (this.ylabel_div_) {
- // this.ylabel_div_.
+ this.ylabel_div_.children[0].children[0].innerHTML = g.getOption('ylabel');
+ }
+ if (this.y2label_div_) {
+ this.y2label_div_.children[0].children[0].innerHTML = g.getOption('y2label');
}
};