Merge branch 'master'
[arvados-workbench2.git] / src / views-components / breadcrumbs / breadcrumbs.ts
index 306b29e7dbadd018461f6a5d27a95e8530f69c04..c2f33894ba0a57932000de4271414a1c494d145c 100644 (file)
@@ -5,50 +5,26 @@
 import { connect } from "react-redux";
 import { Breadcrumbs as BreadcrumbsComponent, BreadcrumbsProps } from '~/components/breadcrumbs/breadcrumbs';
 import { RootState } from '~/store/store';
-import { Breadcrumb } from '~/components/breadcrumbs/breadcrumbs';
-import { matchProjectRoute } from '~/routes/routes';
-import { getTreePicker } from '~/store/tree-picker/tree-picker';
-import { SIDE_PANEL_TREE } from '~/store/side-panel-tree/side-panel-tree-actions';
-import { getNodeAncestors, getNode } from '~/models/tree';
 import { Dispatch } from 'redux';
-import { navigateToResource } from '~/store/navigation/navigation-action';
-
-interface ResourceBreadcrumb extends Breadcrumb {
-    uuid: string;
-}
+import { navigateTo } from '~/store/navigation/navigation-action';
+import { getProperty } from '../../store/properties/properties';
+import { ResourceBreadcrumb, BREADCRUMBS } from '../../store/breadcrumbs/breadcrumbs-actions';
+import { openSidePanelContextMenu } from '~/store/context-menu/context-menu-actions';
 
 type BreadcrumbsDataProps = Pick<BreadcrumbsProps, 'items'>;
 type BreadcrumbsActionProps = Pick<BreadcrumbsProps, 'onClick' | 'onContextMenu'>;
 
-const memoizedMapStateToProps = () => {
-    let items: ResourceBreadcrumb[] = [];
-    return ({ router, treePicker }: RootState): BreadcrumbsDataProps => {
-        if (router.location) {
-            const projectMatch = matchProjectRoute(location.pathname);
-            const collectionMatch = matchProjectRoute(location.pathname);
-            const uuid = projectMatch && projectMatch.params.id
-                || collectionMatch && collectionMatch.params.id
-                || '';
-            const tree = getTreePicker(SIDE_PANEL_TREE)(treePicker);
-            if (tree) {
-                const ancestors = getNodeAncestors(uuid)(tree);
-                const node = getNode(uuid)(tree);
-                const nodes = node ? [...ancestors, node] : ancestors;
-                items = nodes.map(({ value }) =>
-                    typeof value.value === 'string'
-                        ? { label: value.value, uuid: value.nodeId }
-                        : { label: value.value.name, uuid: value.value.uuid });
-            }
-        }
-        return { items };
-    };
-};
+const mapStateToProps = () => ({ properties }: RootState): BreadcrumbsDataProps => ({
+    items: getProperty<ResourceBreadcrumb[]>(BREADCRUMBS)(properties) || []
+});
 
 const mapDispatchToProps = (dispatch: Dispatch): BreadcrumbsActionProps => ({
     onClick: ({ uuid }: ResourceBreadcrumb) => {
-        dispatch<any>(navigateToResource(uuid));
+        dispatch<any>(navigateTo(uuid));
     },
-    onContextMenu: () => { return; }
+    onContextMenu: (event, breadcrumb: ResourceBreadcrumb) => {
+        dispatch<any>(openSidePanelContextMenu(event, breadcrumb.uuid));
+    }
 });
 
-export const Breadcrumbs = connect(memoizedMapStateToProps(), mapDispatchToProps)(BreadcrumbsComponent);
\ No newline at end of file
+export const Breadcrumbs = connect(mapStateToProps(), mapDispatchToProps)(BreadcrumbsComponent);
\ No newline at end of file