X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/d6d85de50096eb0053d58c5022fd4e949c830929..e09a9e644ad7937bb3800ca8096f444f6ff4411b:/src/views-components/side-panel-tree/side-panel-tree.tsx diff --git a/src/views-components/side-panel-tree/side-panel-tree.tsx b/src/views-components/side-panel-tree/side-panel-tree.tsx index 6445515c..19ab3184 100644 --- a/src/views-components/side-panel-tree/side-panel-tree.tsx +++ b/src/views-components/side-panel-tree/side-panel-tree.tsx @@ -2,63 +2,88 @@ // // SPDX-License-Identifier: AGPL-3.0 -import * as React from "react"; +import React from "react"; import { Dispatch } from "redux"; import { connect } from "react-redux"; import { TreePicker, TreePickerProps } from "../tree-picker/tree-picker"; -import { TreeItem } from "~/components/tree/tree"; -import { ProjectResource } from "~/models/project"; -import { ListItemTextIcon } from "~/components/list-item-text-icon/list-item-text-icon"; -import { ProjectIcon, FavoriteIcon, ProjectsIcon, ShareMeIcon, TrashIcon } from '~/components/icon/icon'; -import { RecentIcon, WorkflowIcon } from '~/components/icon/icon'; -import { activateSidePanelTreeItem, toggleSidePanelTreeItemCollapse, SIDE_PANEL_TREE, SidePanelTreeCategory } from '~/store/side-panel-tree/side-panel-tree-actions'; +import { TreeItem } from "components/tree/tree"; +import { ProjectResource } from "models/project"; +import { ListItemTextIcon } from "components/list-item-text-icon/list-item-text-icon"; +import { ProcessIcon, ProjectIcon, FilterGroupIcon, FavoriteIcon, ProjectsIcon, ShareMeIcon, TrashIcon, PublicFavoriteIcon, GroupsIcon, TerminalIcon } from 'components/icon/icon'; +import { activateSidePanelTreeItem, toggleSidePanelTreeItemCollapse, SIDE_PANEL_TREE, SidePanelTreeCategory } from 'store/side-panel-tree/side-panel-tree-actions'; +import { openSidePanelContextMenu } from 'store/context-menu/context-menu-actions'; +import { noop } from 'lodash'; +import { ResourceKind } from "models/resource"; +import { IllegalNamingWarning } from "components/warning/warning"; +import { GroupClass } from "models/group"; export interface SidePanelTreeProps { onItemActivation: (id: string) => void; + sidePanelProgress?: boolean; + isCollapsed?: boolean } -type SidePanelTreeActionProps = Pick; +type SidePanelTreeActionProps = Pick, 'onContextMenu' | 'toggleItemActive' | 'toggleItemOpen' | 'toggleItemSelection'>; const mapDispatchToProps = (dispatch: Dispatch, props: SidePanelTreeProps): SidePanelTreeActionProps => ({ - toggleItemActive: (nodeId) => { - dispatch(activateSidePanelTreeItem(nodeId)); - props.onItemActivation(nodeId); + onContextMenu: (event, { id }) => { + dispatch(openSidePanelContextMenu(event, id)); }, - toggleItemOpen: (nodeId) => { - dispatch(toggleSidePanelTreeItemCollapse(nodeId)); - } + toggleItemActive: (_, { id }) => { + dispatch(activateSidePanelTreeItem(id)); + props.onItemActivation(id); + }, + toggleItemOpen: (_, { id }) => { + dispatch(toggleSidePanelTreeItemCollapse(id)); + }, + toggleItemSelection: noop, }); export const SidePanelTree = connect(undefined, mapDispatchToProps)( (props: SidePanelTreeActionProps) => - ); +
+ +
); -const renderSidePanelItem = (item: TreeItem) => - ) => { + const name = typeof item.data === 'string' ? item.data : item.data.name; + const warn = typeof item.data !== 'string' && item.data.kind === ResourceKind.PROJECT + ? + : undefined; + return ; + hasMargin={true} + />; +}; const getProjectPickerIcon = (item: TreeItem) => typeof item.data === 'string' ? getSidePanelIcon(item.data) - : ProjectIcon; + : (item.data && item.data.groupClass === GroupClass.FILTER) + ? FilterGroupIcon + : ProjectsIcon; -const getSidePanelIcon = (category: string) => { +export const getSidePanelIcon = (category: string) => { switch (category) { case SidePanelTreeCategory.FAVORITES: return FavoriteIcon; case SidePanelTreeCategory.PROJECTS: return ProjectsIcon; - case SidePanelTreeCategory.RECENT_OPEN: - return RecentIcon; case SidePanelTreeCategory.SHARED_WITH_ME: return ShareMeIcon; case SidePanelTreeCategory.TRASH: return TrashIcon; - case SidePanelTreeCategory.WORKFLOWS: - return WorkflowIcon; + case SidePanelTreeCategory.PUBLIC_FAVORITES: + return PublicFavoriteIcon; + case SidePanelTreeCategory.ALL_PROCESSES: + return ProcessIcon; + case SidePanelTreeCategory.GROUPS: + return GroupsIcon; + case SidePanelTreeCategory.SHELL_ACCESS: + return TerminalIcon default: return ProjectIcon; }