15027: Fixes unused declarations errors.
[arvados-workbench2.git] / src / views / workflow-panel / workflow-panel-view.tsx
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import * as React from 'react';
6 import { DataExplorer } from "~/views-components/data-explorer/data-explorer";
7 import { WorkflowIcon } from '~/components/icon/icon';
8 import { DataTableDefaultView } from '~/components/data-table-default-view/data-table-default-view';
9 import { WORKFLOW_PANEL_ID } from '~/store/workflow-panel/workflow-panel-actions';
10 import {
11     ResourceLastModifiedDate,
12     ResourceWorkflowName,
13     ResourceWorkflowStatus,
14     ResourceShare,
15     ResourceRunProcess
16 } from "~/views-components/data-explorer/renderers";
17 import { SortDirection } from '~/components/data-table/data-column';
18 import { DataColumns } from '~/components/data-table/data-table';
19 import { DataTableFilterItem } from '~/components/data-table-filters/data-table-filters';
20 import { Grid, Paper } from '@material-ui/core';
21 import { WorkflowDetailsCard } from './workflow-description-card';
22 import { WorkflowResource } from '~/models/workflow';
23 import { createTree } from '~/models/tree';
24
25 export enum WorkflowPanelColumnNames {
26     NAME = "Name",
27     AUTHORISATION = "Authorisation",
28     LAST_MODIFIED = "Last modified",
29     SHARE = 'Share'
30 }
31
32 export interface WorkflowPanelFilter extends DataTableFilterItem {
33     type: ResourceStatus;
34 }
35
36 export interface WorkflowPanelDataProps {
37     workflow?: WorkflowResource;
38 }
39
40 export interface WorfklowPanelActionProps {
41     handleRowDoubleClick: (workflowUuid: string) => void;
42     handleRowClick: (workflowUuid: string) => void;
43 }
44
45 export type WorkflowPanelProps = WorkflowPanelDataProps & WorfklowPanelActionProps;
46
47 export enum ResourceStatus {
48     PUBLIC = "Public",
49     PRIVATE = "Private",
50     SHARED = "Shared"
51 }
52
53 // TODO: restore filters
54 // const resourceStatus = (type: string) => {
55 //     switch (type) {
56 //         case ResourceStatus.PUBLIC:
57 //             return "Public";
58 //         case ResourceStatus.PRIVATE:
59 //             return "Private";
60 //         case ResourceStatus.SHARED:
61 //             return "Shared";
62 //         default:
63 //             return "Unknown";
64 //     }
65 // };
66
67 export const workflowPanelColumns: DataColumns<string> = [
68     {
69         name: WorkflowPanelColumnNames.NAME,
70         selected: true,
71         configurable: true,
72         sortDirection: SortDirection.ASC,
73         filters: createTree(),
74         render: (uuid: string) => <ResourceWorkflowName uuid={uuid} />
75     },
76     {
77         name: WorkflowPanelColumnNames.AUTHORISATION,
78         selected: true,
79         configurable: true,
80         filters: createTree(),
81         // TODO: restore filters
82         // filters: [
83         //     {
84         //         name: resourceStatus(ResourceStatus.PUBLIC),
85         //         selected: true,
86         //         type: ResourceStatus.PUBLIC
87         //     },
88         //     {
89         //         name: resourceStatus(ResourceStatus.PRIVATE),
90         //         selected: true,
91         //         type: ResourceStatus.PRIVATE
92         //     },
93         //     {
94         //         name: resourceStatus(ResourceStatus.SHARED),
95         //         selected: true,
96         //         type: ResourceStatus.SHARED
97         //     }
98         // ],
99         render: (uuid: string) => <ResourceWorkflowStatus uuid={uuid} />,
100     },
101     {
102         name: WorkflowPanelColumnNames.LAST_MODIFIED,
103         selected: true,
104         configurable: true,
105         sortDirection: SortDirection.NONE,
106         filters: createTree(),
107         render: (uuid: string) => <ResourceLastModifiedDate uuid={uuid} />
108     },
109     {
110         name: '',
111         selected: true,
112         configurable: false,
113         filters: createTree(),
114         render: (uuid: string) => <ResourceShare uuid={uuid} />
115     },
116     {
117         name: '',
118         selected: true,
119         configurable: false,
120         filters: createTree(),
121         render: (uuid: string) => <ResourceRunProcess uuid={uuid} />
122     }
123 ];
124
125 export const WorkflowPanelView = (props: WorkflowPanelProps) => {
126     return <Grid container spacing={16} style={{ minHeight: '500px' }}>
127         <Grid item xs={6}>
128             <DataExplorer
129                 id={WORKFLOW_PANEL_ID}
130                 onRowClick={props.handleRowClick}
131                 onRowDoubleClick={props.handleRowDoubleClick}
132                 contextMenuColumn={false}
133                 onContextMenu={e => e}
134                 dataTableDefaultView={<DataTableDefaultView icon={WorkflowIcon} />} />
135         </Grid>
136         <Grid item xs={6}>
137             <Paper style={{ height: '100%' }}>
138                 <WorkflowDetailsCard workflow={props.workflow} />
139             </Paper>
140         </Grid>
141     </Grid>;
142 };