From 3d53e105cb3129174a26ce6cd67c40f5f9ece106 Mon Sep 17 00:00:00 2001 From: leonardomendix Date: Tue, 7 Oct 2025 15:05:46 +0200 Subject: [PATCH 1/2] refactor(custom-chart-web): change event data to return more properties --- .../custom-chart-web/CHANGELOG.md | 4 ++++ .../custom-chart-web/package.json | 2 +- .../src/controllers/ChartPropsController.ts | 17 +++++++++++++++-- .../custom-chart-web/src/package.xml | 2 +- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/packages/pluggableWidgets/custom-chart-web/CHANGELOG.md b/packages/pluggableWidgets/custom-chart-web/CHANGELOG.md index be71944679..e63eee12f4 100644 --- a/packages/pluggableWidgets/custom-chart-web/CHANGELOG.md +++ b/packages/pluggableWidgets/custom-chart-web/CHANGELOG.md @@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] +### Changed + +- We changed the event data to return more properties instead of only bbox coordinates. + ## [1.2.2] - 2025-09-21 ### Fixed diff --git a/packages/pluggableWidgets/custom-chart-web/package.json b/packages/pluggableWidgets/custom-chart-web/package.json index c526da4dc6..12c35e3717 100644 --- a/packages/pluggableWidgets/custom-chart-web/package.json +++ b/packages/pluggableWidgets/custom-chart-web/package.json @@ -1,7 +1,7 @@ { "name": "@mendix/custom-chart-web", "widgetName": "CustomChart", - "version": "1.2.2", + "version": "1.2.3", "description": "Create customizable charts with Plotly.js for advanced visualization needs", "copyright": "© Mendix Technology BV 2025. All rights reserved.", "license": "Apache-2.0", diff --git a/packages/pluggableWidgets/custom-chart-web/src/controllers/ChartPropsController.ts b/packages/pluggableWidgets/custom-chart-web/src/controllers/ChartPropsController.ts index fd933cc6e0..a05bad8bd0 100644 --- a/packages/pluggableWidgets/custom-chart-web/src/controllers/ChartPropsController.ts +++ b/packages/pluggableWidgets/custom-chart-web/src/controllers/ChartPropsController.ts @@ -124,8 +124,21 @@ export class ChartPropsController implements ReactiveController { private get chartOnClick(): (data: any) => void { return (data: any): void => { - if (this.props.eventDataAttribute) { - this.props.eventDataAttribute.setValue(JSON.stringify(data.points[0].bbox)); + if (this.props.eventDataAttribute && data.points && data.points.length > 0) { + const point = data.points[0]; + const eventData = { + curveNumber: point.curveNumber, + pointNumber: point.pointNumber, + pointIndex: point.pointIndex, + x: point.x, + y: point.y, + z: point.z, // for 3D charts + text: point.text, + hovertext: point.hovertext, + customdata: point.customdata, + bbox: point.bbox + }; + this.props.eventDataAttribute.setValue(JSON.stringify(eventData)); } executeAction(this.props.onClick); }; diff --git a/packages/pluggableWidgets/custom-chart-web/src/package.xml b/packages/pluggableWidgets/custom-chart-web/src/package.xml index 0f31c4da0d..4f62dd1658 100644 --- a/packages/pluggableWidgets/custom-chart-web/src/package.xml +++ b/packages/pluggableWidgets/custom-chart-web/src/package.xml @@ -1,6 +1,6 @@ - + From cf01bd8c09a73aecbd940ddb4086efa41b5b8e26 Mon Sep 17 00:00:00 2001 From: leonardomendix Date: Tue, 7 Oct 2025 16:03:16 +0200 Subject: [PATCH 2/2] refactor(custom-chart-web): review feedback and add extra properties --- .../src/controllers/ChartPropsController.ts | 38 ++++++++++++------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/packages/pluggableWidgets/custom-chart-web/src/controllers/ChartPropsController.ts b/packages/pluggableWidgets/custom-chart-web/src/controllers/ChartPropsController.ts index a05bad8bd0..9bf8d76410 100644 --- a/packages/pluggableWidgets/custom-chart-web/src/controllers/ChartPropsController.ts +++ b/packages/pluggableWidgets/custom-chart-web/src/controllers/ChartPropsController.ts @@ -126,19 +126,31 @@ export class ChartPropsController implements ReactiveController { return (data: any): void => { if (this.props.eventDataAttribute && data.points && data.points.length > 0) { const point = data.points[0]; - const eventData = { - curveNumber: point.curveNumber, - pointNumber: point.pointNumber, - pointIndex: point.pointIndex, - x: point.x, - y: point.y, - z: point.z, // for 3D charts - text: point.text, - hovertext: point.hovertext, - customdata: point.customdata, - bbox: point.bbox - }; - this.props.eventDataAttribute.setValue(JSON.stringify(eventData)); + if (point) { + const { curveNumber, pointNumber, pointIndex, x, y, z, lat, lon, location, pointNumbers } = point; + + const eventData = { + // Common properties for all chart types + curveNumber, + pointNumber, + pointIndex, + + // Coordinate values (Cartesian 2D, 3D) + x, + y, + z, // for 3D charts + + // Map coordinates (geographic charts) + lat, + lon, + location, + + // Histogram specific properties + pointNumbers + }; + + this.props.eventDataAttribute.setValue(JSON.stringify(eventData)); + } } executeAction(this.props.onClick); };