Repository navigation
[20.0][FIX] spreadsheet_oca: port the chart integration to the 20.0 data-source API - #13
Merged
dnplkndll merged 3 commits intoNov 7, 2026
Conversation
Inserting a graph view into a spreadsheet raised "Cannot find odoo_pie in
this registry!" and nothing was created.
20.0 removed the `odoo_bar` / `odoo_line` / `odoo_pie` chart types. A chart
now carries the plain o-spreadsheet type and names Odoo as its data source,
which is also where metaData, searchParams, cumulatedStart and actionXmlId
moved -- core's own 19.3.10 migration step rewrites stored definitions the
same way. chartTypeRegistry only knows the plain keys, so the 19.0-shaped
`odoo_${mode}` threw on CREATE_CHART.
metaData.mode is deliberately not passed on: ChartDataSource derives the
GraphModel mode from the chart type.
The rest of the definition is trimmed to each type's allowedDefinitionKeys.
20.0 dropped `verticalAxisPosition` and `axisType` from bar/line/pie, allows
`stacked` only on bar and line, and `cumulative` only on line. Unknown keys
are deleted without a word, so leaving them in only wrote dead state into
the saved payload.
Signed-off-by: Don Kendall <dkendall@ledoweb.com>
Assisted-by: Claude Opus 5
Opening any chart's side panel threw "getChartOdooMenu is not a function". The "Link to Odoo menu" section is extended into core's Generic, Bar, Line, Gauge and Scorecard config panels, so this hit every chart, not just the Odoo-sourced ones. 20.0 generalised the chart-to-menu reference into a chart-to-Odoo link that can point at either a menu or a data source: the getter is getChartOdooLink and returns the link record, and the command is UPDATE_ODOO_LINK_TO_CHART taking `odooLink`, where clearing it is `undefined` rather than a false id. getChartOdooLink already drops a link whose menu no longer resolves, but it can also return a "dataSource" link, so the type is checked before reading odooMenuId. Signed-off-by: Don Kendall <dkendall@ledoweb.com> Assisted-by: Claude Opus 5
Editing any Odoo-sourced chart threw "Cannot find odoo in this registry!" from ChartDataSourceComponent, so the whole chart side panel failed to render and the dialog was an "Oops!". 20.0 split the chart side panel: the generic part stays keyed by chart type, while the data-source section is delegated to a component looked up in chartDataSourceSidePanelComponentRegistry by `dataSource.type`. Core ships only "range" -- the Odoo entry was an Enterprise one -- so nothing answered for "odoo". This is the 20.0 home for what the module used to register as chartSidePanelComponentRegistry entries under `odoo_bar` / `odoo_pie` / ..., keys that no longer exist. An Odoo chart has no ranges for the user to pick, so the section names the view the chart reads from instead. Signed-off-by: Don Kendall <dkendall@ledoweb.com> Assisted-by: Claude Opus 5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Three 20.0 chart-integration defects in
spreadsheet_oca, found from a productionreport of "Cannot find odoo_pie in this registry!" when inserting the Invoices
Analysis chart into a spreadsheet.
All three are the same root cause: 20.0 restructured Odoo charts and the MIG kept the
19.0 shape.
odoo_bar/odoo_line/odoo_pieno longer exist as chart types — achart now carries the plain o-spreadsheet type and names Odoo as its data source.
Core's own
19.3.10migration step rewrites stored definitions exactly that way.Cannot find odoo_pie in this registry!, nothing createdtype: "odoo_pie"→type: "pie"+dataSource: {type: "odoo", …}getChartOdooMenu is not a functiongetChartOdooMenu→getChartOdooLink;LINK_ODOO_MENU_TO_CHART→UPDATE_ODOO_LINK_TO_CHARTCannot find odoo in this registry!, panel renders as "Oops!"chartSidePanelComponentRegistry["odoo_*"]→chartDataSourceSidePanelComponentRegistry["odoo"]Non-mechanical adaptations worth flagging
allowedDefinitionKeysanddeleteInvalidKeysstrips anything else silently.verticalAxisPositionandaxisTypeare gone from bar/line/pie,stackedis bar/line only,cumulativeisline only. The definition is now built per type rather than one shape for all three.
metaData.modeis deliberately not passed on.ChartDataSourcederives theGraphModel mode from the chart type, so storing it would be a second source of truth.
cumulatedStartmoved insidedataSource, whilecumulativestayed on thedefinition — matching where core's migration step puts each one.
"range"; the Odoo entry was an Enterprise one. An Odoo chart has no ranges to pick,so the section names the view the chart reads from.
Verification
Driven in a browser on Odoo 20.0 against a sanitized copy of production (501 invoices).
Insert from Invoices Analysis in pie, bar and line — each creates, renders live
data, persists, and reopens. Chart side panel opens; the Odoo-menu link reads and
writes. Pivot import unchanged.
odoo.loader.findErrors()clean, zero console errors.Reverting to the unfixed module on the same instance reproduces the reported error
exactly, at
ChartPlugin.checkChartDefinition.AI-assisted (Claude Code); every change reviewed, tested, and owned by the author.