mirror of
https://github.com/morrisjs/morris.js.git
synced 2024-11-10 21:36:34 +01:00
Units labels. Fix commas for negative hundreds.
This commit is contained in:
parent
4fb43d5d37
commit
bcc034e152
@ -28,7 +28,8 @@ Morris.Line({
|
|||||||
data: neg_data,
|
data: neg_data,
|
||||||
xkey: 'period',
|
xkey: 'period',
|
||||||
ykeys: ['a'],
|
ykeys: ['a'],
|
||||||
labels: ['Series A']
|
labels: ['Series A'],
|
||||||
|
units: '%'
|
||||||
});
|
});
|
||||||
</pre>
|
</pre>
|
||||||
</body>
|
</body>
|
||||||
|
@ -59,6 +59,7 @@ class Morris.Line
|
|||||||
smooth: true
|
smooth: true
|
||||||
hideHover: false
|
hideHover: false
|
||||||
parseTime: true
|
parseTime: true
|
||||||
|
units: ''
|
||||||
|
|
||||||
# Do any necessary pre-processing for a new dataset
|
# Do any necessary pre-processing for a new dataset
|
||||||
#
|
#
|
||||||
@ -112,8 +113,8 @@ class Morris.Line
|
|||||||
|
|
||||||
# calculate grid dimensions
|
# calculate grid dimensions
|
||||||
maxYLabelWidth = Math.max(
|
maxYLabelWidth = Math.max(
|
||||||
@measureText(@options.ymin, @options.gridTextSize).width,
|
@measureText(@options.ymin + @options.units, @options.gridTextSize).width,
|
||||||
@measureText(@options.ymax, @options.gridTextSize).width)
|
@measureText(@options.ymax + @options.units, @options.gridTextSize).width)
|
||||||
left = maxYLabelWidth + @options.marginLeft
|
left = maxYLabelWidth + @options.marginLeft
|
||||||
width = @el.width() - left - @options.marginRight
|
width = @el.width() - left - @options.marginRight
|
||||||
height = @el.height() - @options.marginTop - @options.marginBottom
|
height = @el.height() - @options.marginTop - @options.marginBottom
|
||||||
@ -136,7 +137,7 @@ class Morris.Line
|
|||||||
for lineY in [firstY..lastY] by yInterval
|
for lineY in [firstY..lastY] by yInterval
|
||||||
v = Math.floor(lineY)
|
v = Math.floor(lineY)
|
||||||
y = transY(v)
|
y = transY(v)
|
||||||
@r.text(left - @options.marginLeft/2, y, v)
|
@r.text(left - @options.marginLeft/2, y, v + @options.units)
|
||||||
.attr('font-size', @options.gridTextSize)
|
.attr('font-size', @options.gridTextSize)
|
||||||
.attr('fill', @options.gridTextColor)
|
.attr('fill', @options.gridTextColor)
|
||||||
.attr('text-anchor', 'end')
|
.attr('text-anchor', 'end')
|
||||||
@ -205,7 +206,7 @@ class Morris.Line
|
|||||||
hoverSet.show()
|
hoverSet.show()
|
||||||
xLabel.attr('text', @columnLabels[index])
|
xLabel.attr('text', @columnLabels[index])
|
||||||
for i in [0..@series.length-1]
|
for i in [0..@series.length-1]
|
||||||
yLabels[i].attr('text', "#{@seriesLabels[i]}: #{@commas(@series[i][index])}")
|
yLabels[i].attr('text', "#{@seriesLabels[i]}: #{@commas(@series[i][index])}#{@options.units}")
|
||||||
# recalculate hover box width
|
# recalculate hover box width
|
||||||
maxLabelWidth = Math.max.apply null, $.map yLabels, (l) ->
|
maxLabelWidth = Math.max.apply null, $.map yLabels, (l) ->
|
||||||
l.getBBox().width
|
l.getBBox().width
|
||||||
@ -346,7 +347,8 @@ class Morris.Line
|
|||||||
# eg: commas(1234567) -> '1,234,567'
|
# eg: commas(1234567) -> '1,234,567'
|
||||||
#
|
#
|
||||||
commas: (num) ->
|
commas: (num) ->
|
||||||
num.toFixed(0).replace(/(?=(?:\d{3})+$)(?!^)/g, ',')
|
ret = if num < 0 then "-" else ""
|
||||||
|
ret + Math.abs(num).toFixed(0).replace(/(?=(?:\d{3})+$)(?!^)/g, ',')
|
||||||
|
|
||||||
window.Morris = Morris
|
window.Morris = Morris
|
||||||
# vim: set et ts=2 sw=2 sts=2
|
# vim: set et ts=2 sw=2 sts=2
|
||||||
|
13
morris.js
13
morris.js
@ -47,7 +47,8 @@
|
|||||||
hoverFontSize: 12,
|
hoverFontSize: 12,
|
||||||
smooth: true,
|
smooth: true,
|
||||||
hideHover: false,
|
hideHover: false,
|
||||||
parseTime: true
|
parseTime: true,
|
||||||
|
units: ''
|
||||||
};
|
};
|
||||||
|
|
||||||
Line.prototype.precalc = function() {
|
Line.prototype.precalc = function() {
|
||||||
@ -108,7 +109,7 @@
|
|||||||
_this = this;
|
_this = this;
|
||||||
this.el.empty();
|
this.el.empty();
|
||||||
this.r = new Raphael(this.el[0]);
|
this.r = new Raphael(this.el[0]);
|
||||||
maxYLabelWidth = Math.max(this.measureText(this.options.ymin, this.options.gridTextSize).width, this.measureText(this.options.ymax, this.options.gridTextSize).width);
|
maxYLabelWidth = Math.max(this.measureText(this.options.ymin + this.options.units, this.options.gridTextSize).width, this.measureText(this.options.ymax + this.options.units, this.options.gridTextSize).width);
|
||||||
left = maxYLabelWidth + this.options.marginLeft;
|
left = maxYLabelWidth + this.options.marginLeft;
|
||||||
width = this.el.width() - left - this.options.marginRight;
|
width = this.el.width() - left - this.options.marginRight;
|
||||||
height = this.el.height() - this.options.marginTop - this.options.marginBottom;
|
height = this.el.height() - this.options.marginTop - this.options.marginBottom;
|
||||||
@ -130,7 +131,7 @@
|
|||||||
for (lineY = firstY; firstY <= lastY ? lineY <= lastY : lineY >= lastY; lineY += yInterval) {
|
for (lineY = firstY; firstY <= lastY ? lineY <= lastY : lineY >= lastY; lineY += yInterval) {
|
||||||
v = Math.floor(lineY);
|
v = Math.floor(lineY);
|
||||||
y = transY(v);
|
y = transY(v);
|
||||||
this.r.text(left - this.options.marginLeft / 2, y, v).attr('font-size', this.options.gridTextSize).attr('fill', this.options.gridTextColor).attr('text-anchor', 'end');
|
this.r.text(left - this.options.marginLeft / 2, y, v + this.options.units).attr('font-size', this.options.gridTextSize).attr('fill', this.options.gridTextColor).attr('text-anchor', 'end');
|
||||||
this.r.path("M" + left + "," + y + 'H' + (left + width)).attr('stroke', this.options.gridLineColor).attr('stroke-width', this.options.gridStrokeWidth);
|
this.r.path("M" + left + "," + y + 'H' + (left + width)).attr('stroke', this.options.gridLineColor).attr('stroke-width', this.options.gridStrokeWidth);
|
||||||
}
|
}
|
||||||
prevLabelMargin = null;
|
prevLabelMargin = null;
|
||||||
@ -206,7 +207,7 @@
|
|||||||
hoverSet.show();
|
hoverSet.show();
|
||||||
xLabel.attr('text', _this.columnLabels[index]);
|
xLabel.attr('text', _this.columnLabels[index]);
|
||||||
for (i = 0, _ref8 = _this.series.length - 1; 0 <= _ref8 ? i <= _ref8 : i >= _ref8; 0 <= _ref8 ? i++ : i--) {
|
for (i = 0, _ref8 = _this.series.length - 1; 0 <= _ref8 ? i <= _ref8 : i >= _ref8; 0 <= _ref8 ? i++ : i--) {
|
||||||
yLabels[i].attr('text', "" + _this.seriesLabels[i] + ": " + (_this.commas(_this.series[i][index])));
|
yLabels[i].attr('text', "" + _this.seriesLabels[i] + ": " + (_this.commas(_this.series[i][index])) + _this.options.units);
|
||||||
}
|
}
|
||||||
maxLabelWidth = Math.max.apply(null, $.map(yLabels, function(l) {
|
maxLabelWidth = Math.max.apply(null, $.map(yLabels, function(l) {
|
||||||
return l.getBBox().width;
|
return l.getBBox().width;
|
||||||
@ -374,7 +375,9 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
Line.prototype.commas = function(num) {
|
Line.prototype.commas = function(num) {
|
||||||
return num.toFixed(0).replace(/(?=(?:\d{3})+$)(?!^)/g, ',');
|
var ret;
|
||||||
|
ret = num < 0 ? "-" : "";
|
||||||
|
return ret + Math.abs(num).toFixed(0).replace(/(?=(?:\d{3})+$)(?!^)/g, ',');
|
||||||
};
|
};
|
||||||
|
|
||||||
return Line;
|
return Line;
|
||||||
|
2
morris.min.js
vendored
2
morris.min.js
vendored
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user