Merge branch '21128-toolbar-context-menu'
[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 { openProcessContextMenu } from "store/context-menu/context-menu-actions";
8 import { SubprocessPanelRoot, SubprocessPanelActionProps, SubprocessPanelDataProps } from "views/subprocess-panel/subprocess-panel-root";
9 import { RootState } from "store/store";
10 import { navigateTo } from "store/navigation/navigation-action";
11 import { loadDetailsPanel } from "store/details-panel/details-panel-action";
12 import { getProcess } from "store/processes/process";
13 import { toggleOne } from 'store/multiselect/multiselect-actions';
14
15 const mapDispatchToProps = (dispatch: Dispatch): SubprocessPanelActionProps => ({
16     onContextMenu: (event, resourceUuid, resources) => {
17         const process = getProcess(resourceUuid)(resources);
18         if (process) {
19             dispatch<any>(openProcessContextMenu(event, process));
20         }
21     },
22     onRowClick: (uuid: string) => {
23         dispatch<any>(toggleOne(uuid))
24         dispatch<any>(loadDetailsPanel(uuid));
25     },
26     onItemDoubleClick: uuid => {
27         dispatch<any>(navigateTo(uuid));
28     },
29 });
30
31 const mapStateToProps = (state: RootState): Omit<SubprocessPanelDataProps,'process'> => ({
32     resources: state.resources,
33 });
34
35 export const SubprocessPanel = connect(mapStateToProps, mapDispatchToProps)(SubprocessPanelRoot);