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); + } } } };