// Copyright (C) The Arvados Authors. All rights reserved.
//
// SPDX-License-Identifier: AGPL-3.0
import * as React from 'react';
import { DataExplorer } from "~/views-components/data-explorer/data-explorer";
import { connect, DispatchProp } from 'react-redux';
import { RootState } from '~/store/store';
import { WorkflowIcon, ShareIcon } from '~/components/icon/icon';
import { ResourcesState, getResource } from '~/store/resources/resources';
import { navigateTo } from "~/store/navigation/navigation-action";
import { loadDetailsPanel } from "~/store/details-panel/details-panel-action";
import { DataTableDefaultView } from '~/components/data-table-default-view/data-table-default-view';
import { WORKFLOW_PANEL_ID } from '~/store/workflow-panel/workflow-panel-actions';
import { openContextMenu } from '~/store/context-menu/context-menu-actions';
import { GroupResource } from '~/models/group';
import { ContextMenuKind } from '~/views-components/context-menu/context-menu';
import {
ResourceLastModifiedDate,
RosurceWorkflowName,
ResourceWorkflowStatus
} from "~/views-components/data-explorer/renderers";
import { SortDirection } from '~/components/data-table/data-column';
import { DataColumns } from '~/components/data-table/data-table';
import { DataTableFilterItem } from '~/components/data-table-filters/data-table-filters';
import { Grid, Tooltip, IconButton } from '@material-ui/core';
import { WorkflowDescriptionCard } from './workflow-description-card';
export enum WorkflowPanelColumnNames {
NAME = "Name",
AUTHORISATION = "Authorisation",
LAST_MODIFIED = "Last modified",
SHARE = 'Share'
}
export interface WorkflowPanelFilter extends DataTableFilterItem {
type: ResourceStatus;
}
interface WorkflowPanelDataProps {
resources: ResourcesState;
}
export enum ResourceStatus {
PUBLIC = "Public",
PRIVATE = "Private",
SHARED = "Shared"
}
const resourceStatus = (type: string) => {
switch (type) {
case ResourceStatus.PUBLIC:
return "Public";
case ResourceStatus.PRIVATE:
return "Private";
case ResourceStatus.SHARED:
return "Shared";
default:
return "Unknown";
}
};
const ResourceShare = (props: { uuid: string }) => {
return
undefined}>
;
};
export const workflowPanelColumns: DataColumns = [
{
name: WorkflowPanelColumnNames.NAME,
selected: true,
configurable: true,
sortDirection: SortDirection.ASC,
filters: [],
render: (uuid: string) =>
},
{
name: WorkflowPanelColumnNames.AUTHORISATION,
selected: true,
configurable: true,
filters: [
{
name: resourceStatus(ResourceStatus.PUBLIC),
selected: true,
type: ResourceStatus.PUBLIC
},
{
name: resourceStatus(ResourceStatus.PRIVATE),
selected: true,
type: ResourceStatus.PRIVATE
},
{
name: resourceStatus(ResourceStatus.SHARED),
selected: true,
type: ResourceStatus.SHARED
}
],
render: (uuid: string) => ,
},
{
name: WorkflowPanelColumnNames.LAST_MODIFIED,
selected: true,
configurable: true,
sortDirection: SortDirection.NONE,
filters: [],
render: (uuid: string) =>
},
{
name: '',
selected: true,
configurable: false,
filters: [],
render: (uuid: string) =>
}
];
type WorkflowPanelProps = WorkflowPanelDataProps & DispatchProp;
export const WorkflowPanel = connect((state: RootState) => ({
resources: state.resources
}))(
class extends React.Component {
render() {
return
} />
;
}
handleContextMenu = (event: React.MouseEvent, resourceUuid: string) => {
const resource = getResource(resourceUuid)(this.props.resources);
if (resource) {
this.props.dispatch(openContextMenu(event, {
name: '',
uuid: resource.uuid,
ownerUuid: resource.ownerUuid,
isTrashed: resource.isTrashed,
kind: resource.kind,
menuKind: ContextMenuKind.PROJECT,
}));
}
}
handleRowDoubleClick = (uuid: string) => {
this.props.dispatch(navigateTo(uuid));
}
handleRowClick = (uuid: string) => {
this.props.dispatch(loadDetailsPanel(uuid));
}
}
);