Skip to content

Unificar les opcions dels eixos i afegir el slider X als gràfics - #41

Merged
ecarreras merged 1 commit into
mainfrom
fix/graph-y-axis-contract-and-gantt-zero
Sep 25, 2026
Merged

ecarreras merged 1 commit into
mainfrom
fix/graph-y-axis-contract-and-gantt-zero

Conversation

@mguellsegarra

Copy link
Copy Markdown
Member

Què canvia

  • Els gràfics line i bar poden demanar un slider horitzontal amb x_range="slider". process() retorna xAxisOpts: {"mode": "slider"} i es pot combinar amb y_range="slider".

  • Unifiquem les opcions de l’eix Y sota yAxisOpts. Els line hi retornen els modes default, auto, full i slider, amb els límits calculats a valueOpts quan és auto. Els bar continuen retornant opcions Y quan demanen slider.

  • Gantt conserva el valor numèric 0 com a nom o grup de tasca. Abans Python feia servir value or uninformed_string i convertia erròniament aquest 0 en un valor no informat. False i els valors realment no informats continuen mostrant el text de substitució. Vam detectar la diferència en comparar el processament del servidor amb el local.

D’on ve la diferència entre yAxisProps i yAxisOpts

Python va començar a retornar yAxisProps per als line el 2024, abans de la PR #40. El processador local i els components del webclient utilitzaven yAxisOpts. Per això hi havia dos noms per representar les opcions del mateix eix segons on es processava el gràfic.

La #40 va mantenir yAxisProps i va afegir yAxisOpts per indicar el slider Y perquè el webclient funcionés. Era coherent amb conservar la resposta existent, però va fer més visible la diferència: un line amb slider podia portar les dues claus. Aquesta PR no corregeix un error atribuïble a la #40; unifica dos contractes que ja havien evolucionat amb noms diferents.

Compatibilitat i integració

Aquest canvi modifica el contracte de process(): fins i tot un line antic sense slider retorna ara yAxisOpts en lloc de yAxisProps. Les dades dels gràfics line i bar no canvien, però qualsevol consumidor que llegeixi yAxisProps s’ha d’adaptar.

Un adaptador puntual al webclient per acceptar les dues claus seria possible i senzill. Però he triat unificar la resposta a Python per tenir el mateix nom en el processament local i el del servidor, sense mantenir dos contractes. Canviar tot el processador local i els components del webclient perquè utilitzin yAxisProps afectaria més codi.

Abans de publicar i consumir la nova versió cal actualitzar els tests i consumidors d’ERP (pendent de fer una PR), i validar que y_range="auto" manté el comportament esperat al webclient amb la flag d’ECharts apagada. Per utilitzar x_range="slider" en vistes servides per ERP, el seu Relax NG també ha d’acceptar l’atribut x_range.

Relacionat amb webclient#4108 i webclient#4110. També relacionat amb webclient#2472, que demana ajustar l’eix Y als valors de les dades.

Proves

Passen les 145 proves Mamba, la compilació Python i git diff --check. Les proves cobreixen els gràfics antics sense slider, els sliders X i Y per separat i combinats, els modes Y existents i el valor 0 a Gantt.

@giscebot giscebot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Revisió de mantenidor: el canvi és coherent amb el contracte actual del webclient, que ja consumeix yAxisOpts, i manté separades les opcions dels eixos X i Y. També he comprovat la correcció del cas 0 versus False a Gantt i la documentació del canvi incompatible per als consumidors antics. Validació local: 145 exemples Mamba passen amb Python 3.11 i Python 2.7, compileall passa i git diff --check no detecta problemes. La publicació s’ha de coordinar amb l’adaptació ERP i el Relax NG per x_range que la descripció ja marca com a pendents.

@mguellsegarra mguellsegarra added the minor Create a Minor version label Sep 25, 2026
@ecarreras
ecarreras merged commit 748ca89 into main Sep 25, 2026
1 check passed
@ecarreras
ecarreras deleted the fix/graph-y-axis-contract-and-gantt-zero branch September 25, 2026 13:20
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