From 5e3094c62b3eab3ae408590dea2384dfa427d6b8 Mon Sep 17 00:00:00 2001 From: Edoardo Sabadelli Date: Mon, 21 Sep 2026 10:50:48 +0200 Subject: [PATCH 1/3] fix: read vis id from visualizationId This replaces the old visualization prop which is an object. --- src/dashboard-plugin.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dashboard-plugin.tsx b/src/dashboard-plugin.tsx index 9efdefb5f..4dc131845 100644 --- a/src/dashboard-plugin.tsx +++ b/src/dashboard-plugin.tsx @@ -28,13 +28,13 @@ import './locales/index.js' type DashboardPluginProps = { displayProperty: CurrentUser['settings']['displayProperty'] - visualization: SavedVisualization + visualizationId: SavedVisualization['id'] filters?: PluginFilters } const DashboardPluginContent: FC = (props) => { logger.debug('DashboardPlugin props', props) - logger.debug('vis id', props.visualization.id) + logger.debug('vis id', props.visualizationId) const metadataStore = useMetadataStore() @@ -43,7 +43,7 @@ const DashboardPluginContent: FC = (props) => { const { data, error, loading, refetch } = useDataQuery({ eventVisualization: { resource: 'eventVisualizations', - id: props.visualization.id, // TODO: this should be just passed as visualizationId + id: props.visualizationId, params: { fields: getVisualizationQueryFields( // derive displayNameProperty from displayProperty From 1fa807910ed725e4954a7c52369a7c7a21b79254 Mon Sep 17 00:00:00 2001 From: Edoardo Sabadelli Date: Mon, 21 Sep 2026 11:03:26 +0200 Subject: [PATCH 2/3] fix: use new app name and key --- d2.config.js | 6 +++--- package.json | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/d2.config.js b/d2.config.js index f8003f874..31f210490 100644 --- a/d2.config.js +++ b/d2.config.js @@ -1,10 +1,10 @@ /** @type {import('@dhis2/cli-app-scripts').D2Config} */ const config = { type: 'app', - name: 'event-visualizer', + name: 'individual-data-visualizer', // id: TBD, - title: 'Event Visualizer', - coreApp: true, + title: 'Individual Data Visualizer', + coreApp: false, minDHIS2Version: '2.43', direction: 'auto', pwa: { diff --git a/package.json b/package.json index 419b1b9db..31f57a0dc 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { - "name": "event-visualizer-app", - "version": "0.0.1", - "description": "Event visualizer app and plugin", + "name": "individual-data-visualizer-app", + "version": "101.0.0", + "description": "Individual data visualizer app and plugin", "license": "BSD-3-Clause", "private": true, "scripts": { From 8cf99931425044e82c35c52979fd27bc885c316b Mon Sep 17 00:00:00 2001 From: Edoardo Sabadelli Date: Mon, 21 Sep 2026 11:58:06 +0200 Subject: [PATCH 3/3] fix: fix dashboard plugin props which causes Cypress failures --- src/dashboard-plugin.tsx | 10 +--------- src/plugin-host/plugin-host-app.tsx | 9 +++------ src/types/dashboard-plugin.ts | 7 +++++++ src/types/index.ts | 1 + 4 files changed, 12 insertions(+), 15 deletions(-) create mode 100644 src/types/dashboard-plugin.ts diff --git a/src/dashboard-plugin.tsx b/src/dashboard-plugin.tsx index 4dc131845..4e5af0f62 100644 --- a/src/dashboard-plugin.tsx +++ b/src/dashboard-plugin.tsx @@ -17,21 +17,13 @@ import { } from '@modules/visualization/state' import type { ApiSavedVisualization, - CurrentUser, CurrentVisualization, + DashboardPluginProps, EmptyVisualization, - PluginFilters, - SavedVisualization, } from '@types' import { useEffect, useMemo, type FC } from 'react' import './locales/index.js' -type DashboardPluginProps = { - displayProperty: CurrentUser['settings']['displayProperty'] - visualizationId: SavedVisualization['id'] - filters?: PluginFilters -} - const DashboardPluginContent: FC = (props) => { logger.debug('DashboardPlugin props', props) logger.debug('vis id', props.visualizationId) diff --git a/src/plugin-host/plugin-host-app.tsx b/src/plugin-host/plugin-host-app.tsx index dd31b583d..f62fdf6a9 100644 --- a/src/plugin-host/plugin-host-app.tsx +++ b/src/plugin-host/plugin-host-app.tsx @@ -1,19 +1,16 @@ import { Plugin as UntypedPlugin } from '@dhis2/app-runtime/experimental' -import type { PluginFilters } from '@types' +import type { DashboardPluginProps, PluginFilters } from '@types' import { useState, type FC } from 'react' /* Plugin types only its own layout props and forwards the rest as `any`, so * re-type it for the props this host sends. */ -type HostPluginProps = { +type HostPluginProps = DashboardPluginProps & { pluginSource: string /* Without a fixed height a PivotTable renders 0×0; a dashboard cell gives one. */ height: number - visualization: { id: string } - displayProperty: string forDashboard: boolean isVisualizationLoaded: boolean cacheId: string - filters?: PluginFilters } const Plugin: FC = UntypedPlugin @@ -84,7 +81,7 @@ export const PluginHostApp: FC = () => { key={trimmedVisualizationId} pluginSource="/plugin.html" height={400} - visualization={{ id: trimmedVisualizationId }} + visualizationId={trimmedVisualizationId} displayProperty="name" forDashboard isVisualizationLoaded diff --git a/src/types/dashboard-plugin.ts b/src/types/dashboard-plugin.ts new file mode 100644 index 000000000..1b1fdce22 --- /dev/null +++ b/src/types/dashboard-plugin.ts @@ -0,0 +1,7 @@ +import type { CurrentUser, PluginFilters, SavedVisualization } from '@types' + +export type DashboardPluginProps = { + displayProperty: CurrentUser['settings']['displayProperty'] + visualizationId: SavedVisualization['id'] + filters?: PluginFilters +} diff --git a/src/types/index.ts b/src/types/index.ts index d96383358..1eb894a14 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -53,6 +53,7 @@ export type AppCachedData = TransformedAppCachedData export type CurrentUser = TransformedAppCachedData['currentUser'] export type * from './axis' +export type * from './dashboard-plugin' export type * from './data-source' export type * from './dimension' export type * from './layout'