Skip to Content
Menu

17.50

v 17.0 Third Party
Availability
Odoo Online
Odoo.sh
On Premise
Lines of code 361
Technical Name web_x2many_chart
LicenseOPL-1
Websitehttps://github.com/RMTWorks
Versions 17.0 18.0
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Lines of code 361
Technical Name web_x2many_chart
LicenseOPL-1
Websitehttps://github.com/RMTWorks
Versions 17.0 18.0

📊 Web X2Many Chart

Transform your One2many and Many2many fields into stunning interactive charts

📈 Multiple Chart Types 🎨 Fully Customizable
🎬 See Charts In Action

Interactive Chart Demonstrations

Hover over the charts to see the interactive experience!

📊 Bar Chart

Sales Performance by Month

🥧 Pie Chart

Revenue by Product Category

⭐ Powerful Features
📊
Multiple Chart Types
Support for bar, line, area, pie, donut, radar, scatter, heatmap, and more. Each chart type is fully interactive with hover effects, zoom, and click events.
🎨
Complete Customization
Customize every aspect: colors, themes, data labels, legends, tooltips, axes, grid lines, markers, and more. Create charts that perfectly match your brand.
🔗
Universal Compatibility
Works with any One2many or Many2many field in any Odoo model. Automatically aggregates and visualizes your relational data.
📱
Responsive Design
Charts automatically adapt to different screen sizes and orientations. Perfect viewing experience on desktop, tablet, and mobile devices.
🎯
Interactive Events
Click on chart elements to drill down into data, open related records, or trigger custom actions. Full integration with Odoo's action system.
📈 Supported Chart Types
📊

Bar & Column

Perfect for comparing categories and showing data changes over time

📈

Line & Area

Ideal for trends, time series data, and continuous data visualization

🥧

Pie & Donut

Show proportions and percentages of different data segments

🎯

Radar & Polar

Multi-dimensional data comparison and performance analysis

🔥

Heatmap

Visualize data density and patterns across two dimensions

💡 Perfect Use Cases

📈 Sales Analytics

Visualize sales performance, revenue trends, and customer acquisition metrics with interactive charts

💰 Financial Reporting

Create stunning financial dashboards with P&L charts, cash flow analysis, and budget comparisons

📊 Project Management

Track project progress, resource allocation, and milestone achievements with visual charts

🎯 KPI Dashboards

Monitor key performance indicators and business metrics with real-time chart updates

👥 HR Analytics

Analyze employee performance, attendance patterns, and recruitment metrics

📦 Inventory Management

Visualize stock levels, product movements, and supply chain analytics

🚀 Quick Installation

Simple Widget Configuration

Configure your charts with simple widget options:

<field name="order_line_ids"
       widget="x2many_chart"
       options="{
           'type': 'bar',
           'series': [{'groupby': 'product_id', 'fields': 'price_total:sum'}],
           'chart_title': {'text': 'Sales by Product'}
       }"/>
💡 Pro Tip: The 'series' option is crucial! Define 'groupby' for data grouping and 'fields' for aggregation (e.g., 'price:sum', 'id:count'). This tells the chart how to process your relational data.

1. Install Module

Download and install through Odoo Apps.

2. Configure Series Data

Define your data series with 'groupby' and 'fields'. Essential for proper chart generation.

3. Add to Your Form

Simply add the widget to any One2many or Many2many field.

4. Enjoy Beautiful Charts!

Your relational data is now transformed into stunning, interactive charts.

📷 Real Implementation Screenshot

See the Module in Action on Real Odoo Data

Below is an actual screenshot showing the X2Many Chart widget displaying sales performance data directly in an Odoo contact form.

Web X2Many Chart in action - Sales Performance chart in Odoo contact form

💡 What you're seeing: A live bar chart embedded in a contact's form view, showing sales performance data aggregated from related records. The chart updates automatically as data changes, providing instant visual insights.

⚙️ Easy Configuration

Simple Widget Configuration

Configure your charts with simple widget options. Here's a basic example:

<field name="order_line_ids"
       widget="x2many_chart"
       options="{
           'type': 'bar',
           'series': [{'groupby': 'product_id', 'fields': 'price_total:sum', 'name': 'Total Sales'}]',
           'chart_title': {'text': 'Sales by Product'},
           'chart_height': '400px',
           'limit': 20
       }"/>
🎛️
Series Data Configuration
Define how your data is grouped and aggregated using the powerful 'series' option. Specify groupby fields and aggregation functions (sum, count, avg) to create meaningful visualizations.
🔄
Smart Data Processing
Uses Odoo's webReadGroup ORM function for efficient data aggregation. Automatically handles grouping, filtering, and data transformation for optimal performance.
📐
Flexible Sizing & Themes
Set custom width and height with responsive design. Built-in themes and color schemes, or create custom palettes to match your brand.
📊
Data Aggregation
Automatic data grouping and aggregation with support for date ranges, quarters, weeks, and custom grouping.
🔑 Critical: Series Configuration
The series option is essential for chart functionality. It defines how your relational data is grouped and aggregated using Odoo's webReadGroup method.

Series Configuration Deep Dive

The series option is a JSON string that defines how to fetch and aggregate data from your related records. It uses Odoo's powerful webReadGroup ORM method behind the scenes.

'series': [{
  'groupby': 'field_name',
  'fields': 'field_name:aggregation_function',
  'name': 'Series Display Name'
}]

Series Properties

Property Required Description Example
groupby ✅ Yes Field to group records by "product_id", "date", "state"
fields ✅ Yes Field with aggregation function "amount:sum", "id:count", "price:avg"
name ❌ No Display name for the series "Total Revenue", "Order Count"

Available Aggregation Functions

sum
Sum all values: "amount:sum"
🔢
count
Count records: "id:count"
📊
avg
Average values: "price:avg"
⬆️
max
Maximum value: "amount:max"
⬇️
min
Minimum value: "amount:min"
🔍
count_distinct
Unique count: "partner_id:count_distinct"

Series Examples by Chart Type

// Bar Chart - Sales by Product
'series': [{
  'groupby': 'product_id',
  'fields': 'price_total:sum',
  'name': 'Revenue'
}]
// Line Chart - Orders Over Time
'series': [{
  'groupby': 'date_order:month',
  'fields': 'id:count',
  'name': 'Monthly Orders'
}]
// Pie Chart - Orders by State
'series': [{
  'groupby': 'state',
  'fields': 'id:count',
  'name': 'Order Status'
}]
// Multi-Series Chart - Revenue and Count
'series': [
  {'groupby': 'product_id', 'fields': 'price_total:sum', 'name': 'Revenue'},
  {'groupby': 'product_id', 'fields': 'id:count', 'name': 'Quantity'}
]
⚠️ Important Notes:
• The series field is a JSON array, not a JavaScript object
• Field names must exist in your related model
• For count aggregation, use "id:count" or "field_name:count"
• Date grouping supports :day, :week, :month, :quarter, :year
• Pie charts use only the first series in the array
⚙️ Technical Specifications
Feature Details
Odoo Version 17.0 or Later (OWL Framework)
Field Support One2many, Many2many
Chart Types Bar, Line, Area, Pie, Donut, Radar, Scatter, Mixed
Responsive Yes - Mobile, Tablet, Desktop
Performance Optimized for Large Datasets
⚠️ Requirements: This module requires Odoo 17.0 or higher and depends on the standard 'web' module.
🏆 Why Choose Web X2Many Chart?
Premium Quality
Professional code standards, comprehensive testing, production-ready performance, and clean, maintainable architecture.
🎯
User Experience
Intuitive interface design, smooth animations and interactions, responsive across all devices.
👨‍💻
Developer Friendly
Well-documented code, easy to customize and extend, modern development practices.
💼
Business Value
Immediate visual insights, improved data comprehension, enhanced user engagement.

📊 Transform Your Data Today

Professional chart visualization • Easy installation • Comprehensive documentation • Active support

Made with ❤️ by RMT Works • Transform your Odoo data visualization today!
📧 Supports🌐 github.com/RMTWorks

Odoo Proprietary License v1.0

This software and associated files (the "Software") may only be used (executed,
modified, executed after modifications) if you have purchased a valid license
from the authors, typically via Odoo Apps, or if you have received a written
agreement from the authors of the Software (see the COPYRIGHT file).

You may develop Odoo modules that use the Software as a library (typically
by depending on it, importing it and using its resources), but without copying
any source code or material from the Software. You may distribute those
modules under the license of your choice, provided that this license is
compatible with the terms of the Odoo Proprietary License (For example:
LGPL, MIT, or proprietary licenses similar to this one).

It is forbidden to publish, distribute, sublicense, or sell copies of the Software
or modified copies of the Software.

The above copyright notice and this permission notice must be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author or have a question related to your purchase, please use the support page.