1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import * as React from 'react';
6 import { ExpansionPanel, ExpansionPanelDetails, ExpansionPanelSummary } from '@material-ui/core';
7 import { reduxForm, Field } from 'redux-form';
8 import { Grid } from '@material-ui/core';
9 import { TextField } from '~/components/text-field/text-field';
10 import { ExpandIcon } from '~/components/icon/icon';
11 import * as IntInput from './inputs/int-input';
12 import { require } from '~/validators/require';
13 import { min } from '~/validators/min';
14 import { optional } from '~/validators/optional';
16 export const RUN_PROCESS_ADVANCED_FORM = 'runProcessAdvancedForm';
18 const OUTPUT_FIELD = 'output';
19 const RUNTIME_FIELD = 'runtime';
20 const RAM_FIELD = 'ram';
21 const VCPUS_FIELD = 'vcpus';
22 const KEEP_CACHE_RAM_FIELD = 'keepCacheRam';
24 export interface RunProcessAdvancedFormData {
25 [OUTPUT_FIELD]?: string;
26 [RUNTIME_FIELD]?: string;
28 [VCPUS_FIELD]: number;
29 [KEEP_CACHE_RAM_FIELD]?: number;
32 export const RunProcessAdvancedForm =
33 reduxForm<RunProcessAdvancedFormData>({
34 form: RUN_PROCESS_ADVANCED_FORM,
36 [RAM_FIELD]: 1073741824,
41 <ExpansionPanel elevation={0}>
42 <ExpansionPanelSummary style={{ padding: 0 }} expandIcon={<ExpandIcon />}>
44 </ExpansionPanelSummary>
45 <ExpansionPanelDetails style={{ padding: 0 }}>
46 <Grid container spacing={32}>
47 <Grid item xs={12} md={6}>
51 label="Output name" />
53 <Grid item xs={12} md={6}>
57 label="Runtime limit (hh)" />
59 <Grid item xs={12} md={6}>
64 helperText="Number of ram bytes to be used to run this process."
65 parse={IntInput.parse}
66 format={IntInput.format}
69 validate={ramValidation} />
71 <Grid item xs={12} md={6}>
76 helperText="Number of cores to be used to run this process."
77 parse={IntInput.parse}
78 format={IntInput.format}
81 validate={vcpusValidation} />
83 <Grid item xs={12} md={6}>
85 name={KEEP_CACHE_RAM_FIELD}
87 label="Keep cache RAM"
88 helperText="Number of keep cache bytes to be used to run this process."
89 parse={IntInput.parse}
90 format={IntInput.format}
92 validate={keepCacheRamValdation} />
95 </ExpansionPanelDetails>
99 const ramValidation = [min(0)];
100 const vcpusValidation = [min(1)];
101 const keepCacheRamValdation = [optional(min(0))];