diff --git a/packages/pluggableWidgets/area-chart-web/CHANGELOG.md b/packages/pluggableWidgets/area-chart-web/CHANGELOG.md index 31c64e4597..b39026087c 100644 --- a/packages/pluggableWidgets/area-chart-web/CHANGELOG.md +++ b/packages/pluggableWidgets/area-chart-web/CHANGELOG.md @@ -6,7 +6,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] -## [6.2.0] - 2025-06-03 +### Changed + +- We updated shared charts dependency. + +## [6.1.0] - 2025-06-04 ### Fixed diff --git a/packages/pluggableWidgets/area-chart-web/package.json b/packages/pluggableWidgets/area-chart-web/package.json index cfe7b1c2f7..6072320230 100644 --- a/packages/pluggableWidgets/area-chart-web/package.json +++ b/packages/pluggableWidgets/area-chart-web/package.json @@ -1,7 +1,7 @@ { "name": "@mendix/area-chart-web", "widgetName": "AreaChart", - "version": "6.2.0", + "version": "6.1.1", "description": "An area chart displays a solid color between the traces of a graph.", "copyright": "© Mendix Technology BV 2025. All rights reserved.", "license": "Apache-2.0", @@ -18,7 +18,7 @@ }, "packagePath": "com.mendix.widget.web", "marketplace": { - "minimumMXVersion": "9.6.0", + "minimumMXVersion": "9.24.0.2965", "appName": "Area Chart" }, "testProject": { diff --git a/packages/pluggableWidgets/area-chart-web/src/package.xml b/packages/pluggableWidgets/area-chart-web/src/package.xml index 0929537270..6248233e6f 100644 --- a/packages/pluggableWidgets/area-chart-web/src/package.xml +++ b/packages/pluggableWidgets/area-chart-web/src/package.xml @@ -1,6 +1,6 @@ - + diff --git a/packages/pluggableWidgets/bar-chart-web/CHANGELOG.md b/packages/pluggableWidgets/bar-chart-web/CHANGELOG.md index 4c2e228426..ce742de066 100644 --- a/packages/pluggableWidgets/bar-chart-web/CHANGELOG.md +++ b/packages/pluggableWidgets/bar-chart-web/CHANGELOG.md @@ -6,7 +6,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] -## [6.2.0] - 2025-06-03 +### Changed + +- We updated shared charts dependency. + +## [6.1.0] - 2025-06-04 ### Fixed diff --git a/packages/pluggableWidgets/bar-chart-web/package.json b/packages/pluggableWidgets/bar-chart-web/package.json index 396c217930..7e2956c529 100644 --- a/packages/pluggableWidgets/bar-chart-web/package.json +++ b/packages/pluggableWidgets/bar-chart-web/package.json @@ -1,7 +1,7 @@ { "name": "@mendix/bar-chart-web", "widgetName": "BarChart", - "version": "6.2.0", + "version": "6.1.1", "description": "Shows difference between the data points for one or more categories.", "copyright": "© Mendix Technology BV 2025. All rights reserved.", "license": "Apache-2.0", @@ -18,7 +18,7 @@ }, "packagePath": "com.mendix.widget.web", "marketplace": { - "minimumMXVersion": "9.6.0", + "minimumMXVersion": "9.24.0.2965", "appName": "Bar Chart" }, "testProject": { diff --git a/packages/pluggableWidgets/bar-chart-web/src/package.xml b/packages/pluggableWidgets/bar-chart-web/src/package.xml index 687257e3a7..bfe0b65836 100644 --- a/packages/pluggableWidgets/bar-chart-web/src/package.xml +++ b/packages/pluggableWidgets/bar-chart-web/src/package.xml @@ -1,6 +1,6 @@ - + diff --git a/packages/pluggableWidgets/bubble-chart-web/CHANGELOG.md b/packages/pluggableWidgets/bubble-chart-web/CHANGELOG.md index e3b816fac4..97c9a16513 100644 --- a/packages/pluggableWidgets/bubble-chart-web/CHANGELOG.md +++ b/packages/pluggableWidgets/bubble-chart-web/CHANGELOG.md @@ -6,7 +6,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] -## [6.2.0] - 2025-06-03 +### Changed + +- We updated shared charts dependency. + +## [6.1.0] - 2025-06-04 ### Fixed diff --git a/packages/pluggableWidgets/bubble-chart-web/package.json b/packages/pluggableWidgets/bubble-chart-web/package.json index 055276a8d6..cedd52e2f2 100644 --- a/packages/pluggableWidgets/bubble-chart-web/package.json +++ b/packages/pluggableWidgets/bubble-chart-web/package.json @@ -1,7 +1,7 @@ { "name": "@mendix/bubble-chart-web", "widgetName": "BubbleChart", - "version": "6.2.0", + "version": "6.1.1", "description": "Shows data in a bubble format graph.", "copyright": "© Mendix Technology BV 2025. All rights reserved.", "license": "Apache-2.0", @@ -18,7 +18,7 @@ }, "packagePath": "com.mendix.widget.web", "marketplace": { - "minimumMXVersion": "9.6.0", + "minimumMXVersion": "9.24.0.2965", "appName": "Bubble Chart" }, "testProject": { diff --git a/packages/pluggableWidgets/bubble-chart-web/src/package.xml b/packages/pluggableWidgets/bubble-chart-web/src/package.xml index 118cdd6a80..7e74f83a85 100644 --- a/packages/pluggableWidgets/bubble-chart-web/src/package.xml +++ b/packages/pluggableWidgets/bubble-chart-web/src/package.xml @@ -1,6 +1,6 @@ - + diff --git a/packages/pluggableWidgets/chart-playground-web/CHANGELOG.md b/packages/pluggableWidgets/chart-playground-web/CHANGELOG.md index 2299c110d3..a3f1fc968d 100644 --- a/packages/pluggableWidgets/chart-playground-web/CHANGELOG.md +++ b/packages/pluggableWidgets/chart-playground-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 updated shared charts dependency. + ## [2.0.0] - 2025-02-28 ### Changed diff --git a/packages/pluggableWidgets/chart-playground-web/package.json b/packages/pluggableWidgets/chart-playground-web/package.json index b7437c73df..33564aa468 100644 --- a/packages/pluggableWidgets/chart-playground-web/package.json +++ b/packages/pluggableWidgets/chart-playground-web/package.json @@ -1,7 +1,7 @@ { "name": "@mendix/chart-playground-web", "widgetName": "ChartPlayground", - "version": "2.0.0", + "version": "2.0.1", "description": "A small playground widget for charts", "copyright": "© Mendix Technology BV 2025. All rights reserved.", "license": "Apache-2.0", diff --git a/packages/pluggableWidgets/chart-playground-web/src/package.xml b/packages/pluggableWidgets/chart-playground-web/src/package.xml index d4b762fbec..ab684e5183 100644 --- a/packages/pluggableWidgets/chart-playground-web/src/package.xml +++ b/packages/pluggableWidgets/chart-playground-web/src/package.xml @@ -1,6 +1,6 @@ - + diff --git a/packages/pluggableWidgets/charts-web/CHANGELOG.md b/packages/pluggableWidgets/charts-web/CHANGELOG.md index 380d19f3e3..27dd66caeb 100644 --- a/packages/pluggableWidgets/charts-web/CHANGELOG.md +++ b/packages/pluggableWidgets/charts-web/CHANGELOG.md @@ -6,51 +6,39 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] -## [6.2.0] Charts - 2025-06-03 +## [6.1.0] Charts - 2025-06-04 -### [6.2.0] AreaChart +### [6.1.0] AreaChart #### Fixed - We fixed an issue with aggregate being removed on plotly 3.0 -### [6.2.0] BarChart +### [6.1.0] BarChart #### Fixed - We fixed an issue with aggregate being removed on plotly 3.0 -### [6.2.0] BubbleChart +### [6.1.0] BubbleChart #### Fixed - We fixed an issue with aggregate being removed on plotly 3.0 -### [6.2.0] ColumnChart +### [6.1.0] ColumnChart #### Fixed - We fixed an issue with aggregate being removed on plotly 3.0 -### [1.2.0] CustomChart +### [1.1.0] CustomChart #### Changed - We increase the version to update shared code. -### [6.2.0] LineChart - -#### Fixed - -- We fixed an issue with aggregate being removed on plotly 3.0 - -### [6.2.0] PieChart - -#### Changed - -- We increase the version to update shared code. - -### [6.2.0] TimeSeries +### [6.1.0] TimeSeries #### Fixed diff --git a/packages/pluggableWidgets/charts-web/package.json b/packages/pluggableWidgets/charts-web/package.json index 8ab734d550..199b9e88b4 100644 --- a/packages/pluggableWidgets/charts-web/package.json +++ b/packages/pluggableWidgets/charts-web/package.json @@ -1,6 +1,6 @@ { "name": "@mendix/charts-web", - "version": "6.2.0", + "version": "6.1.1", "description": "Chart widgets collection for data visualization", "copyright": "© Mendix Technology BV 2025. All rights reserved.", "license": "Apache-2.0", @@ -28,7 +28,7 @@ }, "packagePath": "com.mendix.widget.web", "marketplace": { - "minimumMXVersion": "10.6.0.23934", + "minimumMXVersion": "9.24.0.2965", "appNumber": 105695, "appName": "Charts", "reactReady": true diff --git a/packages/pluggableWidgets/charts-web/src/package.xml b/packages/pluggableWidgets/charts-web/src/package.xml index 3291946680..88ef151efa 100644 --- a/packages/pluggableWidgets/charts-web/src/package.xml +++ b/packages/pluggableWidgets/charts-web/src/package.xml @@ -1,6 +1,6 @@ - + diff --git a/packages/pluggableWidgets/column-chart-web/CHANGELOG.md b/packages/pluggableWidgets/column-chart-web/CHANGELOG.md index 0376ce0467..f3cd1b10d9 100644 --- a/packages/pluggableWidgets/column-chart-web/CHANGELOG.md +++ b/packages/pluggableWidgets/column-chart-web/CHANGELOG.md @@ -6,7 +6,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] -## [6.2.0] - 2025-06-03 +### Changed + +- We updated shared charts dependency. + +## [6.1.0] - 2025-06-04 ### Fixed diff --git a/packages/pluggableWidgets/column-chart-web/package.json b/packages/pluggableWidgets/column-chart-web/package.json index 9d22a35101..f6075687ae 100644 --- a/packages/pluggableWidgets/column-chart-web/package.json +++ b/packages/pluggableWidgets/column-chart-web/package.json @@ -1,7 +1,7 @@ { "name": "@mendix/column-chart-web", "widgetName": "ColumnChart", - "version": "6.2.0", + "version": "6.1.1", "description": "Shows data in a column format graph.", "copyright": "© Mendix Technology BV 2025. All rights reserved.", "license": "Apache-2.0", @@ -18,7 +18,7 @@ }, "packagePath": "com.mendix.widget.web", "marketplace": { - "minimumMXVersion": "9.6.0", + "minimumMXVersion": "9.24.0.2965", "appName": "Column Chart" }, "testProject": { diff --git a/packages/pluggableWidgets/column-chart-web/src/package.xml b/packages/pluggableWidgets/column-chart-web/src/package.xml index 543022649e..7f6b2de5a5 100644 --- a/packages/pluggableWidgets/column-chart-web/src/package.xml +++ b/packages/pluggableWidgets/column-chart-web/src/package.xml @@ -1,6 +1,6 @@ - + diff --git a/packages/pluggableWidgets/custom-chart-web/CHANGELOG.md b/packages/pluggableWidgets/custom-chart-web/CHANGELOG.md index 0d53035801..8388f0cb4b 100644 --- a/packages/pluggableWidgets/custom-chart-web/CHANGELOG.md +++ b/packages/pluggableWidgets/custom-chart-web/CHANGELOG.md @@ -6,7 +6,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] -## [1.2.0] - 2025-06-03 +### Fixed + +- We fixed an issue with incorrect parsing and merging of layout and data properties. + +## [1.1.0] - 2025-06-04 ### Changed diff --git a/packages/pluggableWidgets/custom-chart-web/package.json b/packages/pluggableWidgets/custom-chart-web/package.json index 5915b281ea..04835da0db 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.0", + "version": "1.1.1", "description": "", "copyright": "© Mendix Technology BV 2025. All rights reserved.", "license": "Apache-2.0", @@ -20,7 +20,7 @@ }, "packagePath": "com.mendix.widget.web", "marketplace": { - "minimumMXVersion": "10.16.0", + "minimumMXVersion": "9.24.0.2965", "appNumber": 1234, "appName": "Custom chart" }, @@ -39,7 +39,7 @@ "publish-marketplace": "rui-publish-marketplace", "release": "cross-env NODE_OPTIONS=--max-old-space-size=8192 pluggable-widgets-tools release:web", "start": "cross-env NODE_OPTIONS=--max-old-space-size=8192 pluggable-widgets-tools start:server", - "test": "echo 'FIXME: Finish custom-chart-web unit test migration'", + "test": "pluggable-widgets-tools test:unit:web:enzyme-free", "update-changelog": "rui-update-changelog-widget", "verify": "rui-verify-package-format" }, diff --git a/packages/pluggableWidgets/custom-chart-web/src/package.xml b/packages/pluggableWidgets/custom-chart-web/src/package.xml index b63d811c08..b2d469ab57 100644 --- a/packages/pluggableWidgets/custom-chart-web/src/package.xml +++ b/packages/pluggableWidgets/custom-chart-web/src/package.xml @@ -1,6 +1,6 @@ - + diff --git a/packages/pluggableWidgets/custom-chart-web/src/utils/utils.spec.ts b/packages/pluggableWidgets/custom-chart-web/src/utils/utils.spec.ts new file mode 100644 index 0000000000..f420cd1770 --- /dev/null +++ b/packages/pluggableWidgets/custom-chart-web/src/utils/utils.spec.ts @@ -0,0 +1,56 @@ +import { parseData, parseLayout, parseConfig } from "../utils/utils"; + +describe("parseData", () => { + it("returns empty array when all inputs are empty", () => { + expect(parseData()).toEqual([]); + }); + + it("parses staticData only", () => { + const staticData = JSON.stringify([{ x: [1], y: [2] }]); + expect(parseData(staticData)).toEqual([{ x: [1], y: [2] }]); + }); + + it("parses sampleData when attributeData and staticData are empty", () => { + const sampleData = JSON.stringify([{ x: [3], y: [4] }]); + expect(parseData(undefined, undefined, sampleData)).toEqual([{ x: [3], y: [4] }]); + }); + + it("parses attributeData and ignores sampleData if attributeData is present", () => { + const attributeData = JSON.stringify([{ x: [5], y: [6] }]); + const sampleData = JSON.stringify([{ x: [7], y: [8] }]); + expect(parseData(undefined, attributeData, sampleData)).toEqual([{ x: [5], y: [6] }]); + }); +}); + +describe("parseLayout", () => { + it("returns empty object when all inputs are empty", () => { + expect(parseLayout()).toEqual({}); + }); + + it("parses staticLayout only", () => { + const staticLayout = JSON.stringify({ title: "Test" }); + expect(parseLayout(staticLayout)).toEqual({ title: "Test" }); + }); + + it("parses sampleLayout when attributeLayout and staticLayout are empty", () => { + const sampleLayout = JSON.stringify({ title: "Sample" }); + expect(parseLayout(undefined, undefined, sampleLayout)).toEqual({ title: "Sample" }); + }); + + it("parses attributeLayout and ignores sampleLayout if attributeLayout is present", () => { + const attributeLayout = JSON.stringify({ title: "Attr" }); + const sampleLayout = JSON.stringify({ title: "Sample" }); + expect(parseLayout(undefined, attributeLayout, sampleLayout)).toEqual({ title: "Attr" }); + }); +}); + +describe("parseConfig", () => { + it("returns empty object when configOptions is empty", () => { + expect(parseConfig()).toEqual({}); + }); + + it("parses configOptions", () => { + const configOptions = JSON.stringify({ responsive: true }); + expect(parseConfig(configOptions)).toEqual({ responsive: true }); + }); +}); diff --git a/packages/pluggableWidgets/custom-chart-web/src/utils/utils.ts b/packages/pluggableWidgets/custom-chart-web/src/utils/utils.ts index 75a6c72817..9e42663c40 100644 --- a/packages/pluggableWidgets/custom-chart-web/src/utils/utils.ts +++ b/packages/pluggableWidgets/custom-chart-web/src/utils/utils.ts @@ -3,14 +3,11 @@ export function parseData(staticData?: string, attributeData?: string, sampleDat let finalData: Data[] = []; try { - if (staticData) { - finalData = [...finalData, ...JSON.parse(staticData)]; - } - if (attributeData) { - finalData = [...finalData, ...JSON.parse(attributeData)]; - } - if (!finalData.length && sampleData) { - finalData = [...finalData, ...JSON.parse(sampleData)]; + const dataAttribute = attributeData ? JSON.parse(attributeData) : []; + finalData = [...finalData, ...(staticData ? JSON.parse(staticData) : []), ...dataAttribute]; + + if (dataAttribute.length === 0) { + finalData = [...finalData, ...(sampleData ? JSON.parse(sampleData) : [])]; } } catch (error) { console.error("Error parsing chart data:", error); @@ -23,14 +20,11 @@ export function parseLayout(staticLayout?: string, attributeLayout?: string, sam let finalLayout: Partial = {}; try { - if (staticLayout) { - finalLayout = { ...finalLayout, ...JSON.parse(staticLayout) }; - } - if (attributeLayout) { - finalLayout = { ...finalLayout, ...JSON.parse(attributeLayout) }; - } - if (Object.keys(finalLayout).length === 0 && sampleLayout) { - finalLayout = { ...finalLayout, ...JSON.parse(sampleLayout) }; + const layoutAttribute = attributeLayout ? JSON.parse(attributeLayout) : {}; + finalLayout = { ...finalLayout, ...(staticLayout ? JSON.parse(staticLayout) : {}), ...layoutAttribute }; + + if (Object.keys(layoutAttribute).length === 0) { + finalLayout = { ...finalLayout, ...(sampleLayout ? JSON.parse(sampleLayout) : {}) }; } } catch (error) { console.error("Error parsing chart layout:", error); diff --git a/packages/pluggableWidgets/heatmap-chart-web/CHANGELOG.md b/packages/pluggableWidgets/heatmap-chart-web/CHANGELOG.md index a217374a92..f7f84a6624 100644 --- a/packages/pluggableWidgets/heatmap-chart-web/CHANGELOG.md +++ b/packages/pluggableWidgets/heatmap-chart-web/CHANGELOG.md @@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] +### Fixed + +- We fixed on click events by correctly adding datasource. + ## [6.0.0] - 2025-02-28 ### Changed diff --git a/packages/pluggableWidgets/heatmap-chart-web/package.json b/packages/pluggableWidgets/heatmap-chart-web/package.json index 38200905a9..23ad296da0 100644 --- a/packages/pluggableWidgets/heatmap-chart-web/package.json +++ b/packages/pluggableWidgets/heatmap-chart-web/package.json @@ -1,7 +1,7 @@ { "name": "@mendix/heatmap-chart-web", "widgetName": "HeatMap", - "version": "6.0.0", + "version": "6.1.1", "description": "Shows data in a heatmap format graph.", "copyright": "© Mendix Technology BV 2025. All rights reserved.", "license": "Apache-2.0", diff --git a/packages/pluggableWidgets/heatmap-chart-web/src/HeatMap.xml b/packages/pluggableWidgets/heatmap-chart-web/src/HeatMap.xml index 4fb1191485..3e6fbf874b 100644 --- a/packages/pluggableWidgets/heatmap-chart-web/src/HeatMap.xml +++ b/packages/pluggableWidgets/heatmap-chart-web/src/HeatMap.xml @@ -184,7 +184,7 @@ - + On click action diff --git a/packages/pluggableWidgets/heatmap-chart-web/src/hooks/data.ts b/packages/pluggableWidgets/heatmap-chart-web/src/hooks/data.ts index 2060fb04ee..2afabc82d6 100644 --- a/packages/pluggableWidgets/heatmap-chart-web/src/hooks/data.ts +++ b/packages/pluggableWidgets/heatmap-chart-web/src/hooks/data.ts @@ -1,10 +1,11 @@ -import { ValueStatus } from "mendix"; -import { useEffect, useMemo, useState } from "react"; +import { ObjectItem, ValueStatus } from "mendix"; +import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { ensure } from "@mendix/pluggable-widgets-tools"; import { HeatMapContainerProps } from "../../typings/HeatMapProps"; import { ChartWidgetProps, compareAttrValuesAsc } from "@mendix/shared-charts/main"; import { executeAction } from "@mendix/widget-plugin-platform/framework/execute-action"; import Big from "big.js"; +import { PlotDatum } from "plotly.js-dist-min"; type HeatMapDataSeriesHooks = Pick< HeatMapContainerProps, @@ -67,6 +68,7 @@ export const useHeatMapDataSeries = ({ verticalSortOrder }: HeatMapDataSeriesHooks): HeatMapHookData => { const [heatmapChartData, setHeatMapData] = useState([]); + const objectMap = useRef>(new Map()); useEffect(() => { if (seriesDataSource.status === ValueStatus.Available && seriesDataSource.items) { @@ -90,7 +92,29 @@ export const useHeatMapDataSeries = ({ verticalSortAttribute ]); - const onClick = useMemo(() => (onClickAction ? () => executeAction(onClickAction) : undefined), [onClickAction]); + const onClick = useCallback( + (item: ObjectItem, data: PlotDatum) => { + let selectedObjectItem: ObjectItem | undefined = item; + if (selectedObjectItem === null || selectedObjectItem === undefined) { + const selectedLocalHeatmapData = heatmapChartData.values().find(heatMapPointData => { + return ( + heatMapPointData.horizontalAxisValue === data.x && + heatMapPointData.verticalAxisValue === data.y && + heatMapPointData.value === data.z + ); + }); + + if (selectedLocalHeatmapData) { + selectedObjectItem = objectMap.current.get(selectedLocalHeatmapData.id); + } + } + + if (selectedObjectItem) { + executeAction(onClickAction?.get(selectedObjectItem)); + } + }, + [onClickAction, heatmapChartData, seriesItemSelection] + ); return useMemo(() => { // `Array.reverse` mutates, so we make a copy. diff --git a/packages/pluggableWidgets/heatmap-chart-web/src/package.xml b/packages/pluggableWidgets/heatmap-chart-web/src/package.xml index 307cdfc052..4a8df91434 100644 --- a/packages/pluggableWidgets/heatmap-chart-web/src/package.xml +++ b/packages/pluggableWidgets/heatmap-chart-web/src/package.xml @@ -1,6 +1,6 @@ - + diff --git a/packages/pluggableWidgets/line-chart-web/package.json b/packages/pluggableWidgets/line-chart-web/package.json index 6d468db2d2..8835af1500 100644 --- a/packages/pluggableWidgets/line-chart-web/package.json +++ b/packages/pluggableWidgets/line-chart-web/package.json @@ -1,7 +1,7 @@ { "name": "@mendix/line-chart-web", "widgetName": "LineChart", - "version": "6.2.0", + "version": "6.1.0", "description": "Shows data in a line format graph.", "copyright": "© Mendix Technology BV 2025. All rights reserved.", "license": "Apache-2.0", @@ -18,7 +18,7 @@ }, "packagePath": "com.mendix.widget.web", "marketplace": { - "minimumMXVersion": "9.6.0", + "minimumMXVersion": "9.24.0.2965", "appName": "Line Chart" }, "testProject": { diff --git a/packages/pluggableWidgets/line-chart-web/src/package.xml b/packages/pluggableWidgets/line-chart-web/src/package.xml index 8b9f9e1c98..70ce0881cc 100644 --- a/packages/pluggableWidgets/line-chart-web/src/package.xml +++ b/packages/pluggableWidgets/line-chart-web/src/package.xml @@ -1,6 +1,6 @@ - + diff --git a/packages/pluggableWidgets/pie-doughnut-chart-web/CHANGELOG.md b/packages/pluggableWidgets/pie-doughnut-chart-web/CHANGELOG.md index e55eb02fd4..30f1b89e30 100644 --- a/packages/pluggableWidgets/pie-doughnut-chart-web/CHANGELOG.md +++ b/packages/pluggableWidgets/pie-doughnut-chart-web/CHANGELOG.md @@ -6,11 +6,15 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] -## [6.2.0] - 2025-06-03 - ### Changed -- We increase the version to update shared code. +- We updated shared charts dependency. + +## [6.1.0] - 2025-06-04 + +### Breaking + +- We remove listened to selection in order for charts to works on Studio Pro 9.24. ## [6.0.0] - 2025-02-28 diff --git a/packages/pluggableWidgets/pie-doughnut-chart-web/package.json b/packages/pluggableWidgets/pie-doughnut-chart-web/package.json index 5b1dbdcfc5..866632cea4 100644 --- a/packages/pluggableWidgets/pie-doughnut-chart-web/package.json +++ b/packages/pluggableWidgets/pie-doughnut-chart-web/package.json @@ -1,7 +1,7 @@ { "name": "@mendix/pie-doughnut-chart-web", "widgetName": "PieChart", - "version": "6.2.0", + "version": "6.1.1", "description": "Shows data in a pie format graph.", "copyright": "© Mendix Technology BV 2025. All rights reserved.", "license": "Apache-2.0", @@ -18,7 +18,7 @@ }, "packagePath": "com.mendix.widget.web", "marketplace": { - "minimumMXVersion": "9.6.0", + "minimumMXVersion": "9.24.0", "appName": "Pie Chart" }, "testProject": { diff --git a/packages/pluggableWidgets/pie-doughnut-chart-web/src/PieChart.tsx b/packages/pluggableWidgets/pie-doughnut-chart-web/src/PieChart.tsx index 97513e3f02..0dce3dba91 100644 --- a/packages/pluggableWidgets/pie-doughnut-chart-web/src/PieChart.tsx +++ b/packages/pluggableWidgets/pie-doughnut-chart-web/src/PieChart.tsx @@ -39,11 +39,10 @@ export function PieChart(props: PieChartContainerProps): ReactElement | null { seriesSortOrder: props.seriesSortOrder, seriesValueAttribute: props.seriesValueAttribute, onClickAction: props.onClickAction, - tooltipHoverText: props.tooltipHoverText, - seriesItemSelection: props.seriesItemSelection + tooltipHoverText: props.tooltipHoverText }); - const isPieClickable = props.seriesItemSelection?.type === "Single" || props.onClickAction; + const isPieClickable = props.onClickAction; return ( - - Selection type - - - - - - diff --git a/packages/pluggableWidgets/pie-doughnut-chart-web/src/hooks/data.ts b/packages/pluggableWidgets/pie-doughnut-chart-web/src/hooks/data.ts index 084bb505e7..8db2b91da6 100644 --- a/packages/pluggableWidgets/pie-doughnut-chart-web/src/hooks/data.ts +++ b/packages/pluggableWidgets/pie-doughnut-chart-web/src/hooks/data.ts @@ -18,7 +18,6 @@ type PieChartDataSeriesHooks = Pick< | "seriesSortOrder" | "seriesValueAttribute" | "tooltipHoverText" - | "seriesItemSelection" >; type LocalPieChartData = { @@ -39,8 +38,7 @@ export const usePieChartDataSeries = ({ seriesSortOrder, seriesValueAttribute, onClickAction, - tooltipHoverText, - seriesItemSelection + tooltipHoverText }: PieChartDataSeriesHooks): ChartWidgetProps["data"] => { const [pieChartData, setPieChartData] = useState([]); @@ -76,11 +74,8 @@ export const usePieChartDataSeries = ({ const onClick = useCallback( (item: ObjectItem) => { executeAction(onClickAction?.get(item)); - if (seriesItemSelection && seriesItemSelection.type === "Single") { - seriesItemSelection.setSelection(item); - } }, - [onClickAction, seriesItemSelection] + [onClickAction] ); return useMemo( diff --git a/packages/pluggableWidgets/pie-doughnut-chart-web/src/package.xml b/packages/pluggableWidgets/pie-doughnut-chart-web/src/package.xml index c19a1068a7..04d9c2c693 100644 --- a/packages/pluggableWidgets/pie-doughnut-chart-web/src/package.xml +++ b/packages/pluggableWidgets/pie-doughnut-chart-web/src/package.xml @@ -1,6 +1,6 @@ - + diff --git a/packages/pluggableWidgets/pie-doughnut-chart-web/typings/PieChartProps.d.ts b/packages/pluggableWidgets/pie-doughnut-chart-web/typings/PieChartProps.d.ts index f5dc83b04f..003f501dc5 100644 --- a/packages/pluggableWidgets/pie-doughnut-chart-web/typings/PieChartProps.d.ts +++ b/packages/pluggableWidgets/pie-doughnut-chart-web/typings/PieChartProps.d.ts @@ -4,7 +4,7 @@ * @author Mendix Widgets Framework Team */ import { ComponentType, CSSProperties, ReactNode } from "react"; -import { ListValue, ListActionValue, ListAttributeValue, ListExpressionValue, SelectionSingleValue } from "mendix"; +import { ListValue, ListActionValue, ListAttributeValue, ListExpressionValue } from "mendix"; import { Big } from "big.js"; export type SeriesSortOrderEnum = "asc" | "desc"; @@ -24,7 +24,6 @@ export interface PieChartContainerProps { seriesSortAttribute?: ListAttributeValue; seriesSortOrder: SeriesSortOrderEnum; seriesColorAttribute?: ListExpressionValue; - seriesItemSelection?: SelectionSingleValue; enableAdvancedOptions: boolean; showPlaygroundSlot: boolean; playground?: ReactNode; @@ -59,7 +58,6 @@ export interface PieChartPreviewProps { seriesSortAttribute: string; seriesSortOrder: SeriesSortOrderEnum; seriesColorAttribute: string; - seriesItemSelection: "None" | "Single"; enableAdvancedOptions: boolean; showPlaygroundSlot: boolean; playground: { widgetCount: number; renderer: ComponentType<{ children: ReactNode; caption?: string }> }; diff --git a/packages/pluggableWidgets/time-series-chart-web/CHANGELOG.md b/packages/pluggableWidgets/time-series-chart-web/CHANGELOG.md index fa7a135ccb..bb2af34ea5 100644 --- a/packages/pluggableWidgets/time-series-chart-web/CHANGELOG.md +++ b/packages/pluggableWidgets/time-series-chart-web/CHANGELOG.md @@ -6,7 +6,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] -## [6.2.0] - 2025-06-03 +### Changed + +- We updated shared charts dependency. + +## [6.1.0] - 2025-06-04 ### Fixed diff --git a/packages/pluggableWidgets/time-series-chart-web/package.json b/packages/pluggableWidgets/time-series-chart-web/package.json index b542d46aad..c8a44a109b 100644 --- a/packages/pluggableWidgets/time-series-chart-web/package.json +++ b/packages/pluggableWidgets/time-series-chart-web/package.json @@ -1,7 +1,7 @@ { "name": "@mendix/time-series-chart-web", "widgetName": "TimeSeries", - "version": "6.2.0", + "version": "6.1.1", "description": "Shows data changes over period of time.", "copyright": "© Mendix Technology BV 2025. All rights reserved.", "license": "Apache-2.0", @@ -18,7 +18,7 @@ }, "packagePath": "com.mendix.widget.web", "marketplace": { - "minimumMXVersion": "9.6.0", + "minimumMXVersion": "9.24.0", "appName": "Time Series" }, "testProject": { diff --git a/packages/pluggableWidgets/time-series-chart-web/src/package.xml b/packages/pluggableWidgets/time-series-chart-web/src/package.xml index ea4fcbe768..31208498ef 100644 --- a/packages/pluggableWidgets/time-series-chart-web/src/package.xml +++ b/packages/pluggableWidgets/time-series-chart-web/src/package.xml @@ -1,6 +1,6 @@ - + diff --git a/packages/shared/charts/package.json b/packages/shared/charts/package.json index a60cfe5125..7b26e21ae5 100644 --- a/packages/shared/charts/package.json +++ b/packages/shared/charts/package.json @@ -1,6 +1,6 @@ { "name": "@mendix/shared-charts", - "version": "2.2.0", + "version": "2.1.1", "description": "Shared components for charts", "copyright": "© Mendix Technology BV 2025. All rights reserved.", "private": true, diff --git a/packages/shared/charts/src/components/ChartView.tsx b/packages/shared/charts/src/components/ChartView.tsx index 3ef04c5837..d8fd5856de 100644 --- a/packages/shared/charts/src/components/ChartView.tsx +++ b/packages/shared/charts/src/components/ChartView.tsx @@ -32,10 +32,16 @@ export const ChartView = ({ const [{ curveNumber, pointIndex, pointIndices, pointNumber, pointNumbers }] = event.points; const index = pointIndex ?? pointNumber; const indices = pointIndices ?? pointNumbers; - const itemIndex = getItemIndex(index, indices); - const { dataSourceItems, onClick } = data[curveNumber]; - const item = dataSourceItems[itemIndex]; - onClick?.(item); + try { + const itemIndex = getItemIndex(index, indices); + const { dataSourceItems, onClick } = data[curveNumber]; + const item = dataSourceItems[itemIndex]; + onClick?.(item); + } catch (_e: any) { + // let the chart handle it's own onClick + const { onClick } = data[curveNumber]; + onClick?.(null, event.points[0]); + } }, [data] ); diff --git a/packages/shared/charts/src/components/types.ts b/packages/shared/charts/src/components/types.ts index d101cd784f..cdeb918657 100644 --- a/packages/shared/charts/src/components/types.ts +++ b/packages/shared/charts/src/components/types.ts @@ -1,11 +1,13 @@ import { ObjectItem } from "mendix"; -import { Config, Data, Layout } from "plotly.js-dist-min"; +import { Config, Data, Layout, PlotDatum } from "plotly.js-dist-min"; declare module "plotly.js-dist-min" { interface PlotDatum { /** This array appears on only when aggregation is used */ pointIndices?: number[]; pointNumbers?: number[]; + // this is only appear on 3 dimentional matrix datasource + z?: number; } } export type ExtraTraceProps = { @@ -14,7 +16,7 @@ export type ExtraTraceProps = { /** JSON string. Expected to be an object with custom 'trace' options. */ customSeriesOptions: string | undefined; /** Click handler for each point on current 'trace'. Should be call with ObjectItem associated with clicked point. */ - onClick?: (item: ObjectItem) => void; + onClick?: (item: ObjectItem | null, data?: Partial) => void; }; export type PlotTrace = Partial & ExtraTraceProps;