export const DataTable = withStyles(styles)(
class Component<T> extends React.Component<DataTableProps<T>> {
render() {
- const { items, classes } = this.props;
+ const { items, classes, working } = this.props;
return <div className={classes.root}>
<div className={classes.content}>
<Table>
</TableRow>
</TableHead>
<TableBody className={classes.tableBody}>
- { this.props.working !== undefined && !this.props.working && items.map(this.renderBodyRow) }
+ { !working && items.map(this.renderBodyRow) }
</TableBody>
</Table>
- { this.props.working &&
+ { !!working &&
<div className={classes.loader}>
<DataTableDefaultView
icon={PendingIcon}
messages={['Loading data, please wait.']} />
</div> }
- {items.length === 0 && this.props.working !== undefined && !this.props.working && this.renderNoItemsPlaceholder()}
+ {items.length === 0 && !working && this.renderNoItemsPlaceholder()}
</div>
</div>;
}
working?: boolean;
}
-let data: any[] = [];
-let href: string = '';
+let prevRoute = '';
+let routeChanged = false;
+let isWorking = false;
const mapStateToProps = (state: RootState, { id }: Props) => {
const progress = state.progressIndicator.find(p => p.id === id);
const currentRoute = state.router.location ? state.router.location.pathname : '';
const currentItemUuid = currentRoute === '/workflows' ? state.properties.workflowPanelDetailsUuid : state.detailsPanel.resourceUuid;
- let loading = false;
-
- if (dataExplorerState.items.length > 0 && data === dataExplorerState.items && href !== window.location.href) {
- loading = true
- } else {
- href = window.location.href;
- data = dataExplorerState.items;
+ if (currentRoute !== prevRoute) {
+ routeChanged = true;
+ prevRoute = currentRoute;
+ }
+ if (progress?.working) {
+ isWorking = true;
}
- const working = (progress && progress.working) || loading;
+ const working = routeChanged && isWorking;
+
+ if (working && !progress?.working) {
+ routeChanged = false;
+ isWorking = false;
+ }
return { ...dataExplorerState, working, paperKey: currentRoute, currentItemUuid };
};
});
};
-export const DataExplorer = connect(mapStateToProps, mapDispatchToProps())(DataExplorerComponent);
+export const DataExplorer = connect(mapStateToProps, mapDispatchToProps)(DataExplorerComponent);