import * as React from "react";
import { Input, InputOnChangeData } from "semantic-ui-react";

import { Duration } from "common/sprinklers";

export default class DurationInput extends React.Component<{
    duration: Duration,
    onDurationChange: (newDuration: Duration) => void;
}> {
    render() {
        const duration = this.props.duration;
        // const editing = this.props.onDurationChange != null;
        return <div className="field durationInput">
            <label>Duration</label>
            <div className="fields">
                <Input type="number" className="field durationInput--minutes"
                    value={duration.minutes} onChange={this.onMinutesChange}
                    label="M" labelPosition="right" />
                <Input type="number" className="field durationInput--seconds"
                    value={duration.seconds} onChange={this.onSecondsChange} max="60"
                    label="S" labelPosition="right" />
            </div>
        </div>;
    }

    private onMinutesChange = (e: React.SyntheticEvent<any>, { value }: InputOnChangeData) => {
        if (value.length === 0 || isNaN(Number(value))) {
            return;
        }
        const newMinutes = parseInt(value, 10);
        this.props.onDurationChange(this.props.duration.withMinutes(newMinutes));
    }

    private onSecondsChange = (e: React.SyntheticEvent<any>, { value }: InputOnChangeData) => {
        if (value.length === 0 || isNaN(Number(value))) {
            return;
        }
        const newSeconds = parseInt(value, 10);
        this.props.onDurationChange(this.props.duration.withSeconds(newSeconds));
    }
}