(
extent: number[],
spanWithBreaks: number,
splitNumber: number,
minInterval?: number,
maxInterval?: number
)
| 91 | * @param splitNumber splitNumber should be >= 1. |
| 92 | */ |
| 93 | export function intervalScaleNiceTicks( |
| 94 | extent: number[], |
| 95 | spanWithBreaks: number, |
| 96 | splitNumber: number, |
| 97 | minInterval?: number, |
| 98 | maxInterval?: number |
| 99 | ): intervalScaleNiceTicksResult { |
| 100 | |
| 101 | const result = {} as intervalScaleNiceTicksResult; |
| 102 | |
| 103 | let interval = result.interval = nice(spanWithBreaks / splitNumber, true); |
| 104 | if (minInterval != null && interval < minInterval) { |
| 105 | interval = result.interval = minInterval; |
| 106 | } |
| 107 | if (maxInterval != null && interval > maxInterval) { |
| 108 | interval = result.interval = maxInterval; |
| 109 | } |
| 110 | const precision = result.intervalPrecision = getIntervalPrecision(interval); |
| 111 | // Niced extent inside original extent |
| 112 | result.niceTickExtent = [ |
| 113 | round(mathCeil(extent[0] / interval) * interval, precision), |
| 114 | round(mathFloor(extent[1] / interval) * interval, precision) |
| 115 | ]; |
| 116 | |
| 117 | return result; |
| 118 | } |
| 119 | |
| 120 | /** |
| 121 | * The input `niceInterval` should be generated |
searching dependent graphs…