export function getRecommendedTickValuesForAQuantitativeRange()

in src/axisHelper.ts [434:482]


export function getRecommendedTickValuesForAQuantitativeRange(
    maxTicks: number,
    scale: LinearScale<any, any>,
    minInterval?: number): number[] {

    let tickLabels: number[] = [];

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

    let quantitiveScale: LinearScale<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: number = 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;
}