diff --git a/bundles/statistics/statsgrid/handler/TableHandler.js b/bundles/statistics/statsgrid/handler/TableHandler.js index 55c137d47f..7ecda88288 100644 --- a/bundles/statistics/statsgrid/handler/TableHandler.js +++ b/bundles/statistics/statsgrid/handler/TableHandler.js @@ -10,7 +10,7 @@ class TableController extends StateHandler { this.setState({ ...this.stateHandler.getState(), selectedRegionset: null, - indicatorData: {}, + indicatorData: [], regionsetOptions: [], regions: [], flyout: null, @@ -87,14 +87,14 @@ class TableController extends StateHandler { regions.forEach(reg => { data[reg.id] = {}; }); - const promise = new Promise((resolve, reject) => { - this.state.indicators?.forEach((ind, index) => { + const promises = this.state.indicators.map(ind => { + return new Promise((resolve, reject) => { this.service.getIndicatorData(ind.datasource, ind.indicator, ind.selections, ind.series, this.state.selectedRegionset?.id, (err, indicatorData) => { if (err) { Messaging.error(this.loc('errors.regionsDataError')); this.updateState({ loading: false, - indicatorData: {}, + indicatorData: [], regions: [] }); return; @@ -110,14 +110,18 @@ class TableController extends StateHandler { ...region }; } + resolve(); }); - if (index === this.state.indicators.length - 1) resolve(); }); }); - promise.then(() => { + Promise.all(promises).then(() => { this.updateState({ loading: false, - indicatorData: data + indicatorData: regions.map(region => ({ + key: region.id, + regionName: region.name, + data: data[region.id] + })) }); }); }; @@ -127,7 +131,7 @@ class TableController extends StateHandler { Messaging.error(this.loc('errors.regionsDataError')); this.updateState({ loading: false, - indicatorData: {}, + indicatorData: [], regions: [] }); return; diff --git a/bundles/statistics/statsgrid/view/Table/TableFlyout.jsx b/bundles/statistics/statsgrid/view/Table/TableFlyout.jsx index 3d8ada851a..89bfd29d12 100644 --- a/bundles/statistics/statsgrid/view/Table/TableFlyout.jsx +++ b/bundles/statistics/statsgrid/view/Table/TableFlyout.jsx @@ -88,6 +88,12 @@ const TableFlyout = ({ state, controller }) => { sorter: getSorterFor('regionName'), sortOrder: sortOrder['regionName'], showSorterTooltip: false, + onCell: (record, rowIndex) => ({ + style: { background: '#ffffff' } + }), + onHeaderCell: (record, rowIndex) => ({ + style: { background: '#fafafa' } + }), title: () => { return ( @@ -165,11 +171,7 @@ const TableFlyout = ({ state, controller }) => { ) : ( ({ - key: region.id, - regionName: region.name, - data: state.indicatorData[region.id] - }))} + dataSource={[...state.indicatorData]} pagination={false} /> )}