import React from "react"; // React button component to simulate start/stop failure scenario export default const StartButton = React.createClass({ forward() { const baseDelay = 4*1000; switch (this.state.status) { case 'recovering': break; case 'failedToStart': this.setState({ status: "recovering" }); setTimeout(() => { this.setState({ status: Math.random() < 0.5 ? "stopped" : "started" }); }, baseDelay * Math.random()); break; case 'failedToStop': this.setState({ status: "recovering" }); setTimeout(() => { this.setState({ status: Math.random() < 0.5 ? "stopped" : "started" }); }, baseDelay * Math.random()); break; case 'stopped': this.setState({ status: "starting" }); setTimeout(() => { this.setState({ status: Math.random() < 0.5 ? "started" : "failedToStart" }); }, baseDelay * Math.random()); break; case 'starting': break; case 'started': this.setState({ status: "stopping" }); setTimeout(() => { this.setState({ status: Math.random() < 0.5 ? "stopped" : "failedToStop" }); }, baseDelay * Math.random()); break; case 'stopping': break; default: this.setState({ status: "unknown" }); } }, getInitialState() { return { status: "stopped", started: "fa fa-border fa-stop-circle fa-lg", starting: "fa fa-hourglass-start fa-spin fa-lg", stopping: "fa fa-refresh fa-spin fa-lg", stopped: "fa fa-border fa-play fa-lg", failedToStop: "fa fa-border fa-exclamation-triangle fa-lg", failedToStart: "fa fa-border fa-exclamation-triangle fa-lg", recovering: "fa fa-lg fa-cog fa-spin" } }, toggle(evt) { evt.preventDefault(); evt.stopPropagation(); this.forward(); }, render: function() { const paddingStyle = { leftPadding: "5px" }; return ( {this.state.status} ); } });