in src/common/autoTimeTicksMethod.ts [171:207]
export default function calculateCatTicks(cfg: ScaleConfig): any[] {
const { values, tickInterval, tickCount, showLast } = cfg;
if (isNumber(tickInterval)) {
const ticks = filter(values, (__: any, i: number) => i % tickInterval === 0);
const lastValue = last(values);
if (showLast && last(ticks) !== lastValue) {
ticks.push(lastValue);
}
return ticks;
}
const len = values.length;
let { min, max } = cfg;
if (isNil(min)) {
min = 0;
}
if (isNil(max)) {
max = values.length - 1;
}
if (!isNumber(tickCount) || tickCount >= len) return values.slice(min, max + 1);
if (tickCount <= 0 || max <= 0) return [];
const interval = tickCount === 1 ? len : Math.floor(len / (tickCount - 1));
const ticks = [];
let idx = min;
for (let i = 0; i < tickCount; i++) {
if (idx >= max) break;
idx = Math.min(min + i * interval, max);
if (i === tickCount - 1 && showLast) ticks.push(values[max]);
else ticks.push(values[idx]);
}
return ticks;
}