// 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';
--- /dev/null
+// 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<any>, 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
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 = [[
{
icon: InputIcon,
name: "Inputs",
execute: (dispatch, resource) => {
- // add code
+ dispatch<any>(openProcessInputDialog(resource.uuid));
}
},
{
// 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';
--- /dev/null
+// 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<ProcessInputDialogData>) =>
+ <Dialog
+ open={props.open}
+ maxWidth={false}
+ onClose={props.closeDialog}>
+ <CardHeader
+ title="Inputs - Pipeline template that generates a config file from a template" />
+ <DialogContent>
+ cos
+ </DialogContent>
+ <DialogActions>
+ <Button
+ variant='flat'
+ color='primary'
+ onClick={props.closeDialog}>
+ Close
+ </Button>
+ </DialogActions>
+ </Dialog>
+);
\ No newline at end of file
export interface ProcessInformationCardDataProps {
process: Process;
onContextMenu: (event: React.MouseEvent<HTMLElement>) => void;
+ openProcessInputDialog: (uuid: string) => void;
}
type ProcessInformationCardProps = ProcessInformationCardDataProps & WithStyles<CssRules, true>;
export const ProcessInformationCard = withStyles(styles, { withTheme: true })(
- ({ classes, process, onContextMenu, theme }: ProcessInformationCardProps) =>
+ ({ classes, process, onContextMenu, theme, openProcessInputDialog }: ProcessInformationCardProps) =>
<Card className={classes.card}>
- {console.log(process)}
<CardHeader
classes={{
content: classes.title,
</Grid>
<Grid item xs={6}>
<DetailsAttribute classLabel={classes.link} label='Outputs' />
- <DetailsAttribute classLabel={classes.link} label='Inputs' />
+ <span onClick={() => openProcessInputDialog(process.containerRequest.uuid)}>
+ <DetailsAttribute classLabel={classes.link} label='Inputs' />
+ </span>
</Grid>
</Grid>
</CardContent>
export interface ProcessPanelRootActionProps {
onContextMenu: (event: React.MouseEvent<HTMLElement>, process: Process) => void;
onToggle: (status: string) => void;
+ openProcessInputDialog: (uuid: string) => void;
}
export type ProcessPanelRootProps = ProcessPanelRootDataProps & ProcessPanelRootActionProps;
<Grid item sm={12} md={7}>
<ProcessInformationCard
process={process}
- onContextMenu={event => props.onContextMenu(event, process)} />
+ onContextMenu={event => props.onContextMenu(event, process)}
+ openProcessInputDialog={props.openProcessInputDialog} />
</Grid>
<Grid item sm={12} md={5}>
<SubprocessesCard
import { ProcessPanel as ProcessPanelState} from '~/store/process-panel/process-panel';
import { groupBy } from 'lodash';
import { toggleProcessPanelFilter } from '~/store/process-panel/process-panel-actions';
+import { openProcessInputDialog } from '~/store/processes/process-input-actions';
const mapStateToProps = ({ router, resources, processPanel }: RootState): ProcessPanelRootDataProps => {
const pathname = router.location ? router.location.pathname : '';
},
onToggle: status => {
dispatch<any>(toggleProcessPanelFilter(status));
- }
+ },
+ openProcessInputDialog: (uuid) => dispatch<any>(openProcessInputDialog(uuid))
});
export const ProcessPanel = connect(mapStateToProps, mapDispatchToProps)(ProcessPanelRoot);
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';
<MultipleFilesRemoveDialog />
<PartialCopyCollectionDialog />
<ProcessCommandDialog />
+ <ProcessInputDialog />
<RenameFileDialog />
<RichTextEditorDialog />
<SharingDialog />