1 | import { isNil } from '@antv/util';
|
2 | import { ScaleConfig } from '../types';
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 | export 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 | }
|