diff --git a/packages/sanddance-explorer/src/dialogs/settings.tsx b/packages/sanddance-explorer/src/dialogs/settings.tsx index 880fcc9e7..1083bc658 100644 --- a/packages/sanddance-explorer/src/dialogs/settings.tsx +++ b/packages/sanddance-explorer/src/dialogs/settings.tsx @@ -65,6 +65,7 @@ function filterSignals(signal: NewSignal) { case SandDance.constants.SignalNames.ColorReverse: case SandDance.constants.SignalNames.PointScale: case SandDance.constants.SignalNames.TreeMapMethod: + case SandDance.constants.SignalNames.ScaleNice: case SandDance.constants.SignalNames.ZGrounded: return false; default: diff --git a/packages/sanddance-specs/src/charts/barchartH.ts b/packages/sanddance-specs/src/charts/barchartH.ts index 48ba4ad47..a18d625be 100644 --- a/packages/sanddance-specs/src/charts/barchartH.ts +++ b/packages/sanddance-specs/src/charts/barchartH.ts @@ -62,7 +62,6 @@ export default function (specContext: SpecContext): SpecBuilderProps { }); } else { const aggProps: AggregateContainerProps = { - niceScale: true, dock: 'left', globalAggregateMaxExtentSignal: 'aggMaxExtent', globalAggregateMaxExtentScaledSignal: 'aggMaxExtentScaled', @@ -153,6 +152,7 @@ export default function (specContext: SpecContext): SpecBuilderProps { specCapabilities: { countsAndSums: true, percentage: true, + signals: totalStyle !== 'sum-strip-percent' ? [SignalNames.ScaleNice] : undefined, roles: [ { role: 'y', diff --git a/packages/sanddance-specs/src/charts/barchartV.ts b/packages/sanddance-specs/src/charts/barchartV.ts index e301be11a..a96c9afa6 100644 --- a/packages/sanddance-specs/src/charts/barchartV.ts +++ b/packages/sanddance-specs/src/charts/barchartV.ts @@ -62,7 +62,6 @@ export default function (specContext: SpecContext): SpecBuilderProps { }); } else { const aggProps: AggregateContainerProps = { - niceScale: true, dock: 'bottom', globalAggregateMaxExtentSignal: 'aggMaxExtent', globalAggregateMaxExtentScaledSignal: 'aggMaxExtentScaled', @@ -152,6 +151,7 @@ export default function (specContext: SpecContext): SpecBuilderProps { specCapabilities: { countsAndSums: true, percentage: true, + signals: totalStyle !== 'sum-strip-percent' ? [SignalNames.ScaleNice] : undefined, roles: [ { role: 'x', diff --git a/packages/sanddance-specs/src/charts/strips.ts b/packages/sanddance-specs/src/charts/strips.ts index f0747d817..36b21f854 100644 --- a/packages/sanddance-specs/src/charts/strips.ts +++ b/packages/sanddance-specs/src/charts/strips.ts @@ -36,7 +36,6 @@ export default function (specContext: SpecContext): SpecBuilderProps { const globalAggregateMaxExtentSignal = 'globalAggregateMaxExtentSignal'; const props: AggregateContainerProps = { dock: 'top', - niceScale: false, globalAggregateMaxExtentScaledSignal, globalAggregateMaxExtentSignal, sumBy: specColumns.size, diff --git a/packages/sanddance-specs/src/charts/treemap.ts b/packages/sanddance-specs/src/charts/treemap.ts index b17c79688..e4eeb5ce0 100644 --- a/packages/sanddance-specs/src/charts/treemap.ts +++ b/packages/sanddance-specs/src/charts/treemap.ts @@ -36,7 +36,6 @@ export default function (specContext: SpecContext): SpecBuilderProps { const globalAggregateMaxExtentSignal = 'globalAggregateMaxExtentSignal'; const props: AggregateContainerProps = { dock: 'top', - niceScale: false, globalAggregateMaxExtentScaledSignal, globalAggregateMaxExtentSignal, sumBy: specColumns.size, diff --git a/packages/sanddance-specs/src/constants.ts b/packages/sanddance-specs/src/constants.ts index ab955cf8f..39e259fb2 100644 --- a/packages/sanddance-specs/src/constants.ts +++ b/packages/sanddance-specs/src/constants.ts @@ -68,6 +68,7 @@ export const SignalNames = { TextSize: 'Text_SizeSignal', TextTitleSize: 'Text_TitleSizeSignal', TreeMapMethod: 'Chart_TreeMapMethodSignal', + ScaleNice: 'Chart_ScaleNiceSignal', XBins: 'RoleX_BinsSignal', YBins: 'RoleY_BinsSignal', ZHeight: 'RoleZ_HeightSignal', diff --git a/packages/sanddance-specs/src/globalScope.ts b/packages/sanddance-specs/src/globalScope.ts index 73e023d3c..2c60ac59d 100644 --- a/packages/sanddance-specs/src/globalScope.ts +++ b/packages/sanddance-specs/src/globalScope.ts @@ -25,6 +25,7 @@ export interface GlobalSignals { plotOffsetRight: NewSignal; plotHeightOut: NewSignal; plotWidthOut: NewSignal; + scaleNice: NewSignal; } export interface GlobalScopeProps { diff --git a/packages/sanddance-specs/src/layouts/aggregateContainer.ts b/packages/sanddance-specs/src/layouts/aggregateContainer.ts index 440ff583e..472abf208 100644 --- a/packages/sanddance-specs/src/layouts/aggregateContainer.ts +++ b/packages/sanddance-specs/src/layouts/aggregateContainer.ts @@ -27,7 +27,6 @@ export interface AggregateContainerProps extends LayoutProps { sumBy: Column; globalAggregateMaxExtentSignal: string; globalAggregateMaxExtentScaledSignal: string; - niceScale: boolean; showAxes: boolean; } @@ -69,7 +68,7 @@ export class AggregateContainer extends Layout { public build(): InnerScope { const { aggregation, names, props } = this; - const { dock, globalScope, groupings, niceScale, parentScope, showAxes } = props; + const { dock, globalScope, groupings, parentScope, showAxes } = props; addTransforms(globalScope.data, { @@ -137,7 +136,7 @@ export class AggregateContainer extends Layout { }, 0, ], - nice: niceScale, + nice: { signal: globalScope.signals.scaleNice.name }, zero: true, reverse: dock === 'top', }; diff --git a/packages/sanddance-specs/src/signals.ts b/packages/sanddance-specs/src/signals.ts index 801ba70d0..802d59e6b 100644 --- a/packages/sanddance-specs/src/signals.ts +++ b/packages/sanddance-specs/src/signals.ts @@ -85,6 +85,15 @@ export function textSignals(context: SpecContext, heightSignal: string) { step: 0.05, }, }, + { + name: SignalNames.ScaleNice, + value: true, + bind: { + name: specViewOptions.language.scaleNice, + debounce, + input: 'checkbox', + }, + }, ]; return signals; } diff --git a/packages/sanddance-specs/src/specBuilder.ts b/packages/sanddance-specs/src/specBuilder.ts index e43559f31..adcc32104 100644 --- a/packages/sanddance-specs/src/specBuilder.ts +++ b/packages/sanddance-specs/src/specBuilder.ts @@ -72,6 +72,7 @@ export class SpecBuilder { plotOffsetRight: { name: SignalNames.PlotOffsetRight, update: '0' }, plotHeightOut: { name: SignalNames.PlotHeightOut, update: SignalNames.PlotHeightIn }, plotWidthOut: { name: SignalNames.PlotWidthOut, update: SignalNames.PlotWidthIn }, + scaleNice: { name: SignalNames.ScaleNice }, }; } diff --git a/packages/sanddance-specs/src/types.ts b/packages/sanddance-specs/src/types.ts index b195f0577..ab4f1983f 100644 --- a/packages/sanddance-specs/src/types.ts +++ b/packages/sanddance-specs/src/types.ts @@ -223,6 +223,11 @@ export interface SpecLanguage { */ treeMapMethod: string; + /** + * Label for nice scale toggle. + */ + scaleNice: string; + /** * Label for scatterPlot point scale slider. */ diff --git a/packages/sanddance/src/defaults.ts b/packages/sanddance/src/defaults.ts index 45ed78fac..0cc995cee 100644 --- a/packages/sanddance/src/defaults.ts +++ b/packages/sanddance/src/defaults.ts @@ -52,6 +52,7 @@ export const defaultViewerOptions: ViewerOptions = { InnerPaddingSize: 'Inner padding size', OuterPaddingSize: 'Outer padding size', treeMapMethod: 'Treemap layout', + scaleNice: 'Nice scale', facetColumns: 'Facet columns', facetRows: 'Facet rows', markOpacitySignal: 'Mark opacity',