145 lines
3.4 KiB
JavaScript
Vendored
145 lines
3.4 KiB
JavaScript
Vendored
module.exports = {
|
|
props: ['user', 'team'],
|
|
|
|
|
|
/**
|
|
* The component's data.
|
|
*/
|
|
data() {
|
|
return {
|
|
roles: [],
|
|
|
|
updatingTeamMember: null,
|
|
deletingTeamMember: null,
|
|
|
|
updateTeamMemberForm: $.extend(true, new SparkForm({
|
|
role: ''
|
|
}), Spark.forms.updateTeamMember),
|
|
|
|
deleteTeamMemberForm: new SparkForm({})
|
|
}
|
|
},
|
|
|
|
|
|
/**
|
|
* The component has been created by Vue.
|
|
*/
|
|
created() {
|
|
this.getRoles();
|
|
},
|
|
|
|
|
|
methods: {
|
|
/**
|
|
* Get the available team member roles.
|
|
*/
|
|
getRoles() {
|
|
axios.get(`/settings/${Spark.pluralTeamString}/roles`)
|
|
.then(response => {
|
|
this.roles = response.data;
|
|
});
|
|
},
|
|
|
|
|
|
/**
|
|
* Edit the given team member.
|
|
*/
|
|
editTeamMember(member) {
|
|
this.updatingTeamMember = member;
|
|
this.updateTeamMemberForm.role = member.pivot.role;
|
|
|
|
$('#modal-update-team-member').modal('show');
|
|
},
|
|
|
|
|
|
/**
|
|
* Update the team member.
|
|
*/
|
|
update() {
|
|
Spark.put(this.urlForUpdating, this.updateTeamMemberForm)
|
|
.then(() => {
|
|
Bus.$emit('updateTeam');
|
|
|
|
$('#modal-update-team-member').modal('hide');
|
|
});
|
|
},
|
|
|
|
|
|
/**
|
|
* Display the approval modal for the deletion of a team member.
|
|
*/
|
|
approveTeamMemberDelete(member) {
|
|
this.deletingTeamMember = member;
|
|
|
|
$('#modal-delete-member').modal('show');
|
|
},
|
|
|
|
|
|
/**
|
|
* Delete the given team member.
|
|
*/
|
|
deleteMember() {
|
|
Spark.delete(this.urlForDeleting, this.deleteTeamMemberForm)
|
|
.then(() => {
|
|
Bus.$emit('updateTeam');
|
|
|
|
$('#modal-delete-member').modal('hide');
|
|
});
|
|
},
|
|
|
|
|
|
/**
|
|
* Determine if the current user can edit a team member.
|
|
*/
|
|
canEditTeamMember(member) {
|
|
return this.user.id === this.team.owner_id && this.user.id !== member.id
|
|
},
|
|
|
|
|
|
/**
|
|
* Determine if the current user can delete a team member.
|
|
*/
|
|
canDeleteTeamMember(member) {
|
|
return this.user.id === this.team.owner_id && this.user.id !== member.id
|
|
},
|
|
|
|
|
|
/**
|
|
* Get the displayable role for the given team member.
|
|
*/
|
|
teamMemberRole(member) {
|
|
if (this.roles.length == 0) {
|
|
return '';
|
|
}
|
|
|
|
if (member.pivot.role == 'owner') {
|
|
return 'Owner';
|
|
}
|
|
|
|
const role = _.find(this.roles, role => role.value == member.pivot.role);
|
|
|
|
if (typeof role !== 'undefined') {
|
|
return role.text;
|
|
}
|
|
}
|
|
},
|
|
|
|
|
|
computed: {
|
|
/**
|
|
* Get the URL for updating a team member.
|
|
*/
|
|
urlForUpdating: function () {
|
|
return `/settings/${Spark.pluralTeamString}/${this.team.id}/members/${this.updatingTeamMember.id}`;
|
|
},
|
|
|
|
|
|
/**
|
|
* Get the URL for deleting a team member.
|
|
*/
|
|
urlForDeleting() {
|
|
return `/settings/${Spark.pluralTeamString}/${this.team.id}/members/${this.deletingTeamMember.id}`;
|
|
}
|
|
}
|
|
};
|