Skip to content

Commit 1c51d8f

Browse files
committed
Use Math.min/max instead of if statement
1 parent 6234f56 commit 1c51d8f

File tree

4 files changed

+26
-33
lines changed

4 files changed

+26
-33
lines changed

src/scales/scale.linear.js

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ module.exports = LinearScaleBase.extend({
2727
}
2828

2929
// First Calculate the range
30-
me.min = null;
31-
me.max = null;
30+
me.min = Number.POSITIVE_INFINITY;
31+
me.max = Number.NEGATIVE_INFINITY;
3232

3333
var hasStacks = opts.stacked;
3434
if (hasStacks === undefined) {
@@ -93,10 +93,8 @@ module.exports = LinearScaleBase.extend({
9393

9494
helpers.each(valuesPerStack, function(valuesForType) {
9595
var values = valuesForType.positiveValues.concat(valuesForType.negativeValues);
96-
var minVal = helpers.min(values);
97-
var maxVal = helpers.max(values);
98-
me.min = me.min === null ? minVal : Math.min(me.min, minVal);
99-
me.max = me.max === null ? maxVal : Math.max(me.max, maxVal);
96+
me.min = Math.min(me.min, helpers.min(values));
97+
me.max = Math.max(me.max, helpers.max(values));
10098
});
10199

102100
} else {
@@ -111,20 +109,15 @@ module.exports = LinearScaleBase.extend({
111109
continue;
112110
}
113111

114-
if (me.min === null || value.min < me.min) {
115-
me.min = value.min;
116-
}
117-
118-
if (me.max === null || me.max < value.max) {
119-
me.max = value.max;
120-
}
112+
me.min = Math.min(value.min, me.min);
113+
me.max = Math.max(value.max, me.max);
121114
}
122115
}
123116
}
124117
}
125118

126-
me.min = isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;
127-
me.max = isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX;
119+
me.min = helpers.isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;
120+
me.max = helpers.isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX;
128121

129122
// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero
130123
this.handleTickRangeOptions();

src/scales/scale.logarithmic.js

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,9 @@ module.exports = Scale.extend({
8080
var datasetIndex, meta, value, data, i, ilen;
8181

8282
// Calculate Range
83-
me.min = null;
84-
me.max = null;
85-
me.minNotZero = null;
83+
me.min = Number.POSITIVE_INFINITY;
84+
me.max = Number.NEGATIVE_INFINITY;
85+
me.minNotZero = Number.POSITIVE_INFINITY;
8686

8787
var hasStacks = opts.stacked;
8888
if (hasStacks === undefined) {
@@ -131,8 +131,8 @@ module.exports = Scale.extend({
131131
if (valuesForType.length > 0) {
132132
var minVal = helpers.min(valuesForType);
133133
var maxVal = helpers.max(valuesForType);
134-
me.min = me.min === null ? minVal : Math.min(me.min, minVal);
135-
me.max = me.max === null ? maxVal : Math.max(me.max, maxVal);
134+
me.min = Math.min(me.min, minVal);
135+
me.max = Math.max(me.max, maxVal);
136136
}
137137
});
138138

@@ -148,22 +148,21 @@ module.exports = Scale.extend({
148148
continue;
149149
}
150150

151-
if (me.min === null || value.min < me.min) {
152-
me.min = value.min;
153-
}
154-
155-
if (me.max === null || me.max < value.max) {
156-
me.max = value.max;
157-
}
151+
me.min = Math.min(value.min, me.min);
152+
me.max = Math.max(value.max, me.max);
158153

159-
if (value.min !== 0 && (me.minNotZero === null || value.min < me.minNotZero)) {
160-
me.minNotZero = value.min;
154+
if (value.min !== 0) {
155+
me.minNotZero = Math.min(value.min, me.minNotZero);
161156
}
162157
}
163158
}
164159
}
165160
}
166161

162+
me.min = helpers.isFinite(me.min) ? me.min : null;
163+
me.max = helpers.isFinite(me.max) ? me.max : null;
164+
me.minNotZero = helpers.isFinite(me.minNotZero) ? me.minNotZero : null;
165+
167166
// Common base implementation to handle ticks.min, ticks.max
168167
this.handleTickRangeOptions();
169168
},

test/specs/core.ticks.tests.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ describe('Test tick generators', function() {
4545
var xAxis = chart.scales['x-axis-0'];
4646
var yAxis = chart.scales['y-axis-0'];
4747

48-
expect(xAxis.ticks).toEqual(['-1', '-0.8', '-0.6', '-0.4', '-0.2', '0', '0.2', '0.4', '0.6', '0.8', '1']);
49-
expect(yAxis.ticks).toEqual(['1', '0.8', '0.6', '0.4', '0.2', '0', '-0.2', '-0.4', '-0.6', '-0.8', '-1']);
48+
expect(xAxis.ticks).toEqual(['0', '0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1']);
49+
expect(yAxis.ticks).toEqual(['1', '0.9', '0.8', '0.7', '0.6', '0.5', '0.4', '0.3', '0.2', '0.1', '0']);
5050
});
5151

5252
it('Should generate logarithmic spaced ticks with correct precision', function() {

test/specs/scale.linear.tests.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -453,7 +453,7 @@ describe('Linear Scale', function() {
453453
});
454454

455455
expect(chart.scales.yScale0).not.toEqual(undefined); // must construct
456-
expect(chart.scales.yScale0.min).toBe(-1);
456+
expect(chart.scales.yScale0.min).toBe(0);
457457
expect(chart.scales.yScale0.max).toBe(1);
458458
});
459459

@@ -829,10 +829,11 @@ describe('Linear Scale', function() {
829829
var chart = window.acquireChart({
830830
type: 'line',
831831
data: {
832+
labels: [-1, 1],
832833
datasets: [{
833834
xAxisID: 'xScale0',
834835
yAxisID: 'yScale0',
835-
data: []
836+
data: [-1, 1]
836837
}],
837838
},
838839
options: {

0 commit comments

Comments
 (0)