import { set } from 'lodash'; import React from 'react'; import { PipelineSelector } from '../PipelineSelector'; import type { IDeploymentStrategyAdditionalFieldsProps } from '../../deploymentStrategy.registry'; import { NumberList } from '../../../forms'; import { HelpField } from '../../../help/HelpField'; import type { IServerGroupCommand } from '../../../serverGroup'; export interface IRollingRedBlackCommand extends IServerGroupCommand { delayBeforeDisableSec: string; delayBeforeScaleDownSec: string; pipelineBeforeCleanup: { application: string; }; rollback: { onFailure: boolean; }; scaleDown: boolean; targetPercentages: number[] | string; } export interface IRollingRedBlackStrategyAdditionalFieldsProps extends IDeploymentStrategyAdditionalFieldsProps { command: IRollingRedBlackCommand; } export class AdditionalFields extends React.Component { private targetPercentagesChange = (model: number[] | string) => { this.props.command.targetPercentages = model; this.forceUpdate(); }; private delayChange = (e: React.ChangeEvent) => { this.props.command.delayBeforeDisableSec = e.target.value; this.forceUpdate(); }; private scaleDownChange = (e: React.ChangeEvent) => { this.props.command.scaleDown = e.target.checked; this.forceUpdate(); }; private rollbackOnFailureChange = (e: React.ChangeEvent) => { this.props.command.rollback.onFailure = e.target.checked; this.forceUpdate(); }; private handleChange = (key: string, value: string) => { set(this.props.command, key, value); this.forceUpdate(); }; public render() { const { command } = this.props; const rollbackOnFailure = command.rollback && command.rollback.onFailure; return (
{command.scaleDown && (
this.handleChange('delayBeforeScaleDownSec', e.target.value)} placeholder="0" /> seconds
)}

Percentages

Before Disable

seconds
); } }