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

- Adds switch button to project list
- Fixes various bugs

George Vrancianu 9 лет назад
Родитель
Сommit
9e07de2cad

+ 24 - 10
src/components/ProjectList/ProjectList.js

@@ -128,6 +128,11 @@ class ProjectList extends Reflux.Component {
     this.setState({ showModal: false })
   }
 
+  switchProject(project) {
+    console.log(project)
+    UserActions.switchProject(project.id)
+  }
+
   bulkActions(action) {
     switch (action.value) {
       case "delete":
@@ -153,6 +158,8 @@ class ProjectList extends Reflux.Component {
 
   renderSearch(items) {
     let output = null
+    let projectId = Reflux.GlobalState.userStore.currentUser.project.id
+
     if (items && items.length) {
       output = items.map((item, index) => (
         <div className={"item " + (item.selected ? " selected" : "")} key={"vm_" + index}>
@@ -175,20 +182,27 @@ class ProjectList extends Reflux.Component {
             </span>
           </span>
           <span className="cell">
-              <div className={s.cloudImage + " icon small-cloud " + item.type}></div>
-            </span>
+            <div className={s.cloudImage + " icon small-cloud " + item.type}></div>
+          </span>
           <span className={"cell " + s.composite}>
-              <span className={s.label}>Is Domain</span>
-              <span className={s.value}>
-                {item.is_domain ? "Yes" : "No"}
-              </span>
+            <span className={s.label}>Is Domain</span>
+            <span className={s.value}>
+              {item.is_domain ? "Yes" : "No"}
             </span>
+          </span>
           <span className={"cell " + s.composite}>
-              <span className={s.label}>Enabled</span>
-              <span className={s.value}>
-                {item.enabled ? "Yes" : "No"}
-              </span>
+            <span className={s.label}>Enabled</span>
+            <span className={s.value}>
+              {item.enabled ? "Yes" : "No"}
             </span>
+          </span>
+          <span className={"cell "}>
+            <button
+              className="wire gray"
+              disabled={item.id == projectId}
+              onClick={(e) => this.switchProject(item)}
+            >{item.id == projectId ? "Current" : "Switch"}</button>
+          </span>
         </div>
       ), this)
     }

+ 1 - 0
src/components/ProjectList/ProjectList.scss

@@ -112,6 +112,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
   :global(.items-list) {
     :global(.item) {
       position: relative;
+      padding-right: 16px;
       span:global(.cell):nth-child(2) {
         flex: 3;
         cursor: pointer;

+ 1 - 7
src/components/ProjectsDropdown/ProjectsDropdown.js

@@ -36,13 +36,7 @@ class ProjectsDropdown extends Reflux.Component {
   }
 
   switchProject(value) {
-    let project = null
-    this.state.currentUser.projects.forEach(item => {
-      if (item.id == value.value) {
-        project = item
-      }
-    })
-    UserActions.switchProject(project)
+    UserActions.switchProject(value.value)
   }
 
   render() {

+ 7 - 4
src/stores/UserStore/UserStore.js

@@ -144,10 +144,13 @@ class UserStore extends Reflux.Store
     }, this)
   }
 
-  onSwitchProject(project) {
-    let token = cookie.load('unscopedToken')
-    Api.setDefaultHeader('X-Auth-Token', null)
-    UserActions.loginScope(token, project.id)
+  onSwitchProject(projectId) {
+    console.log("onSwitchProject", projectId)
+    if (projectId) {
+      let token = cookie.load('unscopedToken')
+      Api.setDefaultHeader('X-Auth-Token', null)
+      UserActions.loginScope(token, projectId)
+    }
   }
 
   onGetScopedProjectsCompleted(response) {