1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import * as React from 'react';
6 import { LINK_PANEL_ID } from '~/store/link-panel/link-panel-actions';
7 import { DataExplorer } from '~/views-components/data-explorer/data-explorer';
8 import { SortDirection } from '~/components/data-table/data-column';
9 import { DataColumns } from '~/components/data-table/data-table';
10 import { DataTableDefaultView } from '~/components/data-table-default-view/data-table-default-view';
11 import { ResourcesState } from '~/store/resources/resources';
12 import { ShareMeIcon } from '~/components/icon/icon';
13 import { createTree } from '~/models/tree';
15 ResourceLinkUuid, ResourceLinkHead, ResourceLinkTail,
16 ResourceLinkClass, ResourceLinkName }
17 from '~/views-components/data-explorer/renderers';
19 export enum LinkPanelColumnNames {
21 LINK_CLASS = "Link Class",
27 export const linkPanelColumns: DataColumns<string> = [
29 name: LinkPanelColumnNames.NAME,
32 sortDirection: SortDirection.NONE,
33 filters: createTree(),
34 render: uuid => <ResourceLinkName uuid={uuid} />
37 name: LinkPanelColumnNames.LINK_CLASS,
40 // sortDirection: SortDirection.NONE,
41 filters: createTree(),
42 render: uuid => <ResourceLinkClass uuid={uuid} />
45 name: LinkPanelColumnNames.TAIL,
48 // sortDirection: SortDirection.NONE,
49 filters: createTree(),
50 render: uuid => <ResourceLinkTail uuid={uuid} />
53 name: LinkPanelColumnNames.HEAD,
56 // sortDirection: SortDirection.NONE,
57 filters: createTree(),
58 render: uuid => <ResourceLinkHead uuid={uuid} />
61 name: LinkPanelColumnNames.UUID,
64 // sortDirection: SortDirection.NONE,
65 filters: createTree(),
66 render: uuid => <ResourceLinkUuid uuid={uuid} />
70 export interface LinkPanelDataProps {
71 resources: ResourcesState;
74 export interface LinkPanelActionProps {
75 onItemClick: (item: string) => void;
76 onContextMenu: (event: React.MouseEvent<HTMLElement>, item: string) => void;
77 onItemDoubleClick: (item: string) => void;
80 export type LinkPanelProps = LinkPanelDataProps & LinkPanelActionProps;
82 export const LinkPanelRoot = (props: LinkPanelProps) => {
85 onRowClick={props.onItemClick}
86 onRowDoubleClick={props.onItemDoubleClick}
87 onContextMenu={props.onContextMenu}
88 contextMenuColumn={true}
91 dataTableDefaultView={
94 messages={['Your link list is empty.']} />