export function getRecommendedTickValuesForAQuantitativeRange()

in src/axis/axis.ts [216:251]


export function getRecommendedTickValuesForAQuantitativeRange(maxTicks: number, scale: ScaleLinear<any, any>, minInterval?: number): number[] {
    let tickLabels: number[] = [];

    // if maxticks is zero return none
    if (maxTicks === 0)
        return tickLabels;

    let quantitiveScale = <ScaleLinear<any, any>>scale;
    if (quantitiveScale.ticks) {
        tickLabels = quantitiveScale.ticks(maxTicks);
        if (tickLabels.length > maxTicks && maxTicks > 1)
            tickLabels = quantitiveScale.ticks(maxTicks - 1);
        if (tickLabels.length < MinTickCount) {
            tickLabels = quantitiveScale.ticks(maxTicks + 1);
        }
        tickLabels = createTrueZeroTickLabel(tickLabels);

        if (minInterval && tickLabels.length > 1) {
            let tickInterval = tickLabels[1] - tickLabels[0];
            while (tickInterval > 0 && tickInterval < minInterval) {
                for (let i = 1; i < tickLabels.length; i++) {
                    tickLabels.splice(i, 1);
                }

                tickInterval = tickInterval * 2;
            }
            // keep at least two labels - the loop above may trim all but one if we have odd # of tick labels and dynamic range < minInterval
            if (tickLabels.length === 1) {
                tickLabels.push(tickLabels[0] + minInterval);
            }
        }
        return tickLabels;
    }

    return tickLabels;
}