2017-06-02 20:55:02 +00:00
|
|
|
|
<template lang="pug">
|
|
|
|
|
|
div
|
|
|
|
|
|
button.btn.btn-primary(b-btn, @click="$root.$emit('show::modal','members-modal')") {{ $t('viewMembers') }}
|
|
|
|
|
|
|
2017-06-08 21:27:22 +00:00
|
|
|
|
b-modal#members-modal(:title="$t('createGuild')", size='lg')
|
2017-06-06 05:21:37 +00:00
|
|
|
|
.header-wrap(slot="modal-header")
|
|
|
|
|
|
.row
|
|
|
|
|
|
.col-6
|
2017-06-08 21:27:22 +00:00
|
|
|
|
h1(v-once) {{$t('members')}}
|
2017-06-06 05:21:37 +00:00
|
|
|
|
.col-6
|
|
|
|
|
|
button(type="button" aria-label="Close" class="close")
|
|
|
|
|
|
span(aria-hidden="true") ×
|
|
|
|
|
|
.row
|
|
|
|
|
|
.form-group.col-6
|
|
|
|
|
|
input.form-control.search(type="text", :placeholder="$t('search')", v-model='searchTerm')
|
2017-06-08 21:27:22 +00:00
|
|
|
|
.col-4.offset-2
|
2017-06-06 05:21:37 +00:00
|
|
|
|
span.dropdown-label {{ $t('sortBy') }}
|
|
|
|
|
|
b-dropdown(:text="$t('sort')", right=true)
|
2017-06-08 21:27:22 +00:00
|
|
|
|
b-dropdown-item(v-for='sortOption in sortOptions', @click='sort(sortOption.value)', :key='sortOption.value') {{sortOption.text}}
|
2017-06-06 05:21:37 +00:00
|
|
|
|
.row(v-for='member in members', :key='member', )
|
2017-06-08 21:27:22 +00:00
|
|
|
|
.col-8.offset-1
|
|
|
|
|
|
user-list-detail(:user='member')
|
|
|
|
|
|
.col-3.actions
|
2017-06-06 05:21:37 +00:00
|
|
|
|
b-dropdown(:text="$t('sort')", right=true)
|
2017-06-08 21:27:22 +00:00
|
|
|
|
b-dropdown-item(@click='sort(option.value)')
|
|
|
|
|
|
img.action-icon(src='~assets/members/remove.svg')
|
|
|
|
|
|
| {{$t('removeMember')}}
|
|
|
|
|
|
b-dropdown-item(@click='sort(option.value)')
|
|
|
|
|
|
img.action-icon(src='~assets/members/message.svg')
|
|
|
|
|
|
| {{$t('sendMessage')}}
|
|
|
|
|
|
b-dropdown-item(@click='sort(option.value)')
|
|
|
|
|
|
img.action-icon(src='~assets/members/star.svg')
|
|
|
|
|
|
| {{$t('promoteToLeader')}}
|
|
|
|
|
|
b-dropdown-item(@click='sort(option.value)')
|
|
|
|
|
|
img.action-icon(src='~assets/members/star.svg')
|
|
|
|
|
|
| {{$t('addManager')}}
|
|
|
|
|
|
b-dropdown-item(@click='sort(option.value)')
|
|
|
|
|
|
img.action-icon(src='~assets/members/remove.svg')
|
|
|
|
|
|
| {{$t('removeManager2')}}
|
2017-06-02 20:55:02 +00:00
|
|
|
|
|
|
|
|
|
|
b-modal#remove-member(:title="$t('confirmRemoveMember')")
|
|
|
|
|
|
button(@click='confirmRemoveMember(member)', v-once) {{$t('remove')}}
|
|
|
|
|
|
|
|
|
|
|
|
b-modal#private-message(:title="$t('confirmRemoveMember')")
|
|
|
|
|
|
button(@click='confirmRemoveMember(member)', v-once) {{$t('remove')}}
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
2017-06-06 05:21:37 +00:00
|
|
|
|
<style lang='scss'>
|
2017-06-08 21:27:22 +00:00
|
|
|
|
header {
|
|
|
|
|
|
background-color: #edecee;
|
|
|
|
|
|
border-radius: 4px 4px 0 0;
|
|
|
|
|
|
}
|
2017-06-06 05:21:37 +00:00
|
|
|
|
|
2017-06-08 21:27:22 +00:00
|
|
|
|
.header-wrap {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
}
|
2017-06-06 05:21:37 +00:00
|
|
|
|
|
2017-06-08 21:27:22 +00:00
|
|
|
|
h1 {
|
|
|
|
|
|
color: #4f2a93;
|
|
|
|
|
|
}
|
2017-06-06 05:21:37 +00:00
|
|
|
|
|
2017-06-08 21:27:22 +00:00
|
|
|
|
.actions {
|
|
|
|
|
|
padding-top: 5em;
|
2017-06-06 05:21:37 +00:00
|
|
|
|
|
2017-06-08 21:27:22 +00:00
|
|
|
|
.action-icon {
|
|
|
|
|
|
margin-right: 1em;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2017-06-06 05:21:37 +00:00
|
|
|
|
</style>
|
|
|
|
|
|
|
2017-06-02 20:55:02 +00:00
|
|
|
|
<script>
|
|
|
|
|
|
import bModal from 'bootstrap-vue/lib/components/modal';
|
2017-06-06 05:21:37 +00:00
|
|
|
|
import bDropdown from 'bootstrap-vue/lib/components/dropdown';
|
|
|
|
|
|
import bDropdownItem from 'bootstrap-vue/lib/components/dropdown-item';
|
|
|
|
|
|
|
|
|
|
|
|
import UserListDetail from '../userListDetail';
|
2017-06-02 20:55:02 +00:00
|
|
|
|
|
|
|
|
|
|
export default {
|
|
|
|
|
|
props: ['group'],
|
|
|
|
|
|
components: {
|
|
|
|
|
|
bModal,
|
2017-06-06 05:21:37 +00:00
|
|
|
|
bDropdown,
|
|
|
|
|
|
bDropdownItem,
|
|
|
|
|
|
UserListDetail,
|
2017-06-02 20:55:02 +00:00
|
|
|
|
},
|
2017-06-08 21:27:22 +00:00
|
|
|
|
created () {
|
|
|
|
|
|
this.getMembers();
|
|
|
|
|
|
},
|
2017-06-02 20:55:02 +00:00
|
|
|
|
data () {
|
|
|
|
|
|
return {
|
2017-06-08 21:27:22 +00:00
|
|
|
|
members: [],
|
2017-06-02 20:55:02 +00:00
|
|
|
|
memberToRemove: '',
|
2017-06-08 21:27:22 +00:00
|
|
|
|
sortOptions: [
|
|
|
|
|
|
{
|
|
|
|
|
|
value: 'tier',
|
|
|
|
|
|
text: this.$t('tier'),
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
value: 'name',
|
|
|
|
|
|
text: this.$t('name'),
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
value: 'level',
|
|
|
|
|
|
text: this.$t('level'),
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
value: 'class',
|
|
|
|
|
|
text: this.$t('class'),
|
|
|
|
|
|
},
|
|
|
|
|
|
],
|
|
|
|
|
|
searchTerm: '',
|
2017-06-02 20:55:02 +00:00
|
|
|
|
};
|
|
|
|
|
|
},
|
|
|
|
|
|
methods: {
|
2017-06-08 21:27:22 +00:00
|
|
|
|
async getMembers () {
|
|
|
|
|
|
let members = await this.$store.dispatch('members:getGroupMembers', {
|
|
|
|
|
|
groupId: this.group._id,
|
|
|
|
|
|
includeAllPublicFields: true,
|
|
|
|
|
|
});
|
|
|
|
|
|
this.members = members;
|
2017-06-02 20:55:02 +00:00
|
|
|
|
},
|
2017-06-08 21:27:22 +00:00
|
|
|
|
async clickMember (uid, forceShow) {
|
2017-06-02 20:55:02 +00:00
|
|
|
|
let user = this.$store.state.user.data;
|
|
|
|
|
|
|
|
|
|
|
|
if (user._id === uid && !forceShow) {
|
|
|
|
|
|
if (this.$route.name === 'tasks') {
|
|
|
|
|
|
this.$route.router.go('options.profile.avatar');
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
this.$route.router.go('tasks');
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-06-08 21:27:22 +00:00
|
|
|
|
await this.$store.dispatch('members:selectMember', {
|
|
|
|
|
|
memberId: uid,
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
this.$root.$emit('show::modal', 'members-modal');
|
2017-06-02 20:55:02 +00:00
|
|
|
|
},
|
2017-06-08 21:27:22 +00:00
|
|
|
|
async removeMember (member) {
|
2017-06-02 20:55:02 +00:00
|
|
|
|
this.memberToRemove = member;
|
|
|
|
|
|
this.$root.$emit('show::modal', 'remove-member');
|
|
|
|
|
|
},
|
2017-06-08 21:27:22 +00:00
|
|
|
|
async confirmRemoveMember (confirmation) {
|
2017-06-02 20:55:02 +00:00
|
|
|
|
if (!confirmation) {
|
|
|
|
|
|
this.memberToRemove = '';
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
2017-06-08 21:27:22 +00:00
|
|
|
|
|
|
|
|
|
|
await this.$store.dispatch('members:removeMember', {
|
|
|
|
|
|
memberId: this.memberToRemove._id,
|
|
|
|
|
|
groupId: this.group._id,
|
|
|
|
|
|
message: this.removeMessage,
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
this.memberToRemove = '';
|
|
|
|
|
|
this.removeMessage = '';
|
2017-06-02 20:55:02 +00:00
|
|
|
|
},
|
2017-06-08 21:27:22 +00:00
|
|
|
|
async quickReply (uid) {
|
2017-06-02 20:55:02 +00:00
|
|
|
|
this.memberToReply = uid;
|
2017-06-08 21:27:22 +00:00
|
|
|
|
await this.$store.dispatch('members:selectMember', {
|
|
|
|
|
|
memberId: uid,
|
|
|
|
|
|
});
|
|
|
|
|
|
this.$root.$emit('show::modal', 'private-message'); // MemberModalCtrl
|
2017-06-02 20:55:02 +00:00
|
|
|
|
},
|
2017-06-08 21:27:22 +00:00
|
|
|
|
async addManager (memberId) {
|
|
|
|
|
|
await this.$store.dispatch('group:addManager', {
|
|
|
|
|
|
memberId,
|
|
|
|
|
|
});
|
2017-06-02 20:55:02 +00:00
|
|
|
|
},
|
2017-06-08 21:27:22 +00:00
|
|
|
|
async removeManager (memberId) {
|
|
|
|
|
|
await this.$store.dispatch('group:removeManager', {
|
|
|
|
|
|
memberId,
|
|
|
|
|
|
});
|
2017-06-02 20:55:02 +00:00
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
};
|
|
|
|
|
|
</script>
|