import {computed} from "mobx"; import {observer} from "mobx-react"; import * as React from "react"; import {SyntheticEvent} from "react"; import {DropdownItemProps, DropdownProps, Form, Header, Segment} from "semantic-ui-react"; import {DurationInput} from "."; import {Duration, Section} from "../sprinklers"; @observer export default class RunSectionForm extends React.Component<{ sections: Section[], }, { duration: Duration, section: number | "", }> { constructor() { super(); this.state = { duration: new Duration(1, 1), section: "", }; } render() { const {section, duration} = this.state; return
Run Section
{/*Label must be   to align it properly*/} Run
; } private onSectionChange = (e: SyntheticEvent, v: DropdownProps) => { this.setState({section: v.value as number}); } private onDurationChange = (newDuration: Duration) => { this.setState({duration: newDuration}); } private run = (e: SyntheticEvent) => { e.preventDefault(); const section: Section = this.props.sections[this.state.section]; console.log(`should run section ${section} for ${this.state.duration}`); section.run(this.state.duration) .then((a) => console.log("ran section", a)) .catch((err) => console.error("error running section", err)); } private get isValid(): boolean { return typeof this.state.section === "number"; } @computed private get sectionOptions(): DropdownItemProps[] { return this.props.sections.map((s, i) => ({ text: s ? s.name : null, value: i, })); } }