ScalingGroup
ScalingGroup manifests define named scaling values that multiple chart
components can reference. When several components share the same scaling group name,
their bar lengths (absolute variances) or pin lengths (relative variances) are
guaranteed to use the same em-based scale, making visual comparisons across
components meaningful.
Minimal definition
Section titled “Minimal definition”The smallest well-formed ScalingGroup is the name that consumers reference plus
the scaling value. spec.value is the only spec attribute.
apiVersion: bino.bi/v1alpha1
kind: ScalingGroup
metadata:
name: revenue_scale
spec:
value: 250000All attributes are listed in the Attribute Reference below.
Fields
Section titled “Fields”value– required. A positive number. The unit depends on the consumer attribute — all of them are map-scale semantics: a larger value means more data per em, i.e. smaller bars.- When referenced by
unitScaling– data units per 1 em of bar length (250000→ 1 em of bar represents 250 000 units). - When referenced by
percentageScaling– percentage points per 1 em of pin length (10→ a +10 % variance pin is 1 em long). - When referenced by a bubble chart's
size.group– data units per 1 em² of bubble area.
- When referenced by
How it works
Section titled “How it works”- Define one or more
ScalingGroupmanifests with a uniquemetadata.nameand a numericvalue. - On consumer components (
ChartTime,ChartStructure, andChartBubbleviasize.group), setunitScalingand/orpercentageScalingto the scaling group name instead of a hard-coded number. - Every consumer that references the same name resolves to the same value.
Changing the
ScalingGroupvalue updates all consumers at once.
Because the value is em-based, one group works uniformly across charts:
a revenue delta of 500 000 at value: 250000 renders as a 2 em bar in every
consumer, proportioned relative to each component's own font size.
Example: Synchronized charts
Section titled “Example: Synchronized charts”A time chart and a structure chart that share the same absolute and relative scaling:
---
apiVersion: bino.bi/v1alpha1
kind: ScalingGroup
metadata:
name: revenue_abs
spec:
value: 250000
---
apiVersion: bino.bi/v1alpha1
kind: ScalingGroup
metadata:
name: revenue_pct
spec:
value: 10
---
apiVersion: bino.bi/v1alpha1
kind: ChartTime
metadata:
name: revenue_trend
spec:
dataset: revenue_monthly
chartTitle: "Revenue trend"
dateInterval: month
measureScale: M
measureUnit: "EUR"
scenarios: ["ac1", "pp1"]
variances: ["dac1_pp1_pos", "drac1_pp1_pos"]
unitScaling: revenue_abs
percentageScaling: revenue_pct
---
apiVersion: bino.bi/v1alpha1
kind: ChartStructure
metadata:
name: revenue_chart
spec:
dataset: revenue_by_segment
chartTitle: "Revenue by segment"
level: category
order: ac1
orderDirection: desc
measureScale: M
measureUnit: "EUR"
scenarios: ["ac1", "pp1"]
variances: ["dac1_pp1_pos"]
unitScaling: revenue_abs
percentageScaling: revenue_pctBoth components render bars at exactly 250 000 units per em and pins at 10 percentage points per em. A revenue delta of 500 000 always produces a 2 em bar regardless of which component it appears in.
Example: Multiple pages with shared scaling
Section titled “Example: Multiple pages with shared scaling”Use a single scaling group across components on different layout pages:
---
apiVersion: bino.bi/v1alpha1
kind: ScalingGroup
metadata:
name: cost_scale
spec:
value: 50000
---
apiVersion: bino.bi/v1alpha1
kind: LayoutPage
metadata:
name: overview_page
spec:
pageLayout: split-vertical
children:
- kind: ChartTime
spec:
dataset: cost_monthly
chartTitle: "Monthly cost"
dateInterval: month
scenarios: ["ac1", "fc1"]
variances: ["dac1_fc1_pos"]
unitScaling: cost_scale
- kind: ChartStructure
spec:
dataset: cost_by_department
chartTitle: "Cost by department"
level: category
scenarios: ["ac1", "fc1"]
variances: ["dac1_fc1_pos"]
unitScaling: cost_scaleScaling group vs. numeric value
Section titled “Scaling group vs. numeric value”| Approach | Pros | Cons |
|---|---|---|
Numeric (unitScaling: 250000) | Simple, self-contained | Must update every component individually when tuning the scale |
Scaling group (unitScaling: cost_scale) | Single source of truth; all consumers stay in sync | Requires an extra manifest |
Use scaling groups when two or more components should be visually comparable. Use a plain number when a component stands alone.
Group members agree in em-space: bars match relative to each component's
effective font size. If consumers use different scale factors (or auto-scale
to different sizes), their bars match proportionally to their own typography,
not in absolute pixels — give them the same fixed scale when pixel-identical
bars are required.
Naming rules and diagnostics
Section titled “Naming rules and diagnostics”- Avoid the name
auto. It passes validation, but consumer attributes readautoas the auto-fit keyword, so the group can never be referenced. - Avoid names that would parse as a number — including SI-suffixed forms like
1Mor250k. They pass validation too, but they are ambiguous with a literal scaling value on the consumer attribute. - Two groups with the same name are a hard error: validation reports
duplicate ScalingGroup nameper artefact, after constraints are applied.
Attribute Reference
Section titled “Attribute Reference”Common Metadata
Section titled “Common Metadata”| Attribute | Type | Required | Default | Description |
|---|---|---|---|---|
apiVersion | string | yes | — | Must be bino.bi/v1alpha1. |
kind | string | yes | — | Must be ScalingGroup. |
metadata.name | string | yes | — | Unique identifier. Referenced by consumer components in unitScaling, percentageScaling or size.group. Duplicate names are a validation error. Avoid auto and names that parse as a number (e.g. 1M) — consumers read those as literal values. |
metadata.labels | object | no | — | Key-value pairs for categorization and constraint matching. |
metadata.annotations | object | no | — | Arbitrary key-value metadata, not used by the system. |
metadata.description | string | no | — | Free-form description. |
metadata.constraints | array | no | — | Conditional inclusion rules. See Constraints. |
Spec Attributes
Section titled “Spec Attributes”| Attribute | Type | Required | Default | Description | Sample |
|---|---|---|---|---|---|
spec.value | number | yes | — | Scaling value, greater than 0. Meaning depends on context: data units per em of bar (for unitScaling), percentage points per em of pin (for percentageScaling), or data units per em² of bubble area (for size.group). Larger value = smaller bars. | value: 250000 |