X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/81db818eb5a3404d0b98e6afbbbccc1ae064fd48..d116e491ef904d97dcece5ab1632bef08906ec87:/src/views/project-panel/project-panel.tsx diff --git a/src/views/project-panel/project-panel.tsx b/src/views/project-panel/project-panel.tsx index dd61e58a74..3d7d89492c 100644 --- a/src/views/project-panel/project-panel.tsx +++ b/src/views/project-panel/project-panel.tsx @@ -12,17 +12,30 @@ import { DataTableFilterItem } from '../../components/data-table-filters/data-ta import { ContextMenuAction } from '../../components/context-menu/context-menu'; import { DispatchProp, connect } from 'react-redux'; import actions from "../../store/data-explorer/data-explorer-action"; -import { setProjectItem, ItemMode } from "../../store/navigation/navigation-action"; import { DataColumns } from '../../components/data-table/data-table'; import { ResourceKind } from "../../models/resource"; import { RouteComponentProps } from 'react-router'; +import { RootState } from '../../store/store'; +import DialogProjectCreate from '../../components/dialog-create/dialog-project-create'; export const PROJECT_PANEL_ID = "projectPanel"; -type ProjectPanelProps = { onItemClick: (item: ProjectPanelItem) => void } +type ProjectPanelProps = { + currentItemId: string, + onItemClick: (item: ProjectPanelItem) => void, + onItemRouteChange: (itemId: string) => void, + handleCreationDialogOpen: () => void; + handleCreationDialogClose: () => void; + isCreationDialogOpen: boolean; +} & DispatchProp - & WithStyles; + & WithStyles + & RouteComponentProps<{ id: string }>; class ProjectPanel extends React.Component { + state = { + open: false, + }; + render() { return
@@ -32,9 +45,10 @@ class ProjectPanel extends React.Component { - +
{ this.props.dispatch(actions.SET_COLUMNS({ id: PROJECT_PANEL_ID, columns })); } + componentWillReceiveProps({ match, currentItemId }: ProjectPanelProps) { + if (match.params.id !== currentItemId) { + this.props.onItemRouteChange(match.params.id); + } + } + toggleColumn = (toggledColumn: DataColumn) => { this.props.dispatch(actions.TOGGLE_COLUMN({ id: PROJECT_PANEL_ID, columnName: toggledColumn.name })); } @@ -81,6 +101,7 @@ class ProjectPanel extends React.Component { changeRowsPerPage = (rowsPerPage: number) => { this.props.dispatch(actions.SET_ROWS_PER_PAGE({ id: PROJECT_PANEL_ID, rowsPerPage })); } + } type CssRules = "toolbar" | "button"; @@ -92,7 +113,7 @@ const styles: StyleRulesCallback = theme => ({ }, button: { marginLeft: theme.spacing.unit - } + }, }); const renderName = (item: ProjectPanelItem) => @@ -213,4 +234,6 @@ const contextMenuActions = [[{ } ]]; -export default withStyles(styles)(connect()(ProjectPanel)); +export default withStyles(styles)( + connect((state: RootState) => ({ currentItemId: state.projects.currentItemId }))( + ProjectPanel));