const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
root: {
- position: 'relative',
width: '100%',
- height: '100%'
},
button: {
marginLeft: theme.spacing.unit
resources: ResourcesState;
isAdmin: boolean;
userUuid: string;
+ dataExplorerItems: any;
}
type ProjectPanelProps = ProjectPanelDataProps & DispatchProp
& WithStyles<CssRules> & RouteComponentProps<{ id: string }>;
+let data: any[] = [];
+let href: string = '';
+
export const ProjectPanel = withStyles(styles)(
connect((state: RootState) => ({
currentItemId: getProperty(PROJECT_PANEL_CURRENT_UUID)(state.properties),
resources: state.resources,
userUuid: state.auth.user!.uuid,
+ dataExplorerItems: state.dataExplorer?.projectPanel.items,
}))(
class extends React.Component<ProjectPanelProps> {
render() {
- const { classes } = this.props;
- return <div className={classes.root}>
+ const { classes, dataExplorerItems } = this.props;
+ let loading = false;
+
+ if (dataExplorerItems.length > 0 && data === dataExplorerItems && href !== window.location.href) {
+ loading = true
+ } else {
+ href = window.location.href;
+ data = dataExplorerItems;
+ }
+
+ return <div data-cy='project-panel' className={classes.root}>
<DataExplorer
+ working={loading}
id={PROJECT_PANEL_ID}
onRowClick={this.handleRowClick}
onRowDoubleClick={this.handleRowDoubleClick}
menuKind,
description: resource.description,
storageClassesDesired: (resource as CollectionResource).storageClassesDesired,
+ properties: ('properties' in resource) ? resource.properties : {},
}));
}
this.props.dispatch<any>(loadDetailsPanel(resourceUuid));