|
@@ -26,21 +26,16 @@ export function GenericPerformanceWidget<T extends WidgetDataConstraint>(
|
|
|
props: WidgetPropUnion<T>
|
|
|
) {
|
|
|
const [widgetData, setWidgetData] = useState<T>({} as T);
|
|
|
- const [nextWidgetData, setNextWidgetData] = useState<T>({} as T);
|
|
|
|
|
|
const setWidgetDataForKey = useCallback(
|
|
|
(dataKey: string, result?: WidgetDataResult) => {
|
|
|
if (result) {
|
|
|
- setNextWidgetData({...nextWidgetData, [dataKey]: result});
|
|
|
- }
|
|
|
- if (result?.hasData || result?.isErrored) {
|
|
|
- setNextWidgetData({...nextWidgetData, [dataKey]: result});
|
|
|
setWidgetData({...widgetData, [dataKey]: result});
|
|
|
}
|
|
|
},
|
|
|
- [widgetData, nextWidgetData, setWidgetData, setNextWidgetData]
|
|
|
+ [setWidgetData]
|
|
|
);
|
|
|
- const widgetProps = {widgetData, nextWidgetData, setWidgetDataForKey};
|
|
|
+ const widgetProps = {widgetData, setWidgetDataForKey};
|
|
|
|
|
|
const queries = Object.entries(props.Queries).map(([key, definition]) => ({
|
|
|
...definition,
|
|
@@ -49,8 +44,6 @@ export function GenericPerformanceWidget<T extends WidgetDataConstraint>(
|
|
|
|
|
|
const api = useApi();
|
|
|
|
|
|
- const totalHeight = props.Visualizations.reduce((acc, curr) => acc + curr.height, 0);
|
|
|
-
|
|
|
return (
|
|
|
<Fragment>
|
|
|
<QueryHandler
|
|
@@ -60,34 +53,28 @@ export function GenericPerformanceWidget<T extends WidgetDataConstraint>(
|
|
|
queries={queries}
|
|
|
api={api}
|
|
|
/>
|
|
|
- <_DataDisplay<T> {...props} {...widgetProps} totalHeight={totalHeight} />
|
|
|
+ <_DataDisplay<T> {...props} {...widgetProps} />
|
|
|
</Fragment>
|
|
|
);
|
|
|
}
|
|
|
|
|
|
function _DataDisplay<T extends WidgetDataConstraint>(
|
|
|
- props: GenericPerformanceWidgetProps<T> &
|
|
|
- WidgetDataProps<T> & {nextWidgetData: T; totalHeight: number}
|
|
|
+ props: GenericPerformanceWidgetProps<T> & WidgetDataProps<T>
|
|
|
) {
|
|
|
- const {Visualizations, chartHeight, totalHeight, containerType} = props;
|
|
|
+ const {Visualizations, chartHeight, containerType} = props;
|
|
|
|
|
|
const Container = getPerformanceWidgetContainer({
|
|
|
containerType,
|
|
|
});
|
|
|
|
|
|
- const numberKeys = Object.keys(props.Queries).length;
|
|
|
- const missingDataKeys = Object.values(props.widgetData).length !== numberKeys;
|
|
|
- const missingNextDataKeys = Object.values(props.nextWidgetData).length !== numberKeys;
|
|
|
+ const missingDataKeys = !Object.values(props.widgetData).length;
|
|
|
const hasData =
|
|
|
!missingDataKeys && Object.values(props.widgetData).every(d => !d || d.hasData);
|
|
|
const isLoading =
|
|
|
- !missingNextDataKeys &&
|
|
|
- Object.values(props.nextWidgetData).some(d => !d || d.isLoading);
|
|
|
+ !missingDataKeys && Object.values(props.widgetData).some(d => !d || d.isLoading);
|
|
|
const isErrored =
|
|
|
!missingDataKeys && Object.values(props.widgetData).some(d => d && d.isErrored);
|
|
|
|
|
|
- const paddingOffset = 32; // space(2) * 2;
|
|
|
-
|
|
|
return (
|
|
|
<Container data-test-id="performance-widget-container">
|
|
|
<ContentContainer>
|
|
@@ -97,7 +84,7 @@ function _DataDisplay<T extends WidgetDataConstraint>(
|
|
|
isLoading={isLoading}
|
|
|
isErrored={isErrored}
|
|
|
hasData={hasData}
|
|
|
- errorComponent={<DefaultErrorComponent height={totalHeight - paddingOffset} />}
|
|
|
+ errorComponent={<DefaultErrorComponent height={chartHeight} />}
|
|
|
dataComponents={Visualizations.map((Visualization, index) => (
|
|
|
<ContentContainer
|
|
|
key={index}
|
|
@@ -112,7 +99,7 @@ function _DataDisplay<T extends WidgetDataConstraint>(
|
|
|
/>
|
|
|
</ContentContainer>
|
|
|
))}
|
|
|
- emptyComponent={<Placeholder height={`${totalHeight - paddingOffset}px`} />}
|
|
|
+ emptyComponent={<Placeholder height={`${chartHeight}px`} />}
|
|
|
/>
|
|
|
</Container>
|
|
|
);
|