Created an env var for disabling sockets
[osm/UI.git] / skyquake / plugins / project_management / src / dashboard / projectMgmtStore.js
index 92a4395..70f5f2f 100644 (file)
@@ -3,6 +3,7 @@
  */
 import ProjectManagementActions from './projectMgmtActions.js';
 import ProjectManagementSource from './projectMgmtSource.js';
+import ROLES from 'utils/roleConstants.js';
 import _ from 'lodash';
 export default class ProjectManagementStore {
     constructor() {
@@ -15,7 +16,12 @@ export default class ProjectManagementStore {
         this.projectUsers = [];
         this.selectedUser = null;
         this.selectedRole = null;
-        this.roles = ['Assign a role', 'super_admin'];
+        this.roles = Object.keys(ROLES.PROJECT).filter((p) => {
+            return p != "TYPE";
+        }).map((p) => {
+            return ROLES.PROJECT[p];
+        })
+        // this.roles = ['rw-project:project-admin', 'rw-project:project-oper', 'rw-project:project-create'];
         this.users = [];
         this.activeIndex = null;
         this.isReadOnly = true;
@@ -54,11 +60,13 @@ export default class ProjectManagementStore {
             projectRoles
         });
     }
-    viewProject(data) {
+    viewProject() {
+        let data = arguments[0];
         let project = data[0];
         let projectIndex = data[1];
+        let isReadOnly = data[2];
 
-        let ProjectUser = {
+        let ProjectData = {
             'name': project['name'],
             'description': project['description'],
             'projectUsers': project['project-config'] && project['project-config']['user'] || []
@@ -67,14 +75,13 @@ export default class ProjectManagementStore {
             activeIndex: projectIndex,
             projectOpen: true,
             isEdit: true,
-            isReadOnly: true
-        }, ProjectUser);
+            isReadOnly: isReadOnly
+        }, ProjectData);
         this.setState(state)
     }
-    editProject(isEdit) {
-        this.setState({
-            isReadOnly: isEdit
-        })
+    editProject(isReadOnly) {
+        this.viewProject([this.projects[this.activeIndex], this.activeIndex, isReadOnly]);
+
     }
     handleCloseProjectPanel() {
         this.setState({
@@ -144,7 +151,8 @@ export default class ProjectManagementStore {
             selectedUser: JSON.parse(user)
         });
     }
-    handleAddUser() {
+    handleAddUser(e) {
+        let self = this;
         let u = JSON.parse(this.selectedUser);
         let r = this.selectedRole;
         let projectUsers = this.projectUsers;
@@ -154,17 +162,51 @@ export default class ProjectManagementStore {
           'user-domain': u['user-domain'],
           "role":[{
                       "role": r,
-                      "keys": r
+                      "keys": self.name
             }
           ]
         })
-        this.setState({projectUsers})
+        this.setState({projectUsers, selectedUser: JSON.stringify(null)})
+    }
+    handleToggleUserRoleInProject(data) {
+        let self = this;
+        let {userIndex, roleIndex, checked} = data;
+        let projectUsers = this.projectUsers;
+        let selectedRole = self.roles[roleIndex];
+        if(checked) {
+            if (!projectUsers[userIndex].role) {
+                projectUsers[userIndex].role = [];
+            }
+            if (!projectUsers[userIndex]['rw-project-mano:mano-role']) {
+                projectUsers[userIndex]['rw-project-mano:mano-role'] = [];
+            }
+            switch (ROLES.PROJECT.TYPE[self.roles[roleIndex]]) {
+                case 'rw-project' :
+                    projectUsers[userIndex].role.push({
+                        role: selectedRole
+                    });
+                    break;
+                case 'rw-project-mano' :
+                    projectUsers[userIndex]["rw-project-mano:mano-role"].push({
+                        role: selectedRole
+                    });
+                    break;
+            }
+            projectUsers[userIndex].role.push({
+                role: selectedRole
+            })
+        } else {
+            let role = projectUsers[userIndex].role;
+            let roleIndex = _.findIndex(role, {role:selectedRole})
+            projectUsers[userIndex].role.splice(roleIndex, 1)
+        }
+       self.setState({projectUsers});
+
     }
     handleUpdateUserRoleInProject(data) {
         let {userIndex, roleIndex, value} = data;
         let projectUsers = this.projectUsers;
         projectUsers[userIndex].role[roleIndex].role = value;
-        projectUsers[userIndex].role[roleIndex]['keys'] = value;
 
     }
     addRoleToUserInProject(userIndex) {
@@ -173,9 +215,7 @@ export default class ProjectManagementStore {
             projectUsers[userIndex].role = [];
         }
         projectUsers[userIndex].role.push({
-              'role': null,
-              //temp until we get actual keys
-              'keys' : 'some key'
+              'role': null
             });
         this.setState({
             projectUsers
@@ -207,10 +247,14 @@ export default class ProjectManagementStore {
     }
     updateProjectSuccess() {
         this.alt.actions.global.hideScreenLoader.defer();
+        let self = this;
         let projects = this.projects || [];
         projects[this.activeIndex] = {
             'name': this['name'],
-            'description': this['description']
+            'description': this['description'],
+            'project-config': {
+                'user': self.projectUsers
+            }
         }
         this.setState({
             projects,