Skip to content

Commit

Permalink
_configure for linear & logarithmic, time scale
Browse files Browse the repository at this point in the history
  • Loading branch information
kurkle committed Jun 24, 2019
1 parent 2ddf46d commit f3e92aa
Show file tree
Hide file tree
Showing 6 changed files with 25 additions and 33 deletions.
2 changes: 1 addition & 1 deletion src/core/core.scale.js
Expand Up @@ -355,7 +355,7 @@ var Scale = Element.extend({
me._start = start;
me._end = end;
me._reverse = reverse;
me._length = me._end - me._start;
me._length = end - start;
},

afterUpdate: function() {
Expand Down
12 changes: 2 additions & 10 deletions src/scales/scale.linear.js
Expand Up @@ -149,20 +149,12 @@ module.exports = LinearScaleBase.extend({

// Utils
getPixelForValue: function(value) {
// This must be called after fit has been run so that
// this.left, this.top, this.right, and this.bottom have been defined
var me = this;
var start = me.min;
var rightValue = +me.getRightValue(value);
var range = me.max - start;
return me.getPixelForDecimal((rightValue - start) / range);
return me.getPixelForDecimal((+me.getRightValue(value) - me.min) / me._range);
},

getValueForPixel: function(pixel) {
var me = this;
var start = me.min;
var range = me.max - start;
return start + me.getDecimalForPixel(pixel) * range;
return this.min + this.getDecimalForPixel(pixel) * this._range;
},

getPixelForTick: function(index) {
Expand Down
8 changes: 8 additions & 0 deletions src/scales/scale.linearbase.js
Expand Up @@ -231,5 +231,13 @@ module.exports = Scale.extend({
me.zeroLineIndex = me.ticks.indexOf(0);

Scale.prototype.convertTicksToLabels.call(me);
},

_configure: function() {
var me = this;

Scale.prototype._configure.call(me);

me._range = me.max - me.min;
}
});
12 changes: 7 additions & 5 deletions src/scales/scale.logarithmic.js
Expand Up @@ -266,15 +266,18 @@ module.exports = Scale.extend({
return significand * Math.pow(10, exp);
},

_getParams: function() {
_configure: function() {
var me = this;
var start = me.min;
var offset = 0;

Scale.prototype._configure.call(me);

if (start === 0) {
start = me._getFirstTickValue(me.minNotZero);
offset = valueOrDefault(me.options.ticks.fontSize, defaults.global.defaultFontSize) / me._length;
}
return {
me._params = {
start: log10(start),
offset: offset,
range: (log10(me.max) - log10(start)) / (1 - offset)
Expand All @@ -284,20 +287,19 @@ module.exports = Scale.extend({
getPixelForValue: function(value) {
var me = this;
var decimal = 0;
var params;
var params = me._params;

value = +me.getRightValue(value);

if (value > me.min && value > 0) {
params = me._getParams();
decimal = (log10(value) - params.start) / params.range + params.offset;
}
return me.getPixelForDecimal(decimal);
},

getValueForPixel: function(pixel) {
var me = this;
var params = me._getParams();
var params = me._params;
var decimal = me.getDecimalForPixel(pixel);
return decimal === 0 && me.min === 0
? 0
Expand Down
20 changes: 5 additions & 15 deletions src/scales/scale.time.js
Expand Up @@ -595,7 +595,6 @@ module.exports = Scale.extend({
me.max = Math.max(min + 1, max);

// PRIVATE
me._horizontal = me.isHorizontal();
me._table = [];
me._timestamps = {
data: timestamps,
Expand All @@ -610,16 +609,16 @@ module.exports = Scale.extend({
var max = me.max;
var options = me.options;
var timeOpts = options.time;
var timestamps = [];
var timestamps = me._timestamps;
var ticks = [];
var i, ilen, timestamp;

switch (options.ticks.source) {
case 'data':
timestamps = me._timestamps.data;
timestamps = timestamps.data;
break;
case 'labels':
timestamps = me._timestamps.labels;
timestamps = timestamps.labels;
break;
case 'auto':
default:
Expand Down Expand Up @@ -724,13 +723,8 @@ module.exports = Scale.extend({
getPixelForOffset: function(time) {
var me = this;
var offsets = me._offsets;
var size = me._horizontal ? me.width : me.height;
var pos = interpolate(me._table, 'time', time, 'pos');
var offset = size * (offsets.start + pos) * offsets.factor;

return me.options.ticks.reverse ?
(me._horizontal ? me.right : me.bottom) - offset :
(me._horizontal ? me.left : me.top) + offset;
return me.getPixelForDecimal((offsets.start + pos) * offsets.factor);
},

getPixelForValue: function(value, index, datasetIndex) {
Expand Down Expand Up @@ -760,11 +754,7 @@ module.exports = Scale.extend({
getValueForPixel: function(pixel) {
var me = this;
var offsets = me._offsets;
var size = me._horizontal ? me.width : me.height;
var offset = me.options.ticks.reverse ?
(me._horizontal ? me.right : me.bottom) - pixel :
pixel - (me._horizontal ? me.left : me.top);
var pos = offset / size / offsets.factor - offsets.start;
var pos = me.getDecimalForPixel(pixel) / offsets.factor - offsets.end;
var time = interpolate(me._table, 'pos', pos, 'time');

// DEPRECATION, we should return time directly
Expand Down
4 changes: 2 additions & 2 deletions test/specs/scale.time.tests.js
Expand Up @@ -1557,11 +1557,11 @@ describe('Time scale tests', function() {
var firstTickInterval = scale.getPixelForTick(1) - scale.getPixelForTick(0);
var lastTickInterval = scale.getPixelForTick(numTicks - 1) - scale.getPixelForTick(numTicks - 2);

expect(scale.getValueForPixel(scale.left + firstTickInterval / 2)).toBeCloseToTime({
expect(scale.getValueForPixel(scale.left + lastTickInterval / 2)).toBeCloseToTime({
value: moment('2042-01-01T00:00:00'),
unit: 'hour',
});
expect(scale.getValueForPixel(scale.left + scale.width - lastTickInterval / 2)).toBeCloseToTime({
expect(scale.getValueForPixel(scale.left + scale.width - firstTickInterval / 2)).toBeCloseToTime({
value: moment('2017-01-01T00:00:00'),
unit: 'hour',
});
Expand Down

0 comments on commit f3e92aa

Please sign in to comment.