Replace go back item with browser back button support
[arvados-workbench2.git] / src / views / project-panel / project-panel-selectors.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { TreeItem } from "../../components/tree/tree";
6 import { Project } from "../../models/project";
7 import { findTreeItem } from "../../store/project/project-reducer";
8 import { ResourceKind } from "../../models/resource";
9 import { Collection } from "../../models/collection";
10 import { getResourceUrl } from "../../store/navigation/navigation-action";
11 import { ProjectPanelItem } from "./project-panel-item";
12
13 export const projectPanelItems = (projects: Array<TreeItem<Project>>, treeItemId: string, collections: Array<Collection>): ProjectPanelItem[] => {
14     const dataItems: ProjectPanelItem[] = [];
15
16     const treeItem = findTreeItem(projects, treeItemId);
17     if (treeItem) {
18         if (treeItem.items) {
19             treeItem.items.forEach(p => {
20                 const item = {
21                     name: p.data.name,
22                     kind: ResourceKind.PROJECT,
23                     url: getResourceUrl(treeItem.data),
24                     owner: p.data.ownerUuid,
25                     uuid: p.data.uuid,
26                     lastModified: p.data.modifiedAt
27                 } as ProjectPanelItem;
28
29                 dataItems.push(item);
30             });
31         }
32     }
33
34     collections.forEach(c => {
35         const item = {
36             name: c.name,
37             kind: ResourceKind.COLLECTION,
38             url: getResourceUrl(c),
39             owner: c.ownerUuid,
40             uuid: c.uuid,
41             lastModified: c.modifiedAt
42         } as ProjectPanelItem;
43
44         dataItems.push(item);
45     });
46
47     return dataItems;
48 };
49