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]}`;
}
}
}
}
}
});
}