From 95563e85e95cae6a4ef6d2c2137fe1a3533ef8db Mon Sep 17 00:00:00 2001 From: Pawel Kowalczyk Date: Mon, 5 Nov 2018 15:11:18 +0100 Subject: [PATCH] init-process-input-modal-view Feature #14129 Arvados-DCO-1.1-Signed-off-by: Pawel Kowalczyk --- .../processes/process-command-actions.ts | 2 +- src/store/processes/process-input-actions.ts | 22 +++++++++++++ .../action-sets/process-action-set.ts | 3 +- .../process-command-dialog.tsx | 2 +- .../process-input-dialog.tsx | 31 +++++++++++++++++++ .../process-information-card.tsx | 8 +++-- .../process-panel/process-panel-root.tsx | 4 ++- src/views/process-panel/process-panel.tsx | 4 ++- src/views/workbench/workbench.tsx | 2 ++ 9 files changed, 70 insertions(+), 8 deletions(-) create mode 100644 src/store/processes/process-input-actions.ts create mode 100644 src/views-components/process-input-dialog/process-input-dialog.tsx diff --git a/src/store/processes/process-command-actions.ts b/src/store/processes/process-command-actions.ts index 6c765568..c014bd4c 100644 --- a/src/store/processes/process-command-actions.ts +++ b/src/store/processes/process-command-actions.ts @@ -3,7 +3,7 @@ // SPDX-License-Identifier: AGPL-3.0 import { dialogActions } from '~/store/dialog/dialog-actions'; -import { RootState } from '../store'; +import { RootState } from '~/store/store'; import { Dispatch } from 'redux'; import { getProcess } from '~/store/processes/process'; import { quote } from 'shell-quote'; diff --git a/src/store/processes/process-input-actions.ts b/src/store/processes/process-input-actions.ts new file mode 100644 index 00000000..7b0ae4c8 --- /dev/null +++ b/src/store/processes/process-input-actions.ts @@ -0,0 +1,22 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + +import { dialogActions } from '~/store/dialog/dialog-actions'; +import { RootState } from '~/store/store'; +import { Dispatch } from 'redux'; +import { getProcess } from '~/store/processes/process'; + +export const PROCESS_INPUT_DIALOG_NAME = 'processInputDialog'; + +export interface ProcessInputDialogData { +} + +export const openProcessInputDialog = (processUuid: string) => + (dispatch: Dispatch, getState: () => RootState) => { + const process = getProcess(processUuid)(getState().resources); + if (process) { + const data: ProcessInputDialogData = { process }; + dispatch(dialogActions.OPEN_DIALOG({ id: PROCESS_INPUT_DIALOG_NAME, data })); + } + }; \ No newline at end of file diff --git a/src/views-components/context-menu/action-sets/process-action-set.ts b/src/views-components/context-menu/action-sets/process-action-set.ts index 4ad68597..32d78e30 100644 --- a/src/views-components/context-menu/action-sets/process-action-set.ts +++ b/src/views-components/context-menu/action-sets/process-action-set.ts @@ -18,6 +18,7 @@ import { openProcessCommandDialog } from '~/store/processes/process-command-acti import { detailsPanelActions } from '~/store/details-panel/details-panel-action'; import { openSharingDialog } from "~/store/sharing-dialog/sharing-dialog-actions"; import { openAdvancedTabDialog } from "~/store/advanced-tab/advanced-tab"; +import { openProcessInputDialog } from "~/store/processes/process-input-actions"; export const processActionSet: ContextMenuActionSet = [[ { @@ -67,7 +68,7 @@ export const processActionSet: ContextMenuActionSet = [[ icon: InputIcon, name: "Inputs", execute: (dispatch, resource) => { - // add code + dispatch(openProcessInputDialog(resource.uuid)); } }, { diff --git a/src/views-components/process-command-dialog/process-command-dialog.tsx b/src/views-components/process-command-dialog/process-command-dialog.tsx index 81022ea5..c95a209a 100644 --- a/src/views-components/process-command-dialog/process-command-dialog.tsx +++ b/src/views-components/process-command-dialog/process-command-dialog.tsx @@ -3,7 +3,7 @@ // SPDX-License-Identifier: AGPL-3.0 import * as React from "react"; -import { Dialog, DialogTitle, DialogActions, Button, StyleRulesCallback, WithStyles, withStyles, Tooltip, IconButton, Grid, CardHeader } from '@material-ui/core'; +import { Dialog, DialogActions, Button, StyleRulesCallback, WithStyles, withStyles, Tooltip, IconButton, CardHeader } from '@material-ui/core'; import { withDialog } from "~/store/dialog/with-dialog"; import { PROCESS_COMMAND_DIALOG_NAME } from '~/store/processes/process-command-actions'; import { WithDialogProps } from '~/store/dialog/with-dialog'; diff --git a/src/views-components/process-input-dialog/process-input-dialog.tsx b/src/views-components/process-input-dialog/process-input-dialog.tsx new file mode 100644 index 00000000..96eab1cf --- /dev/null +++ b/src/views-components/process-input-dialog/process-input-dialog.tsx @@ -0,0 +1,31 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + +import * as React from "react"; +import { Dialog, DialogActions, Button, CardHeader, DialogContent } from '@material-ui/core'; +import { WithDialogProps } from '~/store/dialog/with-dialog'; +import { withDialog } from "~/store/dialog/with-dialog"; +import { PROCESS_INPUT_DIALOG_NAME, ProcessInputDialogData } from '~/store/processes/process-input-actions'; + +export const ProcessInputDialog = withDialog(PROCESS_INPUT_DIALOG_NAME)( + (props: WithDialogProps) => + + + + cos + + + + + +); \ No newline at end of file diff --git a/src/views/process-panel/process-information-card.tsx b/src/views/process-panel/process-information-card.tsx index 9b21ce5e..56c1a0e5 100644 --- a/src/views/process-panel/process-information-card.tsx +++ b/src/views/process-panel/process-information-card.tsx @@ -68,14 +68,14 @@ const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ export interface ProcessInformationCardDataProps { process: Process; onContextMenu: (event: React.MouseEvent) => void; + openProcessInputDialog: (uuid: string) => void; } type ProcessInformationCardProps = ProcessInformationCardDataProps & WithStyles; export const ProcessInformationCard = withStyles(styles, { withTheme: true })( - ({ classes, process, onContextMenu, theme }: ProcessInformationCardProps) => + ({ classes, process, onContextMenu, theme, openProcessInputDialog }: ProcessInformationCardProps) => - {console.log(process)} - + openProcessInputDialog(process.containerRequest.uuid)}> + + diff --git a/src/views/process-panel/process-panel-root.tsx b/src/views/process-panel/process-panel-root.tsx index ab8af36f..df0f7a64 100644 --- a/src/views/process-panel/process-panel-root.tsx +++ b/src/views/process-panel/process-panel-root.tsx @@ -22,6 +22,7 @@ export interface ProcessPanelRootDataProps { export interface ProcessPanelRootActionProps { onContextMenu: (event: React.MouseEvent, process: Process) => void; onToggle: (status: string) => void; + openProcessInputDialog: (uuid: string) => void; } export type ProcessPanelRootProps = ProcessPanelRootDataProps & ProcessPanelRootActionProps; @@ -32,7 +33,8 @@ export const ProcessPanelRoot = ({process, ...props}: ProcessPanelRootProps) => props.onContextMenu(event, process)} /> + onContextMenu={event => props.onContextMenu(event, process)} + openProcessInputDialog={props.openProcessInputDialog} /> { const pathname = router.location ? router.location.pathname : ''; @@ -32,7 +33,8 @@ const mapDispatchToProps = (dispatch: Dispatch): ProcessPanelRootActionProps => }, onToggle: status => { dispatch(toggleProcessPanelFilter(status)); - } + }, + openProcessInputDialog: (uuid) => dispatch(openProcessInputDialog(uuid)) }); export const ProcessPanel = connect(mapStateToProps, mapDispatchToProps)(ProcessPanelRoot); diff --git a/src/views/workbench/workbench.tsx b/src/views/workbench/workbench.tsx index 41f9682f..9566945f 100644 --- a/src/views/workbench/workbench.tsx +++ b/src/views/workbench/workbench.tsx @@ -44,6 +44,7 @@ import { WorkflowPanel } from '~/views/workflow-panel/workflow-panel'; import { SearchResultsPanel } from '~/views/search-results-panel/search-results-panel'; import { SharingDialog } from '~/views-components/sharing-dialog/sharing-dialog'; import { AdvancedTabDialog } from '~/views-components/advanced-tab-dialog/advanced-tab-dialog'; +import { ProcessInputDialog } from '~/views-components/process-input-dialog/process-input-dialog'; type CssRules = 'root' | 'container' | 'splitter' | 'asidePanel' | 'contentWrapper' | 'content'; @@ -125,6 +126,7 @@ export const WorkbenchPanel = + -- 2.30.2