UNPKG

859 BPlain TextView Raw
1
2import { fixedBase } from '@antv/util';
3
4function snapMultiple(v, base, snapType) {
5 let div;
6 if (snapType === 'ceil') {
7 div = Math.ceil(v / base);
8 } else if (snapType === 'floor') {
9 div = Math.floor(v / base);
10 } else {
11 div = Math.round(v / base);
12 }
13 return div * base;
14}
15
16export default function intervalTicks(min, max, interval) {
17 // 变成 interval 的倍数
18 let minTick = snapMultiple(min, interval, 'floor');
19 let maxTick = snapMultiple(max, interval, 'ceil');
20 // 统一小数位数
21 minTick = fixedBase(minTick, interval);
22 maxTick = fixedBase(maxTick, interval);
23 const ticks = [];
24 for (let i = minTick; i <= maxTick; i = i + interval) {
25 const tickValue = fixedBase(i, interval); // 防止浮点数加法出现问题
26 ticks.push(tickValue);
27 }
28 return {
29 min: minTick,
30 max: maxTick,
31 ticks
32 };
33}
\No newline at end of file