1 |
|
2 | import { fixedBase } from '@antv/util';
|
3 |
|
4 | function 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 |
|
16 | export default function intervalTicks(min, max, interval) {
|
17 |
|
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 |