export function addGlobalAxes()

in packages/sanddance-specs/src/axes.ts [45:110]


export function addGlobalAxes(props: Props) {
    const { axesOffsets, axisScales, axesScopes, axesTitlePadding, allGlobalScales, globalScope, labelBaseline, plotOffsetSignals, specColumns, specViewOptions } = props;
    const { scope } = globalScope;

    allGlobalScales.forEach(globalScales => {
        const { scales } = globalScales;
        for (let xyz in scales) {
            let _scales: Scale[] = scales[xyz];
            if (_scales) {
                addScales(scope, ..._scales);
                let { showAxes } = globalScales;
                let zindex: number = undefined;
                if (xyz === 'z') {
                    showAxes = false;
                    if (props.view === '3d' && specViewOptions.zAxisOptions && !props.faceted) {
                        if (specViewOptions.zAxisOptions.showZAxis) {
                            showAxes = true;
                            zindex = specViewOptions.zAxisOptions.zIndex;
                        }
                    }
                }
                if (showAxes && axisScales) {
                    let axisScale: AxisScale = axisScales[xyz];
                    if (axisScale) {
                        const lineColor = specViewOptions.colors.axisLine;
                        const horizontal = xyz === 'x';
                        const column: Column = specColumns[xyz] || { quantitative: true };
                        const title = axisScale.title;
                        const props: AxisProps = {
                            title,
                            horizontal,
                            column,
                            specViewOptions,
                            lineColor,
                            titlePadding: axesTitlePadding[xyz],
                            labelBaseline: labelBaseline[xyz],
                            zindex
                        };
                        axesScopes['main'].forEach(a => addAxes(a.scope, createAxis({
                            ...props,
                            scale: a.scale || _scales[0],
                            showTitle: a.title,
                            showLabels: a.labels,
                            showLines: a.lines
                        })));

                        if (axesScopes[xyz]) {
                            axesScopes[xyz].forEach(a => addAxes(a.scope, createAxis({
                                ...props,
                                scale: a.scale || _scales[0],
                                showTitle: a.title,
                                showLabels: a.labels,
                                showLines: a.lines
                            })));
                        }

                        if (plotOffsetSignals[xyz] && axesOffsets[xyz]) {
                            const plotOffsetSignal = plotOffsetSignals[xyz] as NewSignal;
                            plotOffsetSignal.update = `${axesOffsets[xyz]}`;
                        }
                    }
                }
            }
        }
    });
}