extjs-gpl
Version:
GPL licensed version of Sencha Ext JS
81 lines (75 loc) • 2.84 kB
JavaScript
/**
* @class Ext.chart.axis.layout.Continuous
* @extends Ext.chart.axis.layout.Layout
*
* Processor for axis data that can be interpolated.
*/
Ext.define('Ext.chart.axis.layout.Continuous', {
extend: 'Ext.chart.axis.layout.Layout',
alias: 'axisLayout.continuous',
isContinuous: true,
config: {
adjustMinimumByMajorUnit: false,
adjustMaximumByMajorUnit: false
},
getCoordFor: function (value, field, idx, items) {
return +value;
},
/**
* @inheritdoc
*/
snapEnds: function (context, min, max, estStepSize) {
var segmenter = context.segmenter,
axis = this.getAxis(),
majorTickSteps = axis.getMajorTickSteps(),
// if specific number of steps requested and the segmenter can do such segmentation
out = majorTickSteps && segmenter.exactStep ?
segmenter.exactStep(min, (max - min) / majorTickSteps) :
segmenter.preferredStep(min, estStepSize),
unit = out.unit,
step = out.step,
from = majorTickSteps ? min : segmenter.align(min, step, unit),
steps = (majorTickSteps || segmenter.diff(min, max, unit)) + 1;
return {
min: segmenter.from(min),
max: segmenter.from(max),
from: from,
to: segmenter.add(from, steps * step, unit),
step: step,
steps: steps,
unit: unit,
get: function (currentStep) {
return segmenter.add(this.from, this.step * currentStep, this.unit);
}
};
},
snapMinorEnds: function (context) {
var majorTicks = context.majorTicks,
minorTickSteps = this.getAxis().getMinorTickSteps(),
segmenter = context.segmenter,
min = majorTicks.min,
max = majorTicks.max,
from = majorTicks.from,
unit = majorTicks.unit,
step = majorTicks.step / minorTickSteps,
scaledStep = step * unit.scale,
fromMargin = from - min,
offset = Math.floor(fromMargin / scaledStep),
extraSteps = offset + Math.floor((max - majorTicks.to) / scaledStep) + 1,
steps = majorTicks.steps * minorTickSteps + extraSteps;
return {
min: min,
max: max,
from: min + fromMargin % scaledStep,
to: segmenter.add(from, steps * step, unit),
step: step,
steps: steps,
unit: unit,
get: function (current) {
return (current % minorTickSteps + offset + 1 !== 0) ? // don't render minor tick in major tick position
segmenter.add(this.from, this.step * current, unit) :
null;
}
}
}
});