type(ux): Adding enable schedule (ux-issue 14) + fixing ux issue 7 and 11 (#2824)
* Adding enable schedule (ux-issue 14) + fixing ux issue 7 and 11 * Updating logic for Disable and Enable schedule * Removing comments Signed-off-by: Sayan Mondal <sayan@chaosnative.com>
This commit is contained in:
parent
16866af9c0
commit
be94b251bc
|
@ -402,6 +402,7 @@ chaosWorkflows:
|
||||||
editSchedule: Edit Schedule
|
editSchedule: Edit Schedule
|
||||||
scheduleIsDisabled: This Schedule is disabled now
|
scheduleIsDisabled: This Schedule is disabled now
|
||||||
disableSchedule: Disable Schedule
|
disableSchedule: Disable Schedule
|
||||||
|
enableSchedule: Enable Schedule
|
||||||
saveTemplate: Save Template
|
saveTemplate: Save Template
|
||||||
updateEngine: 'Note: Make sure to update the chaos engine names'
|
updateEngine: 'Note: Make sure to update the chaos engine names'
|
||||||
saveChanges: Save Changes
|
saveChanges: Save Changes
|
||||||
|
|
|
@ -37,13 +37,13 @@ import useStyles from './styles';
|
||||||
interface TableDataProps {
|
interface TableDataProps {
|
||||||
data: ScheduleWorkflow;
|
data: ScheduleWorkflow;
|
||||||
deleteRow: (wfid: string) => void;
|
deleteRow: (wfid: string) => void;
|
||||||
handleDisableSchedule: (schedule: ScheduleWorkflow) => void;
|
handleToggleSchedule: (schedule: ScheduleWorkflow) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
const TableData: React.FC<TableDataProps> = ({
|
const TableData: React.FC<TableDataProps> = ({
|
||||||
data,
|
data,
|
||||||
deleteRow,
|
deleteRow,
|
||||||
handleDisableSchedule,
|
handleToggleSchedule,
|
||||||
}) => {
|
}) => {
|
||||||
const classes = useStyles();
|
const classes = useStyles();
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
@ -396,7 +396,7 @@ const TableData: React.FC<TableDataProps> = ({
|
||||||
<MenuItem
|
<MenuItem
|
||||||
value="Disable"
|
value="Disable"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
handleDisableSchedule(data);
|
handleToggleSchedule(data);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<div className={classes.expDiv}>
|
<div className={classes.expDiv}>
|
||||||
|
@ -414,6 +414,30 @@ const TableData: React.FC<TableDataProps> = ({
|
||||||
</div>
|
</div>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
{projectRole !== 'Viewer' &&
|
||||||
|
YAML.parse(data.workflow_manifest).spec.suspend === true && (
|
||||||
|
<MenuItem
|
||||||
|
value="Enable"
|
||||||
|
onClick={() => {
|
||||||
|
handleToggleSchedule(data);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div className={classes.expDiv}>
|
||||||
|
<img
|
||||||
|
src="/icons/disableSchedule.svg"
|
||||||
|
alt="Enable Schedule"
|
||||||
|
className={classes.btnImg}
|
||||||
|
/>
|
||||||
|
<Typography
|
||||||
|
data-cy="enableSchedule"
|
||||||
|
className={classes.downloadText}
|
||||||
|
>
|
||||||
|
{t('chaosWorkflows.browseSchedules.enableSchedule')}
|
||||||
|
</Typography>
|
||||||
|
</div>
|
||||||
|
</MenuItem>
|
||||||
|
)}
|
||||||
<MenuItem
|
<MenuItem
|
||||||
value="Download"
|
value="Download"
|
||||||
onClick={() =>
|
onClick={() =>
|
||||||
|
|
|
@ -29,6 +29,7 @@ import {
|
||||||
SCHEDULE_DETAILS,
|
SCHEDULE_DETAILS,
|
||||||
UPDATE_SCHEDULE,
|
UPDATE_SCHEDULE,
|
||||||
} from '../../../graphql';
|
} from '../../../graphql';
|
||||||
|
import { WeightMap } from '../../../models/graphql/createWorkflowData';
|
||||||
import {
|
import {
|
||||||
DeleteSchedule,
|
DeleteSchedule,
|
||||||
ScheduleDataVars,
|
ScheduleDataVars,
|
||||||
|
@ -44,7 +45,6 @@ import {
|
||||||
} from '../../../utils/sort';
|
} from '../../../utils/sort';
|
||||||
import useStyles from './styles';
|
import useStyles from './styles';
|
||||||
import TableData from './TableData';
|
import TableData from './TableData';
|
||||||
import { WeightMap } from '../../../models/graphql/createWorkflowData';
|
|
||||||
|
|
||||||
interface FilterOption {
|
interface FilterOption {
|
||||||
search: string;
|
search: string;
|
||||||
|
@ -86,13 +86,18 @@ const BrowseSchedule: React.FC = () => {
|
||||||
suspended: 'All',
|
suspended: 'All',
|
||||||
});
|
});
|
||||||
|
|
||||||
const [disableSchedule] = useMutation(UPDATE_SCHEDULE, {
|
const [updateSchedule] = useMutation(UPDATE_SCHEDULE, {
|
||||||
refetchQueries: [{ query: SCHEDULE_DETAILS, variables: { projectID } }],
|
refetchQueries: [{ query: SCHEDULE_DETAILS, variables: { projectID } }],
|
||||||
});
|
});
|
||||||
|
|
||||||
const handleDisableSchedule = (schedule: ScheduleWorkflow) => {
|
// Disable and re-enable a schedule
|
||||||
|
const handleToggleSchedule = (schedule: ScheduleWorkflow) => {
|
||||||
const yaml = YAML.parse(schedule.workflow_manifest);
|
const yaml = YAML.parse(schedule.workflow_manifest);
|
||||||
|
if (yaml.spec.suspend === undefined || yaml.spec.suspend === false) {
|
||||||
yaml.spec.suspend = true;
|
yaml.spec.suspend = true;
|
||||||
|
} else {
|
||||||
|
yaml.spec.suspend = false;
|
||||||
|
}
|
||||||
|
|
||||||
const weightData: WeightMap[] = [];
|
const weightData: WeightMap[] = [];
|
||||||
|
|
||||||
|
@ -103,7 +108,7 @@ const BrowseSchedule: React.FC = () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
disableSchedule({
|
updateSchedule({
|
||||||
variables: {
|
variables: {
|
||||||
ChaosWorkFlowInput: {
|
ChaosWorkFlowInput: {
|
||||||
workflow_id: schedule.workflow_id,
|
workflow_id: schedule.workflow_id,
|
||||||
|
@ -366,7 +371,7 @@ const BrowseSchedule: React.FC = () => {
|
||||||
<TableData
|
<TableData
|
||||||
data={data}
|
data={data}
|
||||||
deleteRow={deleteRow}
|
deleteRow={deleteRow}
|
||||||
handleDisableSchedule={handleDisableSchedule}
|
handleToggleSchedule={handleToggleSchedule}
|
||||||
/>
|
/>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
))
|
))
|
||||||
|
|
|
@ -91,7 +91,7 @@ const BrowseAWorkflow: React.FC<BrowseTemplateProps> = ({ location }) => {
|
||||||
|
|
||||||
{/* Buttons */}
|
{/* Buttons */}
|
||||||
<div className={classes.spaceBetween}>
|
<div className={classes.spaceBetween}>
|
||||||
<ButtonOutlined onClick={() => history.push('/workflows')}>
|
<ButtonOutlined onClick={() => history.goBack()}>
|
||||||
{t('browseTemplate.back')}
|
{t('browseTemplate.back')}
|
||||||
</ButtonOutlined>
|
</ButtonOutlined>
|
||||||
<ButtonFilled variant="success" onClick={() => preSelectWorkflow()}>
|
<ButtonFilled variant="success" onClick={() => preSelectWorkflow()}>
|
||||||
|
|
|
@ -113,7 +113,7 @@ const HeaderSection: React.FC<HeaderSectionProps> = ({
|
||||||
<MenuItem value="All">All</MenuItem>
|
<MenuItem value="All">All</MenuItem>
|
||||||
<MenuItem value="Failed">Failed</MenuItem>
|
<MenuItem value="Failed">Failed</MenuItem>
|
||||||
<MenuItem value="Running">Running</MenuItem>
|
<MenuItem value="Running">Running</MenuItem>
|
||||||
<MenuItem value="Succeeded">Succeeded</MenuItem>
|
<MenuItem value="Succeeded">Completed</MenuItem>
|
||||||
</Select>
|
</Select>
|
||||||
</FormControl>
|
</FormControl>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue