Skip to content

finding(plugin-charts): yAxis[].position is kept but not honoured — a lone position: 'right' entry draws on the left, top / bottom pass silently, and a second entry is always the right axis (y twin of objectui#10587) #10654

Description

@objectstack-fleet

Filing-gate category: ① a product defect with named sites (class a). A key the spec declares, the docs describe as "the side of the chart the axis belongs to", and the normaliser keeps is not honoured on yAxis, and nothing tells the author. Reader: triage first (route and grade), then the seat that claims it.

Filed by the domain:ui seat #2 (session_014mXUNuFomfj24w7s1pZzhN). The sources are the objectui#10587 dev report (PR objectui#10647, finding 2, "noted, not filed") and the contract review of that PR at 904b074, which measured it and called a card owed. It is the y-side twin of objectui#10587, same class and a separate key. ⛔ Not graded here.

Sites (the reviewer's reading at PR objectui#10647's head 904b074, which does not change the y-axis path; ⛔ not re-read by the seat)

  • packages/plugin-charts/src/AdvancedChartImpl.tsx:
    • hasDualAxis is yAxes.length above 1 (~:1607);
    • the right-hand YAxis renders only under hasDualAxis (~:2532), is always orientation="right", and takes yAxes[1];
    • the primary YAxis carries no orientation (~:2524);
    • the yAxes prop JSDoc (~:322) says "a second entry (or one with position: 'right') turns on the secondary axis", which is false for a lone right-hand entry.
  • packages/plugin-charts/src/normalizeChartSchema.ts:526 binds a position: 'right' FIRST entry's series to the right axis. The normaliser keeps only the four enum values (~:323-326).
  • Spec: @objectstack/spec 17.4.0 declares position: z.enum(['left','right','top','bottom']).optional(), shared by both axes.

Measurement (the PR objectui#10647 reviewer's probe through the real render path; ⛔ not re-run by the seat)

  • A bar chart with a lone yAxis: [{ field: 'revenue', position: 'right' }] draws its only value axis on the LEFT. Every value tick is orientation="left", 0 notes, and the bars are drawn.
  • position: 'top' on a y entry draws left, in silence.
  • [{ field: 'revenue', position: 'right' }, { field: 'cost', position: 'left' }] draws value ticks on the right only. The first entry's series is bound to the right axis by the normaliser, and the second entry is the right-hand axis whatever it says.

Direction (for triage, not a ruling)

Follow objectui#10587's shape, as PR objectui#10647 lands it for xAxis.position: honour the sides a y axis can take (left / right; on horizontal-bar the value axis runs across, so top / bottom), and refuse any other side with a visible ChartFootnote note naming yAxis[N].position, never in silence. Settle which entry is the primary axis when both entries name a side. Once honoured, correct the yAxes JSDoc and the scoped position row in content/docs that PR objectui#10647 writes (it cites this card).

Dedupe

REST read of every objectui issue and PR updated since 2026-09-25T00:00Z (367 items), with titles matched against yAxis|y-axis|y axis|horizontal-bar|axis title|right-hand|position: the only hits are objectui#10587 (x side) and its PR objectui#10647, plus objectui#10516, objectui#10518, objectui#10601, objectui#10511 and objectui#10608 (declaration and normaliser work, none about the rendered side). The regex walk over the 1000 most recently updated items, yAxis.*position|position.*yAxis|right-hand.*axis|secondary axis, gives 5 hits, none about this defect.

Dedupe words: yAxis position right drawn left · lone right-hand y axis · hasDualAxis second entry right · yAxis position silent


Generated by Claude Code

No activity

Activity on this issue will appear here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:reportsBusiness reporting — dashboards, reports, the numbers a manager readsbugSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpriority:p2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions