SPRINT-21: attempt to fix weird widget behavior when widget data is not cleared out/async updates

This commit is contained in:
Tim Chamberlain
2023-02-23 17:02:33 -06:00
parent 83c5e725c3
commit b996b1a67f

View File

@ -85,6 +85,7 @@ function DashboardWidgets({widgetMetaDataList, tableName, entityPrimaryKey, omit
useEffect(() => useEffect(() =>
{ {
setWidgetData([]);
for (let i = 0; i < widgetMetaDataList.length; i++) for (let i = 0; i < widgetMetaDataList.length; i++)
{ {
const widgetMetaData = widgetMetaDataList[i]; const widgetMetaData = widgetMetaDataList[i];
@ -96,17 +97,21 @@ function DashboardWidgets({widgetMetaDataList, tableName, entityPrimaryKey, omit
(async () => (async () =>
{ {
widgetData[i] = await qController.widget(widgetMetaData.name, urlParams); widgetData[i] = await qController.widget(widgetMetaData.name, urlParams);
setWidgetData(widgetData);
setWidgetCounter(widgetCounter + 1); setWidgetCounter(widgetCounter + 1);
forceUpdate(); forceUpdate();
})(); })();
} }
setWidgetData(widgetData);
}, [widgetMetaDataList]); }, [widgetMetaDataList]);
const reloadWidget = async (index: number, data: string) => const reloadWidget = async (index: number, data: string) =>
{ {
widgetData[index] = await qController.widget(widgetMetaDataList[index].name, getQueryParams(null, data)); (async() =>
forceUpdate(); {
widgetData[index] = await qController.widget(widgetMetaDataList[index].name, getQueryParams(null, data));
setWidgetData(widgetData);
forceUpdate();
})();
}; };
function getQueryParams(widgetMetaData: QWidgetMetaData, extraParams: string): string function getQueryParams(widgetMetaData: QWidgetMetaData, extraParams: string): string
@ -174,7 +179,7 @@ function DashboardWidgets({widgetMetaDataList, tableName, entityPrimaryKey, omit
widgetIndex={i} widgetIndex={i}
widgetMetaData={widgetMetaData} widgetMetaData={widgetMetaData}
data={widgetData[i]} data={widgetData[i]}
reloadWidgetCallback={widgetData[i].omitReloadWidgetCallback ? () => reloadWidgetCallback={widgetData[i]?.omitReloadWidgetCallback ? () =>
{} : reloadWidget} {} : reloadWidget}
storeDropdownSelections={widgetMetaData.storeDropdownSelections} storeDropdownSelections={widgetMetaData.storeDropdownSelections}
/> />