From fd8c90e1709616c5f64217eede8c6184bea4ba41 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 17 Oct 2025 03:33:24 +0000 Subject: [PATCH 1/5] Initial plan From 37433800b512db20660cd08dfc4f3ce35819f87f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 17 Oct 2025 03:47:25 +0000 Subject: [PATCH 2/5] Add BarChartNice signal for nice scale toggle Co-authored-by: danmarshall <11507384+danmarshall@users.noreply.github.com> --- .../src/dialogs/settings.tsx | 1 + .../sanddance-specs/src/charts/barchartH.ts | 4 ++- .../sanddance-specs/src/charts/barchartV.ts | 4 ++- packages/sanddance-specs/src/constants.ts | 1 + .../src/layouts/aggregateContainer.ts | 25 ++++++++++++++++--- packages/sanddance-specs/src/types.ts | 5 ++++ packages/sanddance/src/defaults.ts | 1 + 7 files changed, 35 insertions(+), 6 deletions(-) diff --git a/packages/sanddance-explorer/src/dialogs/settings.tsx b/packages/sanddance-explorer/src/dialogs/settings.tsx index 880fcc9e7..d71440e76 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.BarChartNice: 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..1751db3a7 100644 --- a/packages/sanddance-specs/src/charts/barchartH.ts +++ b/packages/sanddance-specs/src/charts/barchartH.ts @@ -62,7 +62,8 @@ export default function (specContext: SpecContext): SpecBuilderProps { }); } else { const aggProps: AggregateContainerProps = { - niceScale: true, + niceScale: { signal: SignalNames.BarChartNice }, + niceScaleDisplay: specViewOptions.language.barChartNice, dock: 'left', globalAggregateMaxExtentSignal: 'aggMaxExtent', globalAggregateMaxExtentScaledSignal: 'aggMaxExtentScaled', @@ -153,6 +154,7 @@ export default function (specContext: SpecContext): SpecBuilderProps { specCapabilities: { countsAndSums: true, percentage: true, + signals: totalStyle !== 'sum-strip-percent' ? [SignalNames.BarChartNice] : undefined, roles: [ { role: 'y', diff --git a/packages/sanddance-specs/src/charts/barchartV.ts b/packages/sanddance-specs/src/charts/barchartV.ts index e301be11a..c81a4fc78 100644 --- a/packages/sanddance-specs/src/charts/barchartV.ts +++ b/packages/sanddance-specs/src/charts/barchartV.ts @@ -62,7 +62,8 @@ export default function (specContext: SpecContext): SpecBuilderProps { }); } else { const aggProps: AggregateContainerProps = { - niceScale: true, + niceScale: { signal: SignalNames.BarChartNice }, + niceScaleDisplay: specViewOptions.language.barChartNice, dock: 'bottom', globalAggregateMaxExtentSignal: 'aggMaxExtent', globalAggregateMaxExtentScaledSignal: 'aggMaxExtentScaled', @@ -152,6 +153,7 @@ export default function (specContext: SpecContext): SpecBuilderProps { specCapabilities: { countsAndSums: true, percentage: true, + signals: totalStyle !== 'sum-strip-percent' ? [SignalNames.BarChartNice] : undefined, roles: [ { role: 'x', diff --git a/packages/sanddance-specs/src/constants.ts b/packages/sanddance-specs/src/constants.ts index ab955cf8f..1a0d83624 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', + BarChartNice: 'Chart_BarChartNiceSignal', XBins: 'RoleX_BinsSignal', YBins: 'RoleY_BinsSignal', ZHeight: 'RoleZ_HeightSignal', diff --git a/packages/sanddance-specs/src/layouts/aggregateContainer.ts b/packages/sanddance-specs/src/layouts/aggregateContainer.ts index 440ff583e..eec149fde 100644 --- a/packages/sanddance-specs/src/layouts/aggregateContainer.ts +++ b/packages/sanddance-specs/src/layouts/aggregateContainer.ts @@ -4,7 +4,8 @@ */ import { Layout, LayoutBuildProps, LayoutProps } from './layout'; -import { FieldNames } from '../constants'; +import { FieldNames, SignalNames } from '../constants'; +import { debounce } from '../defaults'; import { safeFieldName } from '../expr'; import { AxisScale, @@ -20,14 +21,15 @@ import { } from '../scope'; import { testForCollapseSelection } from '../selection'; import { Column } from '@msrvida/chart-types'; -import { JoinAggregateTransform, LinearScale } from 'vega-typings'; +import { JoinAggregateTransform, LinearScale, SignalRef } from 'vega-typings'; export interface AggregateContainerProps extends LayoutProps { dock: 'bottom' | 'top' | 'left'; sumBy: Column; globalAggregateMaxExtentSignal: string; globalAggregateMaxExtentScaledSignal: string; - niceScale: boolean; + niceScale: boolean | SignalRef; + niceScaleDisplay?: string; showAxes: boolean; } @@ -69,7 +71,22 @@ 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, niceScale, niceScaleDisplay, parentScope, showAxes } = props; + + // Add the nice scale signal if display name is provided + if (niceScaleDisplay) { + addSignals(globalScope.scope, + { + name: SignalNames.BarChartNice, + value: true, + bind: { + name: niceScaleDisplay, + debounce, + input: 'checkbox', + }, + }, + ); + } addTransforms(globalScope.data, { diff --git a/packages/sanddance-specs/src/types.ts b/packages/sanddance-specs/src/types.ts index b195f0577..5214194d5 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 bar chart nice scale toggle. + */ + barChartNice: string; + /** * Label for scatterPlot point scale slider. */ diff --git a/packages/sanddance/src/defaults.ts b/packages/sanddance/src/defaults.ts index 45ed78fac..b2bcd87fe 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', + barChartNice: 'Nice scale', facetColumns: 'Facet columns', facetRows: 'Facet rows', markOpacitySignal: 'Mark opacity', From 4ba549426d77bd2d4b7b5c8d495e96f2e3552223 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 17 Oct 2025 04:08:32 +0000 Subject: [PATCH 3/5] Rename BarChartNice to ScaleNice for generality Co-authored-by: danmarshall <11507384+danmarshall@users.noreply.github.com> --- packages/sanddance-explorer/src/dialogs/settings.tsx | 2 +- packages/sanddance-specs/src/charts/barchartH.ts | 6 +++--- packages/sanddance-specs/src/charts/barchartV.ts | 6 +++--- packages/sanddance-specs/src/constants.ts | 2 +- packages/sanddance-specs/src/layouts/aggregateContainer.ts | 2 +- packages/sanddance-specs/src/types.ts | 4 ++-- packages/sanddance/src/defaults.ts | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/sanddance-explorer/src/dialogs/settings.tsx b/packages/sanddance-explorer/src/dialogs/settings.tsx index d71440e76..1083bc658 100644 --- a/packages/sanddance-explorer/src/dialogs/settings.tsx +++ b/packages/sanddance-explorer/src/dialogs/settings.tsx @@ -65,7 +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.BarChartNice: + 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 1751db3a7..2ff7268a4 100644 --- a/packages/sanddance-specs/src/charts/barchartH.ts +++ b/packages/sanddance-specs/src/charts/barchartH.ts @@ -62,8 +62,8 @@ export default function (specContext: SpecContext): SpecBuilderProps { }); } else { const aggProps: AggregateContainerProps = { - niceScale: { signal: SignalNames.BarChartNice }, - niceScaleDisplay: specViewOptions.language.barChartNice, + niceScale: { signal: SignalNames.ScaleNice }, + niceScaleDisplay: specViewOptions.language.scaleNice, dock: 'left', globalAggregateMaxExtentSignal: 'aggMaxExtent', globalAggregateMaxExtentScaledSignal: 'aggMaxExtentScaled', @@ -154,7 +154,7 @@ export default function (specContext: SpecContext): SpecBuilderProps { specCapabilities: { countsAndSums: true, percentage: true, - signals: totalStyle !== 'sum-strip-percent' ? [SignalNames.BarChartNice] : undefined, + 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 c81a4fc78..174eb35cc 100644 --- a/packages/sanddance-specs/src/charts/barchartV.ts +++ b/packages/sanddance-specs/src/charts/barchartV.ts @@ -62,8 +62,8 @@ export default function (specContext: SpecContext): SpecBuilderProps { }); } else { const aggProps: AggregateContainerProps = { - niceScale: { signal: SignalNames.BarChartNice }, - niceScaleDisplay: specViewOptions.language.barChartNice, + niceScale: { signal: SignalNames.ScaleNice }, + niceScaleDisplay: specViewOptions.language.scaleNice, dock: 'bottom', globalAggregateMaxExtentSignal: 'aggMaxExtent', globalAggregateMaxExtentScaledSignal: 'aggMaxExtentScaled', @@ -153,7 +153,7 @@ export default function (specContext: SpecContext): SpecBuilderProps { specCapabilities: { countsAndSums: true, percentage: true, - signals: totalStyle !== 'sum-strip-percent' ? [SignalNames.BarChartNice] : undefined, + signals: totalStyle !== 'sum-strip-percent' ? [SignalNames.ScaleNice] : undefined, roles: [ { role: 'x', diff --git a/packages/sanddance-specs/src/constants.ts b/packages/sanddance-specs/src/constants.ts index 1a0d83624..39e259fb2 100644 --- a/packages/sanddance-specs/src/constants.ts +++ b/packages/sanddance-specs/src/constants.ts @@ -68,7 +68,7 @@ export const SignalNames = { TextSize: 'Text_SizeSignal', TextTitleSize: 'Text_TitleSizeSignal', TreeMapMethod: 'Chart_TreeMapMethodSignal', - BarChartNice: 'Chart_BarChartNiceSignal', + ScaleNice: 'Chart_ScaleNiceSignal', XBins: 'RoleX_BinsSignal', YBins: 'RoleY_BinsSignal', ZHeight: 'RoleZ_HeightSignal', diff --git a/packages/sanddance-specs/src/layouts/aggregateContainer.ts b/packages/sanddance-specs/src/layouts/aggregateContainer.ts index eec149fde..52a65982a 100644 --- a/packages/sanddance-specs/src/layouts/aggregateContainer.ts +++ b/packages/sanddance-specs/src/layouts/aggregateContainer.ts @@ -77,7 +77,7 @@ export class AggregateContainer extends Layout { if (niceScaleDisplay) { addSignals(globalScope.scope, { - name: SignalNames.BarChartNice, + name: SignalNames.ScaleNice, value: true, bind: { name: niceScaleDisplay, diff --git a/packages/sanddance-specs/src/types.ts b/packages/sanddance-specs/src/types.ts index 5214194d5..ab4f1983f 100644 --- a/packages/sanddance-specs/src/types.ts +++ b/packages/sanddance-specs/src/types.ts @@ -224,9 +224,9 @@ export interface SpecLanguage { treeMapMethod: string; /** - * Label for bar chart nice scale toggle. + * Label for nice scale toggle. */ - barChartNice: string; + scaleNice: string; /** * Label for scatterPlot point scale slider. diff --git a/packages/sanddance/src/defaults.ts b/packages/sanddance/src/defaults.ts index b2bcd87fe..0cc995cee 100644 --- a/packages/sanddance/src/defaults.ts +++ b/packages/sanddance/src/defaults.ts @@ -52,7 +52,7 @@ export const defaultViewerOptions: ViewerOptions = { InnerPaddingSize: 'Inner padding size', OuterPaddingSize: 'Outer padding size', treeMapMethod: 'Treemap layout', - barChartNice: 'Nice scale', + scaleNice: 'Nice scale', facetColumns: 'Facet columns', facetRows: 'Facet rows', markOpacitySignal: 'Mark opacity', From d008ec27f1403749d35b82e2803a8ddd15facd2c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 17 Oct 2025 04:39:08 +0000 Subject: [PATCH 4/5] Implement ScaleNice signal globally in textSignals Co-authored-by: danmarshall <11507384+danmarshall@users.noreply.github.com> --- .../sanddance-specs/src/charts/barchartH.ts | 1 - .../sanddance-specs/src/charts/barchartV.ts | 1 - .../src/layouts/aggregateContainer.ts | 21 ++----------------- packages/sanddance-specs/src/signals.ts | 9 ++++++++ 4 files changed, 11 insertions(+), 21 deletions(-) diff --git a/packages/sanddance-specs/src/charts/barchartH.ts b/packages/sanddance-specs/src/charts/barchartH.ts index 2ff7268a4..7cf4c5885 100644 --- a/packages/sanddance-specs/src/charts/barchartH.ts +++ b/packages/sanddance-specs/src/charts/barchartH.ts @@ -63,7 +63,6 @@ export default function (specContext: SpecContext): SpecBuilderProps { } else { const aggProps: AggregateContainerProps = { niceScale: { signal: SignalNames.ScaleNice }, - niceScaleDisplay: specViewOptions.language.scaleNice, dock: 'left', globalAggregateMaxExtentSignal: 'aggMaxExtent', globalAggregateMaxExtentScaledSignal: 'aggMaxExtentScaled', diff --git a/packages/sanddance-specs/src/charts/barchartV.ts b/packages/sanddance-specs/src/charts/barchartV.ts index 174eb35cc..d6a281a6e 100644 --- a/packages/sanddance-specs/src/charts/barchartV.ts +++ b/packages/sanddance-specs/src/charts/barchartV.ts @@ -63,7 +63,6 @@ export default function (specContext: SpecContext): SpecBuilderProps { } else { const aggProps: AggregateContainerProps = { niceScale: { signal: SignalNames.ScaleNice }, - niceScaleDisplay: specViewOptions.language.scaleNice, dock: 'bottom', globalAggregateMaxExtentSignal: 'aggMaxExtent', globalAggregateMaxExtentScaledSignal: 'aggMaxExtentScaled', diff --git a/packages/sanddance-specs/src/layouts/aggregateContainer.ts b/packages/sanddance-specs/src/layouts/aggregateContainer.ts index 52a65982a..127f909a3 100644 --- a/packages/sanddance-specs/src/layouts/aggregateContainer.ts +++ b/packages/sanddance-specs/src/layouts/aggregateContainer.ts @@ -4,8 +4,7 @@ */ import { Layout, LayoutBuildProps, LayoutProps } from './layout'; -import { FieldNames, SignalNames } from '../constants'; -import { debounce } from '../defaults'; +import { FieldNames } from '../constants'; import { safeFieldName } from '../expr'; import { AxisScale, @@ -29,7 +28,6 @@ export interface AggregateContainerProps extends LayoutProps { globalAggregateMaxExtentSignal: string; globalAggregateMaxExtentScaledSignal: string; niceScale: boolean | SignalRef; - niceScaleDisplay?: string; showAxes: boolean; } @@ -71,22 +69,7 @@ export class AggregateContainer extends Layout { public build(): InnerScope { const { aggregation, names, props } = this; - const { dock, globalScope, groupings, niceScale, niceScaleDisplay, parentScope, showAxes } = props; - - // Add the nice scale signal if display name is provided - if (niceScaleDisplay) { - addSignals(globalScope.scope, - { - name: SignalNames.ScaleNice, - value: true, - bind: { - name: niceScaleDisplay, - debounce, - input: 'checkbox', - }, - }, - ); - } + const { dock, globalScope, groupings, niceScale, parentScope, showAxes } = props; addTransforms(globalScope.data, { 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; } From 9e5f0fb929b748f721110260dd2e370340c50777 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 17 Oct 2025 17:02:11 +0000 Subject: [PATCH 5/5] Move scaleNice signal to GlobalScope Co-authored-by: danmarshall <11507384+danmarshall@users.noreply.github.com> --- packages/sanddance-specs/src/charts/barchartH.ts | 1 - packages/sanddance-specs/src/charts/barchartV.ts | 1 - packages/sanddance-specs/src/charts/strips.ts | 1 - packages/sanddance-specs/src/charts/treemap.ts | 1 - packages/sanddance-specs/src/globalScope.ts | 1 + packages/sanddance-specs/src/layouts/aggregateContainer.ts | 7 +++---- packages/sanddance-specs/src/specBuilder.ts | 1 + 7 files changed, 5 insertions(+), 8 deletions(-) diff --git a/packages/sanddance-specs/src/charts/barchartH.ts b/packages/sanddance-specs/src/charts/barchartH.ts index 7cf4c5885..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: { signal: SignalNames.ScaleNice }, dock: 'left', globalAggregateMaxExtentSignal: 'aggMaxExtent', globalAggregateMaxExtentScaledSignal: 'aggMaxExtentScaled', diff --git a/packages/sanddance-specs/src/charts/barchartV.ts b/packages/sanddance-specs/src/charts/barchartV.ts index d6a281a6e..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: { signal: SignalNames.ScaleNice }, dock: 'bottom', globalAggregateMaxExtentSignal: 'aggMaxExtent', globalAggregateMaxExtentScaledSignal: 'aggMaxExtentScaled', 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/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 127f909a3..472abf208 100644 --- a/packages/sanddance-specs/src/layouts/aggregateContainer.ts +++ b/packages/sanddance-specs/src/layouts/aggregateContainer.ts @@ -20,14 +20,13 @@ import { } from '../scope'; import { testForCollapseSelection } from '../selection'; import { Column } from '@msrvida/chart-types'; -import { JoinAggregateTransform, LinearScale, SignalRef } from 'vega-typings'; +import { JoinAggregateTransform, LinearScale } from 'vega-typings'; export interface AggregateContainerProps extends LayoutProps { dock: 'bottom' | 'top' | 'left'; sumBy: Column; globalAggregateMaxExtentSignal: string; globalAggregateMaxExtentScaledSignal: string; - niceScale: boolean | SignalRef; 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/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 }, }; }