Skip to content

Commit

Permalink
core.scale:
Browse files Browse the repository at this point in the history
- alias globalDefaults globally
- pass tick object to formatter
time scale:
- pass tick object to tickFormatFunction
- use already figured `tick.major` in tickFormatFunction
- use _formatTick in tickFormatFunction
  • Loading branch information
kurkle committed Feb 4, 2019
1 parent c69cd5d commit d19651f
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 27 deletions.
39 changes: 26 additions & 13 deletions src/core/core.scale.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ var valueOrDefault = helpers.valueOrDefault;
var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;
var resolve = helpers.options.resolve;
var callback = helpers.callback;
var globalDefaults = defaults.global;

defaults._set('scale', {
display: true,
Expand Down Expand Up @@ -110,12 +111,11 @@ module.exports = Element.extend({
var opts = me.options;
var ttOpts = opts.tooltips || {};
var tickOpts = opts.ticks;
var global = defaults.global;

me._config = {
tooltipFormatter: resolve([ttOpts.formatter, global.tooltips.formatter, opts.formatter, global.formatter]),
tooltipFormatter: resolve([ttOpts.formatter, globalDefaults.tooltips.formatter, opts.formatter, globalDefaults.formatter]),
tickCallback: resolve([tickOpts.callback, tickOpts.userCallback]),
tickFormatter: resolve([tickOpts.formatter, opts.formatter, global.formatter]),
tickFormatter: resolve([tickOpts.formatter, opts.formatter, globalDefaults.formatter]),
};
},

Expand Down Expand Up @@ -328,15 +328,28 @@ module.exports = Element.extend({
beforeTickToLabelConversion: function() {
callback(this.options.beforeTickToLabelConversion, [this]);
},
convertTicksToLabels: function() {
convertTicksToLabels: function(ticks) {
var me = this;
var labels = [];
var i, ilen;
var i, ilen, tick;

me.ticks = me.ticks.map(me._config.tickCallback, me);

for (i = 0, ilen = me.ticks.length; i < ilen; ++i) {
labels.push(me._formatTick(me.ticks[i], i));
if (helpers.isArray(ticks) && ticks.length) {
// new scale implementation
for (i = 0, ilen = ticks.length; i < ilen; ++i) {
labels.push(me._formatTick(ticks[i], i));
}
} else {
// old scale implementation, ticks are plain values
ticks = me.ticks;

for (i = 0, ilen = ticks.length; i < ilen; ++i) {
tick = {
value: ticks[i],
major: false,
label: me._config.tickCallback(ticks[i], i, ticks)
};
labels.push(me._formatTick(tick, i));
}
}

return labels;
Expand Down Expand Up @@ -567,13 +580,14 @@ module.exports = Element.extend({
return rawValue;
},

_formatTick: function(value, index) {
_formatTick: function(tick, index) {
var me = this;
var context = {
chart: me.chart,
index: index
scale: me,
tickIndex: index
};
return valueOrDefault(callback(me._config.tickFormatter, [value, context]), value);
return valueOrDefault(callback(me._config.tickFormatter, [tick, context]), tick.label);
},
/**
* @private
Expand Down Expand Up @@ -780,7 +794,6 @@ module.exports = Element.extend({

var chart = me.chart;
var context = me.ctx;
var globalDefaults = defaults.global;
var defaultFontColor = globalDefaults.defaultFontColor;
var optionTicks = options.ticks.minor;
var optionMajorTicks = options.ticks.major || optionTicks;
Expand Down
23 changes: 9 additions & 14 deletions src/scales/scale.time.js
Original file line number Diff line number Diff line change
Expand Up @@ -643,7 +643,7 @@ module.exports = Scale.extend({
ticks.reverse();
}

return ticksFromTimestamps(ticks, me._majorUnit);
return ticksFromTimestamps(ticks, options.ticks.major.enabled ? me._majorUnit : false);
},

getLabelForIndex: function(index, datasetIndex) {
Expand All @@ -670,29 +670,24 @@ module.exports = Scale.extend({
* Function to format an individual tick mark
* @private
*/
tickFormatFunction: function(time, index, ticks, format) {
tickFormatFunction: function(tick, index, ticks, format) {
var me = this;
var options = me.options;
var formats = options.time.displayFormats;
var minorFormat = formats[me._unit];
var majorUnit = me._majorUnit;
var majorFormat = formats[majorUnit];
var majorTime = +adapter.startOf(time, majorUnit);
var majorTickOpts = options.ticks.major;
var major = majorTickOpts.enabled && majorUnit && majorFormat && time === majorTime;
var label = adapter.format(time, format ? format : major ? majorFormat : minorFormat);
var tickOpts = major ? majorTickOpts : options.ticks.minor;
var tickOpts = tick.major ? options.ticks.major : options.ticks.minor;
var formatter = valueOrDefault(tickOpts.callback, tickOpts.userCallback);

return formatter ? formatter(label, index, ticks) : label;
var timeFormat = format || (tick.major ? formats[me._majorUnit] : formats[me._unit]);
var label = adapter.format(tick.value, timeFormat);
tick.label = formatter ? formatter(label, index, ticks) : label;
return me._formatTick(tick, index);
},

convertTicksToLabels: function(ticks) {
var labels = [];
var i, ilen;

for (i = 0, ilen = ticks.length; i < ilen; ++i) {
labels.push(this.tickFormatFunction(ticks[i].value, i, ticks));
labels.push(this.tickFormatFunction(ticks[i], i, ticks));
}

return labels;
Expand Down Expand Up @@ -771,7 +766,7 @@ module.exports = Scale.extend({

// pick the longest format (milliseconds) for guestimation
var format = me.options.time.displayFormats.millisecond;
var exampleLabel = me.tickFormatFunction(exampleTime, 0, [], format);
var exampleLabel = me.tickFormatFunction({value: exampleTime}, 0, [], format);
var tickLabelWidth = me.getLabelWidth(exampleLabel);
var innerWidth = me.isHorizontal() ? me.width : me.height;
var capacity = Math.floor(innerWidth / tickLabelWidth);
Expand Down

0 comments on commit d19651f

Please sign in to comment.