15672: Shows "no subprocesses" message at subprocess panel when required.
[arvados-workbench2.git] / src / views / subprocess-panel / subprocess-panel.tsx
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { Dispatch } from "redux";
6 import { connect } from "react-redux";
7 import { openContextMenu, resourceKindToContextMenuKind } from '~/store/context-menu/context-menu-actions';
8 import { SubprocessPanelRoot, SubprocessPanelActionProps, SubprocessPanelDataProps } from '~/views/subprocess-panel/subprocess-panel-root';
9 import { ResourceKind } from '~/models/resource';
10 import { RootState } from "~/store/store";
11 import { navigateTo } from "~/store/navigation/navigation-action";
12 import { loadDetailsPanel } from "~/store/details-panel/details-panel-action";
13 import { getProcess } from "~/store/processes/process";
14
15 const mapDispatchToProps = (dispatch: Dispatch): SubprocessPanelActionProps => ({
16     onContextMenu: (event, resourceUuid, isAdmin) => {
17         const menuKind = resourceKindToContextMenuKind(resourceUuid, isAdmin);
18         const resource = getProcess(resourceUuid);
19         if (menuKind && resource) {
20             dispatch<any>(openContextMenu(event, {
21                 name: resource.name,
22                 uuid: resourceUuid,
23                 ownerUuid: '',
24                 kind: ResourceKind.PROCESS,
25                 menuKind
26             }));
27         }
28     },
29     onItemClick: (uuid: string) => {
30         dispatch<any>(loadDetailsPanel(uuid));
31     },
32     onItemDoubleClick: uuid => {
33         dispatch<any>(navigateTo(uuid));
34     }
35 });
36
37 const mapStateToProps = (state: RootState): SubprocessPanelDataProps => ({
38     isAdmin: state.auth.user ? state.auth.user.isAdmin : false
39 });
40
41 export const SubprocessPanel = connect(mapStateToProps, mapDispatchToProps)(SubprocessPanelRoot);