Row striping for platform roles, users, and projects
[osm/UI.git] / skyquake / plugins / project_management / src / dashboard / projectMgmtStore.js
index ec3a099..e112bb6 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,8 +16,12 @@ export default class ProjectManagementStore {
         this.projectUsers = [];
         this.selectedUser = null;
         this.selectedRole = null;
-        this.roles = ['rw-project:project-admin', 'rw-project:project-oper', 'rw-project:project-create'
-        ];
+        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;
@@ -55,27 +60,28 @@ 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 ProjectData = {
             'name': project['name'],
             'description': project['description'],
-            'projectUsers': project['project-config'] && project['project-config']['user'] || []
+            'projectUsers': (project['project-config'] && project['project-config']['user'] || [])
         }
         let state = _.merge({
             activeIndex: projectIndex,
             projectOpen: true,
             isEdit: true,
-            isReadOnly: true
+            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({
@@ -167,15 +173,19 @@ export default class ProjectManagementStore {
         let {userIndex, roleIndex, checked} = data;
         let projectUsers = this.projectUsers;
         let selectedRole = self.roles[roleIndex];
+        let roleType = (ROLES.PROJECT.TYPE[selectedRole] == 'rw-project-mano') ? "rw-project-mano:mano-role" : "role";
+        //
         if(checked) {
-            if(!projectUsers[userIndex].role) projectUsers[userIndex].role = [];
-            projectUsers[userIndex].role.push({
+            if (!projectUsers[userIndex][roleType]) {
+                projectUsers[userIndex][roleType] = [];
+            }
+            projectUsers[userIndex][roleType].push({
                 role: self.roles[roleIndex]
             })
         } else {
-            let role = projectUsers[userIndex].role;
+            let role = projectUsers[userIndex][roleType];
             let roleIndex = _.findIndex(role, {role:selectedRole})
-            projectUsers[userIndex].role.splice(roleIndex, 1)
+            projectUsers[userIndex][roleType].splice(roleIndex, 1)
         }
        self.setState({projectUsers});