Skip to main content
iVentureTeam

picking_type_dashboard_graph

The six little bars on every Odoo Inventory Overview card, late, yesterday, today, the next days, are the picking_type_dashboard_graph widget. Each bar is clickable and filters the transfer list to its exact date bucket.

Siddharth JambukiyaSiddharth JambukiyaOdoo Techno-Functional Consultant
August 24, 2026Updated August 24, 20264 min read
Technical namepicking_type_dashboard_graph
Field typestext (holding a JSON payload)
Viewskanban (Inventory Overview cards)
Modulestock
Used in core3 occurrences across 3 modules: operation type kanbans in stock, repair and mrp
VersionsOdoo 20.0, Odoo 19.0, Odoo 18.0
No-code setupNo. Applied via the widget attribute in view XML
Alternativesdashboard_graph, workcenter_dashboard_graph, forecast_widget

What the Operations graph widget does

The Inventory Overview shows one kanban card per operation type, receipts, deliveries, internal transfers, and each card carries a small bar chart of transfer volume across six date buckets. That chart is picking_type_dashboard_graph, bound to the kanban_dashboard_graph text field whose value is JSON computed server side: an array of points with a label, a value and a bucket type.

The widget extends the generic dashboard_graph journal widget from the web module and overrides only the bar chart configuration. The override adds a third color bucket, present, on top of the base widget's past and future, and, more importantly, an onClick handler that turns the chart into navigation.

What this means for your team

For an inventory manager the chart is a workload radar: the leftmost bar is your backlog (late transfers), the middle bars show today's load, and the right side previews what is coming. Because every bar is a filter shortcut, the overview doubles as triage: click the late bar on Deliveries and you are looking at exactly the overdue delivery list, with the operation type already filtered.

The color semantics carry meaning at a glance: past, present and future buckets each render in a distinct palette color, and dark mode is handled through the color scheme cookie.

Supported options in Odoo 19

There are no entries in supportedOptions. The single configuration knob is the graph_type attribute on the field element, inherited from the journal dashboard base, which switches between the bar and line renderers.

OptionTypeWhat it does
graph_typeattribute: bar or lineInherited from the journal dashboard base and passed as an attribute on the field element, not in options. Core uses bar; line falls back to the base renderer without click navigation or the present bucket color.
graph_type is an attribute, not an options dict key. Core always sets bar here; the line renderer is inherited from the base widget and lacks the click to filter behavior and the third color.

Working examples

<!-- Core usage on the operation type kanban (stock module) -->
<field t-if="!selection_mode" name="kanban_dashboard_graph"
       graph_type="bar" widget="picking_type_dashboard_graph"/>

The JSON in the field must be an array whose first entry holds values (points with label, value and a type of past, present or future) plus the picking_type_id that the click handler forwards to the action.

The six bucket click map

The click handler is a hardcoded map worth knowing when you extend the dashboard: column index 0 through 5 translate to the filter names before, yesterday, today, day_1, day_2 and after, and the handler fires the stock.click_dashboard_graph action with search_default_<bucket> plus the operation type preset in the context. Add a seventh bar server side and clicks on it map to nothing.

The guard is equally simple: if the chart config carries no pickingTypeId, which is how sample data for empty databases arrives, the click returns early. Repair and Manufacturing reuse the widget unchanged on their own operation type cards, which is why the usage count spans three modules.

Before 18.0 the operation type kanban carried no chart at all (the only dashboard-ish thing in the 16 and 17 views is a CSS class). The JSON field, the server computation and this widget all arrived together in 18.0, and the file has not changed by a byte since.

Version compatibility

VersionStatusNotes
Odoo 20.0In developmentNot released. The development branch file is byte-identical to 19.0; see below.
Odoo 19.0VerifiedVerified against the shipped source. Identical to 18.0.
Odoo 18.0VerifiedIntroduced here as a dedicated subclass with click to filter navigation.
Odoo 17.0Not availableDoes not exist. The operation type kanban had no chart at all; the field and widget arrived together in 18.0.
Odoo 16.0Not availableDoes not exist; no chart on the operation type kanban.
The widget exists since 18.0, and so does the chart itself: on 16 and 17 the operation type cards carried no graph field at all, so there is nothing to migrate from those versions.

What is changing in Odoo 20

Odoo 20 is expected at Odoo Experience in Brussels, 24 to 26 September 2026. The changes below are read from the public development branch and are not final until release.

The file is byte-identical to Odoo 19.0 on the development branch: same buckets, same click map, same colors. The neighboring dashboard ecosystem does move, the account module grows its own journal graph variant, but this widget is untouched. We re-verify after the release.

Common problems and fixes

SymptomCause and fix
Clicking a bar does nothingThe chart is rendering sample data without a picking_type_id, typical on fresh databases, or a custom payload omitted the id. Create real transfers, or include picking_type_id in the JSON your compute method builds.
All bars render in the fallback grayThe points carry a type outside past, present or future. Emit one of the three recognized bucket types per point in the compute method.
A custom seventh bar filters nothing when clickedThe click map covers exactly columns 0 to 5. Extend the widget and its dateCategories map alongside the server side buckets.
The chart does not render at allThe field value is not valid JSON, or the Chart.js bundle failed to load. Check the compute method output and the browser console for the chartjs_lib asset.

Operations graph widget vs the alternatives

WidgetBest forKey difference
picking_type_dashboard_graphTransfer volume mini charts on operation type cardsThree color date buckets and click to filter navigation into the transfer list
dashboard_graphJournal cards and generic kanban mini chartsTwo color buckets, no click navigation
workcenter_dashboard_graphWork center load charts in ManufacturingSame family, tuned for workcenter data
forecast_widgetPer move availability badgesA single colored badge instead of a chart

Use this widget only with the server computed JSON of operation types. For other mini chart needs, the relatives below cover the spectrum.

Frequently asked questions

Where does the data for the Inventory Overview chart come from?+
From the kanban_dashboard_graph text field on the operation type, computed server side as JSON: six points with label, value and a past, present or future bucket type, plus the picking_type_id used for click navigation.
What exactly happens when I click a bar?+
The widget maps the bar's position to a date filter (before, yesterday, today, day 1, day 2, after) and opens the stock.click_dashboard_graph action with that filter and the operation type preselected, landing you on the matching transfer list.
Can I show a line chart instead of bars?+
Technically yes with graph_type="line", but you get the base journal renderer: two colors and no click handling. The customized experience exists only for bars.
Why are the bars gray on a new database?+
Fresh databases render sample data so the cards do not look broken. Sample payloads carry no operation type id, points fall outside the recognized buckets, and clicks are ignored by design.

Want your own KPIs on the Inventory Overview?

The six bucket chart is fixed, but your operations are not. We build custom dashboard cards, extend the click through filters, and surface the warehouse KPIs your team actually steers by, directly on the Odoo overview screens.

Design your inventory dashboard

How this page was produced

The behavior was read from picking_type_dashboard_graph_field.js on Odoo 19.0, including the click bucket map, the sample data guard and the three color scheme, together with the journal_dashboard_graph base it extends and the kanban XML that applies it. Presence across 16.0 through 18.0 trees dated the introduction, and the Odoo 20 statement is a diff against the public development branch. Corrections welcome via our contact page.