Просмотр исходного кода

Refactor DevModeToggle

We now move the request logic inside as we no longer have to worry about
callbacks for reloading.
Thomas Dy 11 лет назад
Родитель
Сommit
7c9c953baf
1 измененных файлов с 17 добавлено и 7 удалено
  1. 17 7
      lib/ui/Settings.jsx

+ 17 - 7
lib/ui/Settings.jsx

@@ -2,19 +2,32 @@ var DomainStore = require('../stores').Domains;
 var React = require('react');
 var React = require('react');
 
 
 var DevModeToggle = React.createClass({
 var DevModeToggle = React.createClass({
+  getInitialState: function() {
+    return {toggling: false};
+  },
+  componentWillReceiveProps: function() {
+    this.setState({toggling: false});
+  },
+  toggleDevMode: function() {
+    this.setState({toggling: true});
+    DomainStore.setDevelopmentMode(this.props.domain, this.props.devMode == 0);
+  },
   render: function() {
   render: function() {
-    if(this.props.devMode > 0) {
+    if(this.state.toggling) {
+      return <button className="btn btn-warning" disabled>{this.props.devMode > 0 ? 'Disabling...' : 'Enabling...'}</button>
+    }
+    else if(this.props.devMode > 0) {
       var date = new Date(this.props.devMode*1000);
       var date = new Date(this.props.devMode*1000);
       var dateString = date.getFullYear()+'/'+(1+date.getMonth())+'/'+date.getDate()+' '+date.getHours()+':'+date.getMinutes();
       var dateString = date.getFullYear()+'/'+(1+date.getMonth())+'/'+date.getDate()+' '+date.getHours()+':'+date.getMinutes();
       return (
       return (
         <div>
         <div>
-          <button className='btn btn-success' onClick={this.props.onClick}>On</button>
+          <button className='btn btn-success' onClick={this.toggleDevMode}>On</button>
           <span> Active until {dateString}</span>
           <span> Active until {dateString}</span>
         </div>
         </div>
       );
       );
     }
     }
     else {
     else {
-      return <button className='btn btn-default' onClick={this.props.onClick}>Off</button>
+      return <button className='btn btn-default' onClick={this.toggleDevMode}>Off</button>
     }
     }
   }
   }
 });
 });
@@ -42,9 +55,6 @@ var PurgeButton = React.createClass({
   }
   }
 });
 });
 var Settings = React.createClass({
 var Settings = React.createClass({
-  toggleDevMode: function() {
-    DomainStore.setDevelopmentMode(this.props.domain, this.props.settings.dev_mode.val() == 0);
-  },
   render: function() {
   render: function() {
     if(!this.props.settings.val()) {
     if(!this.props.settings.val()) {
       return <div className="alert alert-info">Loading...</div>
       return <div className="alert alert-info">Loading...</div>
@@ -55,7 +65,7 @@ var Settings = React.createClass({
         <table className="table">
         <table className="table">
           <tr>
           <tr>
             <td>Development Mode</td>
             <td>Development Mode</td>
-            <td><DevModeToggle devMode={this.props.settings.dev_mode.val()} onClick={this.toggleDevMode} /></td>
+            <td><DevModeToggle domain={this.props.domain} devMode={this.props.settings.dev_mode.val()} /></td>
           </tr>
           </tr>
           <tr>
           <tr>
             <td>Purge Cache</td>
             <td>Purge Cache</td>