Skip to content

feat(graph): separate Y-axis range and zoom - #43

Merged
ecarreras merged 3 commits into
mainfrom
4122-feature-graph-y-zoom
Oct 5, 2026
Merged

ecarreras merged 3 commits into
mainfrom
4122-feature-graph-y-zoom

Conversation

@giscebot

@giscebot giscebot commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Parse the new y_zoom graph attribute independently from y_range.
  • Return explicit yAxisOpts.zoom values while preserving the initial range in yAxisOpts.mode.
  • Keep legacy payloads unchanged when y_zoom is omitted.
  • Document the end-to-end contract.

Compatibility

Existing XML and clients keep the exact legacy payload. Explicit y_zoom="slider|none" values are preserved in yAxisOpts.zoom; when the attribute is omitted, zoom remains omitted.

Tests

  • Full suite: 153 examples passing.
  • Added parser and processing coverage for line and bar graphs.
  • Added regression coverage for explicit y_zoom="none" with y_range="slider".

Dependencies

  • Requires gisce/erp#29399 for RNG validation of the new XML attribute.
  • Consumer implementation: gisce/webclient#4197 / gisce/webclient#4122.

Traceability

No TASK could be created in ERP project 9459 because this agent has no real ERP profile configured; only local profiles are available.

Co-authored-by: mguellsegarra <5711443+mguellsegarra@users.noreply.github.com>
@giscebot

giscebot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor Author

He trobat un bloqueig en el contracte independent per a gràfiques de barres.

A GraphChart.process, una barra només construeix yAxisOpts quan y_range == "slider" o y_zoom == "slider". Per tant, aquesta configuració documentada:

<graph type="bar" y_range="auto" y_zoom="none">

ignora y_range="auto" i no retorna ni mode ni valueOpts. Ho he reproduït sobre aquest HEAD amb dues dades (10 i 20): la línia retorna {"mode": "auto", "valueOpts": ...}, mentre que la barra retorna None.

Això fa que rang i zoom només siguin independents en barres quan el zoom és slider. Caldria emetre yAxisOpts també per als modes explícits auto/full de barres, mantenint exclòs el valor per defecte per no alterar el payload legacy, i afegir cobertura de bar + y_range="auto" + y_zoom="none" (idealment també full + none).

Validació: la suite existent passa, 151 examples, però no cobreix aquest cas.

@mguellsegarra

Copy link
Copy Markdown
Member

He trobat un bloqueig en el contracte independent per a gràfiques de barres.

A GraphChart.process, una barra només construeix yAxisOpts quan y_range == "slider" o y_zoom == "slider". Per tant, aquesta configuració documentada:

<graph type="bar" y_range="auto" y_zoom="none">

ignora y_range="auto" i no retorna ni mode ni valueOpts. Ho he reproduït sobre aquest HEAD amb dues dades (10 i 20): la línia retorna {"mode": "auto", "valueOpts": ...}, mentre que la barra retorna None.

Això fa que rang i zoom només siguin independents en barres quan el zoom és slider. Caldria emetre yAxisOpts també per als modes explícits auto/full de barres, mantenint exclòs el valor per defecte per no alterar el payload legacy, i afegir cobertura de bar + y_range="auto" + y_zoom="none" (idealment també full + none).

Validació: la suite existent passa, 151 examples, però no cobreix aquest cas.

arreglaho @giscebot

Co-authored-by: mguellsegarra <5711443+mguellsegarra@users.noreply.github.com>
@giscebot

giscebot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor Author

Arreglat a 76d7981: les gràfiques de barres ara emeten yAxisOpts per als rangs explícits auto i full encara que y_zoom="none", mantenint el payload legacy sense yAxisOpts quan el rang és el valor per defecte.

He afegit regressió per bar + auto/full + none; suite completa: 152 exemples passant.

@mguellsegarra

Copy link
Copy Markdown
Member

@giscebot

he revisat el canvi i el cas de les barres ja està cobert. però veig que encara només envies yAxisOps.zoom quan és slider

amb y_range="slider" y_zoom="none", el webclient rep mode: "slider" sense zoom i activa el slider per compatibilitat

pots conservar també el none explícit i ometre zoom només quan l’atribut no hi és? i hi afegiria un test d’aquesta combinació per evitar que es torni a colar

Co-authored-by: mguellsegarra <5711443+mguellsegarra@users.noreply.github.com>
@giscebot

giscebot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor Author

Arreglat a a09d1de: ara distingim entre y_zoom absent i y_zoom="none" explícit.

  • y_range="slider" y_zoom="none" retorna {"mode": "slider", "zoom": "none"}.
  • Si y_zoom no hi és, zoom continua omès per compatibilitat amb el payload legacy.
  • La cobertura inclou línies i barres, i també he ajustat els casos auto/full + none perquè preservin el none explícit.

Validació: suite completa, 153 exemples passant.

@ecarreras
ecarreras merged commit 5dadb14 into main Oct 5, 2026
1 check passed
@ecarreras
ecarreras deleted the 4122-feature-graph-y-zoom branch October 5, 2026 14:33
@ecarreras ecarreras added the minor Create a Minor version label Oct 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

minor Create a Minor version

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants