define( [ 'react', 'react-dom', 'mailpoet', 'classnames' ], function ( React, ReactDOM, MailPoet, classNames ) { var QueueControl = React.createClass({ getInitialState: function () { return (queueDaemon) ? queueDaemon : null; }, getDaemonData: function () { MailPoet.Ajax.post({ endpoint: 'queue', action: 'getDaemonStatus' }).done(function (response) { jQuery('.button-primary').removeClass('disabled'); if (!response) { this.replaceState(); } else { this.setState(response); } }.bind(this)); }, componentDidMount: function componentDidMount() { if (this.isMounted()) { this.getDaemonData; setInterval(this.getDaemonData, 5000); } }, controlDaemon: function (action) { jQuery('.button-primary').addClass('disabled'); MailPoet.Ajax.post({ endpoint: 'queue', action: 'controlDaemon', data: {'action': action} }).done(function (response) { if (!response) { this.replaceState(); } else { this.setState(response); } }.bind(this)); }, render: function () { if (!this.state) { return
Woops, daemon is not running ;\
} switch (this.state.status) { case 'started': return (
Queue daemon is running.

It was started {this.state.timeSinceStart} and last executed {this.state.timeSinceUpdate} for a total of {this.state.counter} times (once every 30 seconds, unless it was interrupted and restarted).

Stop   Pause
); break; case 'paused': case 'stopped': return (
Daemon is {this.state.status}

Start
) break; } } }); let container = document.getElementById('queue_container'); if (container) { ReactDOM.render( , document.getElementById('queue_status') ) } } );