From b996b1a67f09c6ce85ca9db086eda47ca3d3d581 Mon Sep 17 00:00:00 2001 From: Tim Chamberlain Date: Thu, 23 Feb 2023 17:02:33 -0600 Subject: [PATCH] SPRINT-21: attempt to fix weird widget behavior when widget data is not cleared out/async updates --- src/qqq/components/widgets/DashboardWidgets.tsx | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/qqq/components/widgets/DashboardWidgets.tsx b/src/qqq/components/widgets/DashboardWidgets.tsx index 63565b1..e92e3cc 100644 --- a/src/qqq/components/widgets/DashboardWidgets.tsx +++ b/src/qqq/components/widgets/DashboardWidgets.tsx @@ -85,6 +85,7 @@ function DashboardWidgets({widgetMetaDataList, tableName, entityPrimaryKey, omit useEffect(() => { + setWidgetData([]); for (let i = 0; i < widgetMetaDataList.length; i++) { const widgetMetaData = widgetMetaDataList[i]; @@ -96,17 +97,21 @@ function DashboardWidgets({widgetMetaDataList, tableName, entityPrimaryKey, omit (async () => { widgetData[i] = await qController.widget(widgetMetaData.name, urlParams); + setWidgetData(widgetData); setWidgetCounter(widgetCounter + 1); forceUpdate(); })(); } - setWidgetData(widgetData); }, [widgetMetaDataList]); const reloadWidget = async (index: number, data: string) => { - widgetData[index] = await qController.widget(widgetMetaDataList[index].name, getQueryParams(null, data)); - forceUpdate(); + (async() => + { + widgetData[index] = await qController.widget(widgetMetaDataList[index].name, getQueryParams(null, data)); + setWidgetData(widgetData); + forceUpdate(); + })(); }; function getQueryParams(widgetMetaData: QWidgetMetaData, extraParams: string): string @@ -174,7 +179,7 @@ function DashboardWidgets({widgetMetaDataList, tableName, entityPrimaryKey, omit widgetIndex={i} widgetMetaData={widgetMetaData} data={widgetData[i]} - reloadWidgetCallback={widgetData[i].omitReloadWidgetCallback ? () => + reloadWidgetCallback={widgetData[i]?.omitReloadWidgetCallback ? () => {} : reloadWidget} storeDropdownSelections={widgetMetaData.storeDropdownSelections} />