Added annotationCheck and fixed workflow deletion by viewer (#2365)

* Added annotationCheck and fixed workflow deletion for viewer

Signed-off-by: Amit Kumar Das <amitkumar.das@mayadata.io>

* Minor change

Signed-off-by: Amit Kumar Das <amitkumar.das@mayadata.io>
This commit is contained in:
Amit Kumar Das 2020-11-25 21:49:04 +05:30 committed by GitHub
parent f42cc14421
commit 1a53f9ef28
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 99 additions and 63 deletions

View File

@ -15,9 +15,11 @@ import React from 'react';
import cronstrue from 'cronstrue'; import cronstrue from 'cronstrue';
import YAML from 'yaml'; import YAML from 'yaml';
import GetAppIcon from '@material-ui/icons/GetApp'; import GetAppIcon from '@material-ui/icons/GetApp';
import { useSelector } from 'react-redux';
import { ScheduleWorkflow } from '../../../models/graphql/scheduleData'; import { ScheduleWorkflow } from '../../../models/graphql/scheduleData';
import useStyles from './styles'; import useStyles from './styles';
import ExperimentPoints from './ExperimentPoints'; import ExperimentPoints from './ExperimentPoints';
import { RootState } from '../../../redux/reducers';
interface TableDataProps { interface TableDataProps {
data: ScheduleWorkflow; data: ScheduleWorkflow;
@ -38,6 +40,8 @@ const TableData: React.FC<TableDataProps> = ({ data, deleteRow }) => {
setPopAnchorEl(null); setPopAnchorEl(null);
}; };
const userData = useSelector((state: RootState) => state.userData);
const handlePopOverClick = (event: React.MouseEvent<HTMLElement>) => { const handlePopOverClick = (event: React.MouseEvent<HTMLElement>) => {
setPopAnchorEl(event.currentTarget); setPopAnchorEl(event.currentTarget);
}; };
@ -183,6 +187,7 @@ const TableData: React.FC<TableDataProps> = ({ data, deleteRow }) => {
</Typography> </Typography>
</div> </div>
</MenuItem> </MenuItem>
{userData.userRole !== 'Viewer' ? (
<MenuItem <MenuItem
value="Analysis" value="Analysis"
onClick={() => deleteRow(data.workflow_id)} onClick={() => deleteRow(data.workflow_id)}
@ -193,11 +198,15 @@ const TableData: React.FC<TableDataProps> = ({ data, deleteRow }) => {
alt="Delete Schedule" alt="Delete Schedule"
className={classes.btnImg} className={classes.btnImg}
/> />
<Typography data-cy="deleteSchedule" className={classes.btnText}> <Typography
data-cy="deleteSchedule"
className={classes.btnText}
>
Delete Schedule Delete Schedule
</Typography> </Typography>
</div> </div>
</MenuItem> </MenuItem>
) : null}
</Menu> </Menu>
</TableCell> </TableCell>
</> </>

View File

@ -42,7 +42,7 @@ const TuneCustomWorkflow: React.FC<VerifyCommitProps> = ({ gotoStep }) => {
applabel: 'k8s-app=kube-proxy', applabel: 'k8s-app=kube-proxy',
appkind: 'daemonset', appkind: 'daemonset',
}); });
const [annotation, setAnnotation] = useState('true');
const [env, setEnv] = useState<EnvValues[]>([]); const [env, setEnv] = useState<EnvValues[]>([]);
const [yaml, setYaml] = useState<string>(''); const [yaml, setYaml] = useState<string>('');
const [loadingEnv, setLoadingEnv] = useState(true); const [loadingEnv, setLoadingEnv] = useState(true);
@ -112,6 +112,7 @@ const TuneCustomWorkflow: React.FC<VerifyCommitProps> = ({ gotoStep }) => {
applabel: parsedYaml.spec.appinfo.applabel, applabel: parsedYaml.spec.appinfo.applabel,
appkind: parsedYaml.spec.appinfo.appkind, appkind: parsedYaml.spec.appinfo.appkind,
}); });
setAnnotation(parsedYaml.spec.annotationCheck);
setEnv([...parsedYaml.spec.experiments[0].spec.components.env]); setEnv([...parsedYaml.spec.experiments[0].spec.components.env]);
setYaml(customWorkflow.yaml as string); setYaml(customWorkflow.yaml as string);
setLoadingEnv(false); setLoadingEnv(false);
@ -164,6 +165,7 @@ const TuneCustomWorkflow: React.FC<VerifyCommitProps> = ({ gotoStep }) => {
parsedYaml.spec.appinfo.appns = appInfo.appns; parsedYaml.spec.appinfo.appns = appInfo.appns;
parsedYaml.spec.appinfo.applabel = appInfo.applabel; parsedYaml.spec.appinfo.applabel = appInfo.applabel;
parsedYaml.spec.appinfo.appkind = appInfo.appkind; parsedYaml.spec.appinfo.appkind = appInfo.appkind;
parsedYaml.spec.annotationCheck = annotation;
parsedYaml.metadata.name = customWorkflow.experiment_name?.split('/')[1]; parsedYaml.metadata.name = customWorkflow.experiment_name?.split('/')[1];
parsedYaml.metadata.namespace = parsedYaml.metadata.namespace =
'{{workflow.parameters.adminModeNamespace}}'; '{{workflow.parameters.adminModeNamespace}}';
@ -248,10 +250,11 @@ const TuneCustomWorkflow: React.FC<VerifyCommitProps> = ({ gotoStep }) => {
</Typography> </Typography>
<div className={classes.appInfoDiv}> <div className={classes.appInfoDiv}>
<Typography className={classes.appInfoText}>appns:</Typography> <Typography className={classes.appInfoText}>appns:</Typography>
<div className={classes.inputField}>
<InputField <InputField
label="appns" label="appns"
styles={{ styles={{
width: '20%', width: '100%',
}} }}
data-cy="inputWorkflow" data-cy="inputWorkflow"
validationError={false} validationError={false}
@ -264,12 +267,14 @@ const TuneCustomWorkflow: React.FC<VerifyCommitProps> = ({ gotoStep }) => {
value={appInfo.appns} value={appInfo.appns}
/> />
</div> </div>
</div>
<div className={classes.appInfoDiv}> <div className={classes.appInfoDiv}>
<Typography className={classes.appInfoText}>applabel:</Typography> <Typography className={classes.appInfoText}>applabel:</Typography>
<div className={classes.inputField}>
<InputField <InputField
label="applabel" label="applabel"
styles={{ styles={{
width: '20%', width: '100%',
}} }}
data-cy="inputWorkflow" data-cy="inputWorkflow"
validationError={false} validationError={false}
@ -282,12 +287,14 @@ const TuneCustomWorkflow: React.FC<VerifyCommitProps> = ({ gotoStep }) => {
value={appInfo.applabel} value={appInfo.applabel}
/> />
</div> </div>
</div>
<div className={classes.appKind}> <div className={classes.appKind}>
<Typography className={classes.appInfoText}>appkind:</Typography> <Typography className={classes.appInfoText}>appkind:</Typography>
<div className={classes.inputField}>
<InputField <InputField
label="appkind" label="appkind"
styles={{ styles={{
width: '20%', width: '100%',
}} }}
data-cy="inputWorkflow" data-cy="inputWorkflow"
validationError={false} validationError={false}
@ -300,6 +307,24 @@ const TuneCustomWorkflow: React.FC<VerifyCommitProps> = ({ gotoStep }) => {
value={appInfo.appkind} value={appInfo.appkind}
/> />
</div> </div>
</div>
<div className={classes.appKind}>
<Typography className={classes.appInfoText}>
annotationCheck:
</Typography>
<div className={classes.inputField}>
<InputField
label="annotationCheck"
styles={{
width: '100%',
}}
data-cy="inputWorkflow"
validationError={false}
handleChange={(event) => setAnnotation(event.target.value)}
value={annotation}
/>
</div>
</div>
<hr className={classes.horizontalLine} /> <hr className={classes.horizontalLine} />
<Typography className={classes.envHeader}> <Typography className={classes.envHeader}>
{t('customWorkflow.tuneExperiment.envText')} {t('customWorkflow.tuneExperiment.envText')}

View File

@ -39,6 +39,9 @@ const useStyles = makeStyles((theme) => ({
marginTop: theme.spacing(2.5), marginTop: theme.spacing(2.5),
marginBottom: theme.spacing(1.25), marginBottom: theme.spacing(1.25),
}, },
inputField: {
marginLeft: theme.spacing(2.5),
},
appInfoText: { appInfoText: {
fontSize: '0.875rem', fontSize: '0.875rem',
width: '6.25rem', width: '6.25rem',
@ -48,7 +51,6 @@ const useStyles = makeStyles((theme) => ({
flexDirection: 'row', flexDirection: 'row',
alignItems: 'center', alignItems: 'center',
paddingLeft: theme.spacing(2.5), paddingLeft: theme.spacing(2.5),
marginBottom: theme.spacing(2.5),
}, },
envHeader: { envHeader: {
fontSize: '0.75rem', fontSize: '0.75rem',
@ -102,7 +104,7 @@ const useStyles = makeStyles((theme) => ({
horizontalLine: { horizontalLine: {
border: `1px solid ${theme.palette.customColors.black(0.3)}`, border: `1px solid ${theme.palette.customColors.black(0.3)}`,
width: '100%', width: '100%',
marginTop: theme.spacing(1.25), marginTop: theme.spacing(3.25),
marginBottom: theme.spacing(1.25), marginBottom: theme.spacing(1.25),
}, },
formControl: { formControl: {