mirror of
https://github.com/morrisjs/morris.js.git
synced 2024-11-10 21:36:34 +01:00
Merge pull request #7 from thedjinn/ymax-option
Added option to set maximum y-value
This commit is contained in:
commit
7d9d0b811a
@ -31,6 +31,7 @@ class Morris.Line
|
||||
'#cb4b4b'
|
||||
'#9440ed'
|
||||
]
|
||||
ymax: 'auto'
|
||||
marginTop: 25
|
||||
marginRight: 25
|
||||
marginBottom: 30
|
||||
@ -71,9 +72,11 @@ class Morris.Line
|
||||
@xmin -= 1
|
||||
@xmax += 1
|
||||
|
||||
# use $.map to flatten arrays and find the max y value
|
||||
all_y_vals = $.map @series, (x) -> Math.max.apply null, x
|
||||
@ymax = Math.max(20, Math.max.apply(null, all_y_vals))
|
||||
# Compute the vertical range of the graph if desired
|
||||
if @options.ymax == 'auto'
|
||||
# use $.map to flatten arrays and find the max y value
|
||||
all_y_vals = $.map @series, (x) -> Math.max.apply null, x
|
||||
@options.ymax = Math.max(20, Math.max.apply(null, all_y_vals))
|
||||
|
||||
# Clear and redraw the graph
|
||||
#
|
||||
@ -85,11 +88,11 @@ class Morris.Line
|
||||
@r = new Raphael(@el[0])
|
||||
|
||||
# calculate grid dimensions
|
||||
left = @measureText(@ymax, @options.gridTextSize).width + @options.marginLeft
|
||||
left = @measureText(@options.ymax, @options.gridTextSize).width + @options.marginLeft
|
||||
width = @el.width() - left - @options.marginRight
|
||||
height = @el.height() - @options.marginTop - @options.marginBottom
|
||||
dx = width / (@xmax - @xmin)
|
||||
dy = height / @ymax
|
||||
dy = height / @options.ymax
|
||||
|
||||
# quick translation helpers
|
||||
transX = (x) =>
|
||||
@ -104,7 +107,7 @@ class Morris.Line
|
||||
lineInterval = height / (@options.numLines - 1)
|
||||
for i in [0..@options.numLines-1]
|
||||
y = @options.marginTop + i * lineInterval
|
||||
v = Math.round((@options.numLines - 1 - i) * @ymax / (@options.numLines - 1))
|
||||
v = Math.round((@options.numLines - 1 - i) * @options.ymax / (@options.numLines - 1))
|
||||
@r.text(left - @options.marginLeft/2, y, v)
|
||||
.attr('font-size', @options.gridTextSize)
|
||||
.attr('fill', @options.gridTextColor)
|
||||
|
17
morris.js
17
morris.js
@ -19,6 +19,7 @@
|
||||
lineWidth: 3,
|
||||
pointSize: 4,
|
||||
lineColors: ['#0b62a4', '#7A92A3', '#4da74d', '#afd8f8', '#edc240', '#cb4b4b', '#9440ed'],
|
||||
ymax: 'auto',
|
||||
marginTop: 25,
|
||||
marginRight: 25,
|
||||
marginBottom: 30,
|
||||
@ -63,10 +64,12 @@
|
||||
this.xmin -= 1;
|
||||
this.xmax += 1;
|
||||
}
|
||||
all_y_vals = $.map(this.series, function(x) {
|
||||
return Math.max.apply(null, x);
|
||||
});
|
||||
return this.ymax = Math.max(20, Math.max.apply(null, all_y_vals));
|
||||
if (this.options.ymax === 'auto') {
|
||||
all_y_vals = $.map(this.series, function(x) {
|
||||
return Math.max.apply(null, x);
|
||||
});
|
||||
return this.options.ymax = Math.max(20, Math.max.apply(null, all_y_vals));
|
||||
}
|
||||
};
|
||||
|
||||
Line.prototype.redraw = function() {
|
||||
@ -74,11 +77,11 @@
|
||||
_this = this;
|
||||
this.el.empty();
|
||||
this.r = new Raphael(this.el[0]);
|
||||
left = this.measureText(this.ymax, this.options.gridTextSize).width + this.options.marginLeft;
|
||||
left = this.measureText(this.options.ymax, this.options.gridTextSize).width + this.options.marginLeft;
|
||||
width = this.el.width() - left - this.options.marginRight;
|
||||
height = this.el.height() - this.options.marginTop - this.options.marginBottom;
|
||||
dx = width / (this.xmax - this.xmin);
|
||||
dy = height / this.ymax;
|
||||
dy = height / this.options.ymax;
|
||||
transX = function(x) {
|
||||
if (_this.xvals.length === 1) {
|
||||
return left + width / 2;
|
||||
@ -92,7 +95,7 @@
|
||||
lineInterval = height / (this.options.numLines - 1);
|
||||
for (i = 0, _ref = this.options.numLines - 1; 0 <= _ref ? i <= _ref : i >= _ref; 0 <= _ref ? i++ : i--) {
|
||||
y = this.options.marginTop + i * lineInterval;
|
||||
v = Math.round((this.options.numLines - 1 - i) * this.ymax / (this.options.numLines - 1));
|
||||
v = Math.round((this.options.numLines - 1 - i) * this.options.ymax / (this.options.numLines - 1));
|
||||
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.path("M" + left + "," + y + 'H' + (left + width)).attr('stroke', this.options.gridLineColor).attr('stroke-width', this.options.gridStrokeWidth);
|
||||
}
|
||||
|
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