Added data selector for workbench data explorer
[arvados-workbench2.git] / src / views / data-explorer / data-explorer-selectors.ts
1 import { TreeItem } from "../../components/tree/tree";
2 import { Project } from "../../models/project";
3 import { DataItem } from "../../views-components/data-explorer/data-item";
4 import { findTreeItem } from "../../store/project/project-reducer";
5 import { ResourceKind } from "../../models/resource";
6 import { Collection } from "../../models/collection";
7
8
9 export const projectExplorerItems = (projects: Array<TreeItem<Project>>, treeItemId: string, collections: Array<Collection>): DataItem[] => {
10     const dataItems: DataItem[] = [];
11
12     const treeItem = findTreeItem(projects, treeItemId);
13     if (treeItem) {
14         dataItems.push({
15             name: "..",
16             url: `/projects/${treeItem.data.ownerUuid}`,
17             type: ResourceKind.LEVEL_UP,
18             owner: treeItem.data.ownerUuid,
19             uuid: treeItem.data.uuid,
20             lastModified: treeItem.data.modifiedAt
21         });
22
23         if (treeItem.items) {
24             treeItem.items.forEach(p => {
25                 const item = {
26                     name: p.data.name,
27                     type: ResourceKind.PROJECT,
28                     url: `/projects/${treeItem.data.uuid}`,
29                     owner: p.data.ownerUuid,
30                     uuid: p.data.uuid,
31                     lastModified: p.data.modifiedAt
32                 } as DataItem;
33
34                 dataItems.push(item);
35             });
36         }
37     }
38
39     collections.forEach(c => {
40         const item = {
41             name: c.name,
42             type: ResourceKind.COLLECTION,
43             url: `/collections/${c.uuid}`,
44             owner: c.ownerUuid,
45             uuid: c.uuid,
46             lastModified: c.modifiedAt
47         } as DataItem;
48
49         dataItems.push(item);
50     });
51
52     return dataItems;
53 };
54