Replace go back item with browser back button support
[arvados-workbench2.git] / src / views / project-panel / project-panel-selectors.ts
index 610f2fa95522178ba1a0b4f2ff63bf1eb1a5ecd9..ee039a807a388c087584398c1092b851de07dfe6 100644 (file)
@@ -4,12 +4,46 @@
 
 import { TreeItem } from "../../components/tree/tree";
 import { Project } from "../../models/project";
-import { ProjectExplorerItem } from "../../views-components/project-explorer/project-explorer-item";
-
-export const mapProjectTreeItem = (item: TreeItem<Project>): ProjectExplorerItem => ({
-    name: item.data.name,
-    type: item.data.kind,
-    owner: item.data.ownerUuid,
-    lastModified: item.data.modifiedAt,
-    uuid: item.data.uuid
-});
+import { findTreeItem } from "../../store/project/project-reducer";
+import { ResourceKind } from "../../models/resource";
+import { Collection } from "../../models/collection";
+import { getResourceUrl } from "../../store/navigation/navigation-action";
+import { ProjectPanelItem } from "./project-panel-item";
+
+export const projectPanelItems = (projects: Array<TreeItem<Project>>, treeItemId: string, collections: Array<Collection>): ProjectPanelItem[] => {
+    const dataItems: ProjectPanelItem[] = [];
+
+    const treeItem = findTreeItem(projects, treeItemId);
+    if (treeItem) {
+        if (treeItem.items) {
+            treeItem.items.forEach(p => {
+                const item = {
+                    name: p.data.name,
+                    kind: ResourceKind.PROJECT,
+                    url: getResourceUrl(treeItem.data),
+                    owner: p.data.ownerUuid,
+                    uuid: p.data.uuid,
+                    lastModified: p.data.modifiedAt
+                } as ProjectPanelItem;
+
+                dataItems.push(item);
+            });
+        }
+    }
+
+    collections.forEach(c => {
+        const item = {
+            name: c.name,
+            kind: ResourceKind.COLLECTION,
+            url: getResourceUrl(c),
+            owner: c.ownerUuid,
+            uuid: c.uuid,
+            lastModified: c.modifiedAt
+        } as ProjectPanelItem;
+
+        dataItems.push(item);
+    });
+
+    return dataItems;
+};
+