UNPKG

873 BPlain TextView Raw
1import { isNil } from '@antv/util';
2import { ScaleConfig } from '../types';
3
4/**
5 * 按照给定的 minLimit/maxLimit/tickCount 均匀计算出刻度 ticks
6 *
7 * @param cfg Scale 配置项
8 * @return ticks
9 */
10export default function strictLimit(cfg: ScaleConfig, defaultMin?: number, defaultMax?: number): number[] {
11 const { minLimit, maxLimit, min, max, tickCount = 5 } = cfg;
12 let tickMin = isNil(minLimit) ? (isNil(defaultMin) ? min : defaultMin) : minLimit;
13 let tickMax = isNil(maxLimit) ? (isNil(defaultMax) ? max : defaultMax) : maxLimit;
14
15 if (tickMin > tickMax) {
16 [tickMax, tickMin] = [tickMin, tickMax];
17 }
18
19 if (tickCount <= 2) {
20 return [tickMin, tickMax];
21 }
22
23 const step = (tickMax - tickMin) / (tickCount - 1);
24 const ticks: number[] = [];
25
26 for (let i = 0; i < tickCount; i++) {
27 ticks.push(tickMin + step * i);
28 }
29
30 return ticks;
31}