define( [ 'react', 'react-dom', 'mailpoet' ], function( React, ReactDOM, MailPoet ) { var CronControl = React.createClass({ getInitialState: function() { return { status: 'loading' }; }, getCronData: function() { MailPoet.Ajax.post({ endpoint: 'cron', action: 'getStatus' }) .done(function(response) { jQuery('.button-primary') .removeClass('disabled'); if(response.status !== undefined) { this.setState(response); } else { this.replaceState(); } }.bind(this)); }, componentDidMount: function() { if(this.isMounted()) { this.getCronData(); setInterval(this.getCronData, 5000); } }, controlCron: function(action) { if(jQuery('.button-primary').hasClass('disabled')) { return; } jQuery('.button-primary') .addClass('disabled'); MailPoet.Ajax.post({ endpoint: 'cron', action: action, }) .done(function(response) { if(!response.result) { MailPoet.Notice.error(MailPoet.I18n.t('daemonControlError')); } }.bind(this)); }, render: function() { if(this.state.status === 'loading') { return(
{MailPoet.I18n.t('loadingDaemonStatus')}
); } switch(this.state.status) { case 'started': return(
{MailPoet.I18n.t('cronDaemonIsRunning')}

{MailPoet.I18n.t('stop')}
); break; case 'starting': case 'stopping': return(
{MailPoet.I18n.t('cronDaemonState').replace('%$1s', this.state.status)}
); break; case 'stopped': return(
{MailPoet.I18n.t('cronDaemonState').replace('%$1s', this.state.status)}

{MailPoet.I18n.t('start')}
); break; } } }); const container = document.getElementById('cron_container'); if(container) { ReactDOM.render( , container ); } });