in source/console/src/views/TaskCreate.tsx [136:280]
constructor(props: Readonly<IProps>) {
super(props);
this.state = {
token: '',
mode: '',
step: 1,
task: {
taskId: '',
name: '',
description: '',
targetTag: '',
taskParameters: [],
accounts: '',
regions: '',
actionName: '',
triggerType: TriggerType.Schedule,
scheduledType: ScheduledType.CronExpression,
scheduledFixedRateType: ScheduledFixedRateType.minutes
},
isLoading: false,
error: '',
validation: {
taskName: null,
targetTag: null,
cronExpression: null,
interval: null,
accounts: null,
regions: null
},
showHelp: {
taskName: false,
targetTag: false,
cronExpression: false,
interval: false,
accounts: false,
regions: false
}
};
this.TriggerForm = () => {
if (this.state.task.triggerType === TriggerType.Schedule) {
return (
<div>
<FormGroup controlId="scheduleType">
<Col componentClass={ControlLabel} md={3}>
Schedule Type
</Col>
<Col md={9}>
<FormControl componentClass="select" defaultValue={this.state.task.scheduledType}
onChange={(event) => {
event.persist();
this.handleScheduledTypeChange(event);
}}
>
<option value={ScheduledType.CronExpression}>Cron Expression</option>
<option value={ScheduledType.FixedRate}>Fixed Rate</option>
</FormControl>
</Col>
</FormGroup>
{
(this.state.task.scheduledType === ScheduledType.CronExpression || !this.state.task.scheduledType) &&
<FormGroup controlId="cronExpression" validationState={this.state.validation.cronExpression}>
<Col componentClass={ControlLabel} md={3}>
Cron Expression
</Col>
<Col md={9}>
<FormControl key="cronExpression" type="text" placeholder="0/5 * * * ? *" defaultValue={this.state.task.scheduledCronExpression}
onChange={(event) => {
event.persist();
this.handleCronExpressionChange(event);
}}
/>
<HelpBlock>
<a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html" target="_blank" rel="noopener noreferrer">Learn more</a> about CloudWatch Events schedules.
</HelpBlock>
</Col>
</FormGroup>
}
{
this.state.task.scheduledType === ScheduledType.FixedRate &&
<FormGroup controlId="scheduledFixedRate" validationState={this.state.validation.interval}>
<Col componentClass={ControlLabel} md={3}>
Fixed Rate of
</Col>
<Col md={5}>
<FormControl type="text" placeholder="Enter interval" defaultValue={this.state.task.scheduledFixedRateInterval}
onChange={(event) => {
event.persist();
this.handleScheduledFixedRateIntervalChange(event);
}}
/>
<HelpBlock>
{
this.state.showHelp.interval &&
<span>Invalid interval (1 <= interval, integer number). </span>
}
<a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html" target="_blank" rel="noopener noreferrer">Learn more</a> about CloudWatch Events schedules.
</HelpBlock>
</Col>
<Col md={4}>
<FormControl componentClass="select" defaultValue={this.state.task.scheduledFixedRateType}
onChange={(event) => {
event.persist();
this.handleScheduledFixedRateTypeChange(event);
}}
>
<option value={ScheduledFixedRateType.minutes}>Minutes</option>
<option value={ScheduledFixedRateType.hours}>Hours</option>
<option value={ScheduledFixedRateType.days}>Days</option>
</FormControl>
</Col>
</FormGroup>
}
</div>
);
} else if (this.state.task.triggerType === TriggerType.Event) {
return (
<div>
<FormGroup controlId="eventPattern">
<Col componentClass={ControlLabel} md={3}>
Event Pattern
</Col>
<Col md={9}>
<FormControl componentClass="textarea" placeholder={EVENT_PLACEHOLDER} defaultValue={this.state.task.eventPattern}
onChange={(event) => {
event.persist();
this.handleEventPatternChange(event);
}}
className="textarea" />
<HelpBlock>
Learn more about <a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatchEventsandEventPatterns.html" target="_blank" rel="noopener noreferrer">event pattens</a>
and <a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/EventTypes.html" target="_blank" rel="noopener noreferrer">event examples from supported services</a>.
</HelpBlock>
</Col>
</FormGroup>
</div>
);
} else {
return (null);
}
};
this.hiddenParameters = ['SQSMsgBody', 'SQSMsgReceiptHandle', 'TargetResourceType'];
}