helpers.callback(this.options.beforeUpdate, [this]);
},
+ /**
+ * @param {number} maxWidth - the max width in pixels
+ * @param {number} maxHeight - the max height in pixels
+ * @param {object} margins - the space between the edge of the other scales and edge of the chart
+ * This space comes from two sources:
+ * - padding - space that's required to show the labels at the edges of the scale
+ * - thickness of scales or legends in another orientation
+ */
update: function(maxWidth, maxHeight, margins) {
var me = this;
+ var tickOpts = me.options.ticks;
var i, ilen, labels, label, ticks, tick;
// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)
me._maxLabelLines = 0;
me.longestLabelWidth = 0;
me.longestTextCache = me.longestTextCache || {};
- me._ticksToDraw = null;
me._gridLineItems = null;
me._labelItems = null;
me.ticks = labels; // BACKWARD COMPATIBILITY
- // IMPORTANT: from this point, we consider that `this.ticks` will NEVER change!
+ // IMPORTANT: below 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) {
me.beforeFit();
me.fit();
me.afterFit();
- //
+ // Auto-skip
+ me._ticksToDraw = tickOpts.display && tickOpts.autoSkip ? me._autoSkip(me._ticks) : me._ticks;
+
me.afterUpdate();
+ // TODO(v3): remove minSize as a public property and return value from all layout boxes. It is unused
+ // make maxWidth and maxHeight private
return me.minSize;
},
height: 0
};
+ var chart = me.chart;
var opts = me.options;
var tickOpts = opts.ticks;
var scaleLabelOpts = opts.scaleLabel;
me.handleMargins();
- me.width = minSize.width;
- me.height = minSize.height;
+ if (isHorizontal) {
+ me.width = me._length = chart.width - me.margins.left - me.margins.right;
+ me.height = minSize.height;
+ } else {
+ me.width = minSize.width;
+ me.height = me._length = chart.height - me.margins.top - me.margins.bottom;
+ }
},
/**
return false;
},
- _getTicksToDraw: function() {
- var me = this;
- var optionTicks = me.options.ticks;
- var ticks = me._ticksToDraw;
-
- if (ticks) {
- return ticks;
- }
-
- ticks = me.getTicks();
-
- if (optionTicks.display && optionTicks.autoSkip) {
- ticks = me._autoSkip(ticks);
- }
-
- me._ticksToDraw = ticks;
- return ticks;
- },
-
/**
* @private
*/
var position = options.position;
var offsetGridLines = gridLines.offsetGridLines;
var isHorizontal = me.isHorizontal();
- var ticks = me._getTicksToDraw();
+ var ticks = me._ticksToDraw;
var ticksLength = ticks.length + (offsetGridLines ? 1 : 0);
+
var tl = getTickMarkLength(gridLines);
var items = [];
var axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0;
var position = options.position;
var isMirrored = optionTicks.mirror;
var isHorizontal = me.isHorizontal();
- var ticks = me._getTicksToDraw();
+ var ticks = me._ticksToDraw;
var fonts = parseTickFontOptions(optionTicks);
var tickPadding = optionTicks.padding;
var tl = getTickMarkLength(options.gridLines);