This is an automated email from the ASF dual-hosted git repository.

machristie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-django-portal.git

commit b6f870f1b1bf9ec8898b09393b2b2e76a5028ad2
Author: Marcus Christie <machr...@iu.edu>
AuthorDate: Thu Nov 15 09:00:19 2018 -0500

    AIRAVATA-2711 Change role of group members
---
 .../js/group_components/GroupEditor.vue            | 17 +++++++++++---
 .../js/group_components/GroupMembersEditor.vue     | 27 ++++++++++++++++++++--
 2 files changed, 39 insertions(+), 5 deletions(-)

diff --git 
a/django_airavata/apps/groups/static/django_airavata_groups/js/group_components/GroupEditor.vue
 
b/django_airavata/apps/groups/static/django_airavata_groups/js/group_components/GroupEditor.vue
index cb08f20..9305101 100644
--- 
a/django_airavata/apps/groups/static/django_airavata_groups/js/group_components/GroupEditor.vue
+++ 
b/django_airavata/apps/groups/static/django_airavata_groups/js/group_components/GroupEditor.vue
@@ -16,8 +16,8 @@
         </b-form-textarea>
       </b-form-group>
 
-      <group-members-editor :members="localGroup.members" 
:admins="localGroup.admins"
-        @add-member="addGroupMember" @remove-member="removeGroupMember" />
+      <group-members-editor :members="localGroup.members" 
:admins="localGroup.admins" @add-member="addGroupMember"
+        @remove-member="removeGroupMember" 
@change-role-to-member="changeRoleToMember" 
@change-role-to-admin="changeRoleToAdmin" />
 
       <b-button @click="submitForm" variant="primary">Submit</b-button>
     </b-form>
@@ -28,7 +28,6 @@
 import { models, services } from "django-airavata-api";
 import GroupMembersEditor from "./GroupMembersEditor.vue";
 
-
 export default {
   props: {
     group: {
@@ -74,10 +73,22 @@ export default {
     removeGroupMember(airavataInternalUserId) {
       const index = this.localGroup.members.indexOf(airavataInternalUserId);
       this.localGroup.members.splice(index, 1);
+      this.removeAdminMember(airavataInternalUserId);
+    },
+    removeAdminMember(airavataInternalUserId) {
       const adminIndex = 
this.localGroup.admins.indexOf(airavataInternalUserId);
       if (adminIndex >= 0) {
         this.localGroup.admins.splice(adminIndex, 1);
       }
+    },
+    changeRoleToMember(airavataInternalUserId) {
+      this.removeAdminMember(airavataInternalUserId);
+    },
+    changeRoleToAdmin(airavataInternalUserId) {
+      const adminIndex = 
this.localGroup.admins.indexOf(airavataInternalUserId);
+      if (adminIndex < 0) {
+        this.localGroup.admins.push(airavataInternalUserId);
+      }
     }
   }
 };
diff --git 
a/django_airavata/apps/groups/static/django_airavata_groups/js/group_components/GroupMembersEditor.vue
 
b/django_airavata/apps/groups/static/django_airavata_groups/js/group_components/GroupMembersEditor.vue
index 6582645..d20c6d4 100644
--- 
a/django_airavata/apps/groups/static/django_airavata_groups/js/group_components/GroupMembersEditor.vue
+++ 
b/django_airavata/apps/groups/static/django_airavata_groups/js/group_components/GroupMembersEditor.vue
@@ -4,6 +4,10 @@
       <autocomplete-text-input id="user-autocomplete" 
:suggestions="suggestions" @selected="suggestionSelected" />
     </b-form-group>
     <b-table v-if="membersCount > 0" hover :items="currentMembers" 
:fields="fields">
+      <template slot="role" slot-scope="data">
+        <b-form-select :value="data.item.role" @input="changeRole(data.item, 
$event)" :options="groupRoleOptions">
+        </b-form-select>
+      </template>
       <template slot="remove" slot-scope="data">
         <b-link @click="removeMember(data.item)">
           <span class="fa fa-trash"></span>
@@ -93,6 +97,18 @@ export default {
     },
     membersCount() {
       return this.members.length;
+    },
+    groupRoleOptions() {
+      return [
+        {
+          value: "MEMBER",
+          text: "MEMBER"
+        },
+        {
+          value: "ADMIN",
+          text: "ADMIN"
+        }
+      ];
     }
   },
   created() {
@@ -102,10 +118,17 @@ export default {
   },
   methods: {
     suggestionSelected(suggestion) {
-      this.$emit('add-member', suggestion.id);
+      this.$emit("add-member", suggestion.id);
     },
     removeMember(item) {
-      this.$emit('remove-member', item.id);
+      this.$emit("remove-member", item.id);
+    },
+    changeRole(item, role) {
+      if (role === "ADMIN") {
+        this.$emit("change-role-to-admin", item.id);
+      } else {
+        this.$emit("change-role-to-member", item.id);
+      }
     }
   }
 };

Reply via email to