constructor()

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 &lt;= 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>
                                    &nbsp;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'];
    }