X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/be4232a50f210b4c4023e3dc5fddb931e71a1c4a..efe0283919eb18e60ad876eaf6edef03c6cf04b3:/src/views/workbench/workbench.tsx?ds=sidebyside diff --git a/src/views/workbench/workbench.tsx b/src/views/workbench/workbench.tsx index a38afb7ac3..a3f7624f9f 100644 --- a/src/views/workbench/workbench.tsx +++ b/src/views/workbench/workbench.tsx @@ -29,7 +29,6 @@ import { CreateProjectDialog } from "~/views-components/create-project-dialog/cr import { detailsPanelActions, loadDetails } from "~/store/details-panel/details-panel-action"; import { contextMenuActions } from "~/store/context-menu/context-menu-actions"; -import { SidePanelIdentifiers } from '~/store/side-panel/side-panel-reducer'; import { ProjectResource } from '~/models/project'; import { ResourceKind } from '~/models/resource'; import { ContextMenu, ContextMenuKind } from "~/views-components/context-menu/context-menu"; @@ -50,6 +49,8 @@ import { MultipleFilesRemoveDialog } from '~/views-components/file-remove-dialog import { DialogCollectionCreateWithSelectedFile } from '~/views-components/create-collection-dialog-with-selected/create-collection-dialog-with-selected'; import { COLLECTION_CREATE_DIALOG } from '~/views-components/dialog-create/dialog-collection-create'; import { PROJECT_CREATE_DIALOG } from '~/views-components/dialog-create/dialog-project-create'; +import { TrashPanel } from "~/views/trash-panel/trash-panel"; +import { trashPanelActions } from "~/store/trash-panel/trash-panel-action"; const DRAWER_WITDH = 240; const APP_BAR_HEIGHT = 100; @@ -101,14 +102,15 @@ interface WorkbenchDataProps { sidePanelItems: SidePanelItem[]; } -interface WorkbenchServiceProps { +interface WorkbenchGeneralProps { authService: AuthService; + buildInfo: string; } interface WorkbenchActionProps { } -type WorkbenchProps = WorkbenchDataProps & WorkbenchServiceProps & WorkbenchActionProps & DispatchProp & WithStyles; +type WorkbenchProps = WorkbenchDataProps & WorkbenchGeneralProps & WorkbenchActionProps & DispatchProp & WithStyles; interface NavBreadcrumb extends Breadcrumb { itemId: string; @@ -193,6 +195,7 @@ export const Workbench = withStyles(styles)( searchText={this.state.searchText} user={this.props.user} menuItems={this.state.menuItems} + buildInfo={this.props.buildInfo} {...this.mainAppBarActions} /> {user && @@ -222,7 +225,6 @@ export const Workbench = withStyles(styles)( toggleActive={itemId => { this.props.dispatch(setProjectItem(itemId, ItemMode.ACTIVE)); this.props.dispatch(loadDetails(itemId, ResourceKind.PROJECT)); - this.props.dispatch(sidePanelActions.TOGGLE_SIDE_PANEL_ITEM_ACTIVE(SidePanelIdentifiers.PROJECTS)); }} /> } @@ -232,6 +234,7 @@ export const Workbench = withStyles(styles)( } /> + @@ -257,7 +260,7 @@ export const Workbench = withStyles(styles)( renderCollectionPanel = (props: RouteComponentProps<{ id: string }>) => { - this.props.dispatch(loadCollection(collectionId, ResourceKind.COLLECTION)); + this.props.dispatch(loadCollection(collectionId)); this.props.dispatch(loadCollectionTags(collectionId)); }} onContextMenu={(event, item) => { @@ -298,7 +301,7 @@ export const Workbench = withStyles(styles)( onItemDoubleClick={item => { switch (item.kind) { case ResourceKind.COLLECTION: - this.props.dispatch(loadCollection(item.uuid, item.kind as ResourceKind)); + this.props.dispatch(loadCollection(item.uuid)); this.props.dispatch(push(getCollectionUrl(item.uuid))); default: this.props.dispatch(setProjectItem(item.uuid, ItemMode.ACTIVE)); @@ -325,12 +328,38 @@ export const Workbench = withStyles(styles)( onItemDoubleClick={item => { switch (item.kind) { case ResourceKind.COLLECTION: - this.props.dispatch(loadCollection(item.uuid, item.kind as ResourceKind)); + this.props.dispatch(loadCollection(item.uuid)); + this.props.dispatch(push(getCollectionUrl(item.uuid))); + default: + this.props.dispatch(loadDetails(item.uuid, ResourceKind.PROJECT)); + this.props.dispatch(setProjectItem(item.uuid, ItemMode.ACTIVE)); + } + + }} + {...props} /> + + renderTrashPanel = (props: RouteComponentProps<{ id: string }>) => this.props.dispatch(trashPanelActions.REQUEST_ITEMS())} + onContextMenu={(event, item) => { + const kind = item.kind === ResourceKind.PROJECT ? ContextMenuKind.PROJECT : ContextMenuKind.RESOURCE; + this.openContextMenu(event, { + uuid: item.uuid, + name: item.name, + kind, + }); + }} + onDialogOpen={this.handleProjectCreationDialogOpen} + onItemClick={item => { + this.props.dispatch(loadDetails(item.uuid, item.kind as ResourceKind)); + }} + onItemDoubleClick={item => { + switch (item.kind) { + case ResourceKind.COLLECTION: + this.props.dispatch(loadCollection(item.uuid)); this.props.dispatch(push(getCollectionUrl(item.uuid))); default: this.props.dispatch(loadDetails(item.uuid, ResourceKind.PROJECT)); this.props.dispatch(setProjectItem(item.uuid, ItemMode.ACTIVE)); - this.props.dispatch(sidePanelActions.TOGGLE_SIDE_PANEL_ITEM_ACTIVE(SidePanelIdentifiers.PROJECTS)); } }} @@ -363,7 +392,6 @@ export const Workbench = withStyles(styles)( } toggleSidePanelActive = (itemId: string) => { - this.props.dispatch(sidePanelActions.TOGGLE_SIDE_PANEL_ITEM_ACTIVE(itemId)); this.props.dispatch(projectActions.RESET_PROJECT_TREE_ACTIVITY(itemId)); const panelItem = this.props.sidePanelItems.find(it => it.id === itemId);