diff --git a/src/core/core.scale.js b/src/core/core.scale.js index 4c1a2f8eb3c..45c3caf357b 100644 --- a/src/core/core.scale.js +++ b/src/core/core.scale.js @@ -251,7 +251,7 @@ var Scale = Element.extend({ update: function(maxWidth, maxHeight, margins) { var me = this; var optionTicks = me.options.ticks; - var i, ilen, labels, label, ticks, tick; + var i, ilen, labels, ticks; // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) me.beforeUpdate(); @@ -293,10 +293,15 @@ var Scale = Element.extend({ // New implementations should return an array of objects but for BACKWARD COMPAT, // we still support no return (`this.ticks` internally set by calling this method). - ticks = me.buildTicks() || []; + ticks = me.buildTicks(); // Allow modification of ticks in callback. - ticks = me.afterBuildTicks(ticks) || ticks; + if (ticks) { + ticks = me.afterBuildTicks(ticks); + } else { + // Support old implementations (that modified `this.ticks` directly in buildTicks) + me.ticks = me.afterBuildTicks(me.ticks); + } me.beforeTickToLabelConversion(); @@ -311,20 +316,21 @@ var Scale = Element.extend({ // IMPORTANT: from this point, we consider that `this.ticks` will NEVER change! - // BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`) - for (i = 0, ilen = labels.length; i < ilen; ++i) { - label = labels[i]; - tick = ticks[i]; - if (!tick) { + if (!ticks) { + ticks = []; + for (i = 0, ilen = labels.length; i < ilen; ++i) { ticks.push({ - label: label, + value: me.ticks[i], major: false }); - } else { - tick.label = label; } } + // BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`) + for (i = 0, ilen = labels.length; i < ilen; ++i) { + ticks[i].label = labels[i]; + } + me._ticks = ticks; // Tick Rotation @@ -395,13 +401,7 @@ var Scale = Element.extend({ buildTicks: helpers.noop, afterBuildTicks: function(ticks) { var me = this; - // ticks is empty for old axis implementations here - if (helpers.isArray(ticks) && ticks.length) { - return helpers.callback(me.options.afterBuildTicks, [me, ticks]); - } - // Support old implementations (that modified `this.ticks` directly in buildTicks) - me.ticks = helpers.callback(me.options.afterBuildTicks, [me, me.ticks]) || me.ticks; - return ticks; + return helpers.callback(me.options.afterBuildTicks, [me, ticks]) || ticks; }, beforeTickToLabelConversion: function() {