<template>
<div>
<h2>Team Overview - {{store.team.name}}</h2>
<h3>Members</h3>
<table>
<tr v-for="(member) in store.team.members" :key="member.member">
<td class="user-points-cell">
{{ member.points }} 🎈 points
</td>
<td>
<UserBubble
:size="48"
:user="member.member"
:displayName="member.displayName"
>
<template #title v-if="member.member !== store.team.owner">
<a href="#"
title="Remove user"
class="icon-close remove-member"
@click="removeUser(member.member)" ></a>
</template>
</UserBubble>
</td>
</tr>
</table>
<h3>Invitations</h3>
<div v-if="store.team.invites.length > 0">
<p>The following users are currently invited:</p>
<ul>
<li v-for="(invitee) in store.team.invites" :key="(invitee.userId)">
<UserBubble
:size="48"
:user="invitee.userId"
:displayName="invitee.userId"
>
<template #title>
<a href="#"
title="Cancel invite"
class="icon-close remove-member"
@click="removeUser(invitee.userId)" ></a>
</template>
</UserBubble>
</li>
</ul>
</div>
<div>
<form>
<input class="no-close"
type="text"
placeholder="Invite User"
v-model="inviteUsername" required />
<input type="submit" class="icon-confirm"
value=" " @click="inviteUser" />
</form>
</div>
</div>
</template>
<script>
import { UserBubble } from '@nextcloud/vue';
export default {
name: 'TeamOverview',
components: {
UserBubble,
},
data() {
return {
store: this.$root.$data.globalStore,
inviteUsername: "",
}
},
mounted: async function() {
this.store.loadTeamData();
},
methods: {
inviteUser() {
this.store.createUserInvitation(this.inviteUsername)
.then(() => {
this.inviteUsername = "";
}
);
return false;
},
removeUser(username) {
console.log(`NOT IMPLEMENTED: remove user from team: ${username}`);
return false;
},
},
}
</script>
<style>
.user-points-cell {
padding: 0 1rem;
}
.remove-member {
height: 100%;
display: block;
margin-right: .5rem;
}
h3 {
font-weight: bold;
}
</style>