123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- /*
- SpacedeckTeams
- This module contains functions dealing with Teams.
- */
- var SpacedeckTeams = {
- data: {
- team_members: [],
- team_loading: false,
- team_logo: "",
- team_emails: "",
- team_email_invited: false,
- team_plan_calculation: "",
- },
- methods: {
- is_admin: function(user) {
- return _.filter(user.team.admins, function(admin_id) {
- return admin_id == user._id;
- }).length > 0;
- },
- calculate_team: function() {
- this.team_plan_calculation = "";
- },
- load_team: function() {
- if (this.user.team) {
- load_resource("GET", "/teams/" + this.user.team._id + "/memberships", null, function(members) {
- this.team_members = members;
- this.calculate_team();
- }.bind(this), function(xhr, textStatus, errorThrown) {
- console.log(xhr, textStatus, errorThrown);
- });
- }
- },
- team_save: function() {
- load_resource("PUT", "/teams/" + this.user.team._id , this.user.team, function(res, xhr) {
- alert("Team updated.");
- }.bind(this), function(xhr) {
- console.error(xhr);
- alert("Could not update Team.");
- });
- },
- team_update_member: function(m){
- load_resource("PUT", "/teams/" + this.user.team._id + "/memberships/" + m._id, m, function(res, xhr) {
- console.log("members updated");
- }.bind(this), function(xhr) {
- console.error(xhr);
- });
- },
- team_invite_members: function(emails) {
- var emailList = emails.split(",");
- for (_i = 0, _len = emailList.length; _i < _len; _i++) {
- email = emailList[_i];
- email = email.replace(new RegExp(" ", "g"), "").toLowerCase();
- if (validateEmail(email)) {
- var data = {
- email: email
- };
- load_resource("POST", "/teams/" + this.user.team._id + "/memberships", data, function(res, xhr) {
-
- this.team_email_invited = true;
- this.team_members.push(res);
- var timeoutID = window.setTimeout(function(){
- this.team_email_invited = false;
- }.bind(this), 1000);
-
- this.team_emails = "";
- }.bind(this), function(xhr, textStatus, errorThrown) {
- console.log(xhr, textStatus, errorThrown);
- this.team_invite_error = JSON.parse(xhr.responseText).error;
- }.bind(this));
- }
- }
- },
- team_promote_member: function(m) {
- load_resource("GET", "/teams/" + this.user.team._id + "/memberships/" + m._id + "/promote" , null, function(res, xhr) {
- this.load_user(function() {
- this.load_team();
- }.bind(this));
- }.bind(this), function(xhr) {
- console.error(xhr);
- });
- },
- team_demote_member: function(m) {
- load_resource("GET", "/teams/" + this.user.team._id + "/memberships/" + m._id + "/demote" , null, function(res, xhr) {
- this.load_user(function() {
- this.load_team();
- }.bind(this));
- }.bind(this), function(xhr) {
- console.error(xhr);
- });
- },
- team_remove_member: function(m) {
- if (confirm("Really delete this member?")) {
- if (m.user_id && m.state === "active") {
- load_resource("DELETE", "/users/" + m._id, null, function(res, xhr) {
- var idx = this.team_members.indexOf(m);
- this.team_members.splice(idx, 1);
- }.bind(this), function(xhr) {
- console.error(xhr);
- });
- } else {
- load_resource("DELETE", "/teams/" + this.user.team._id + "/memberships/" + m._id, null, function(res, xhr) {
- var idx = this.team_members.indexOf(m);
- this.team_members.splice(idx, 1);
- }.bind(this), function(xhr) {
- console.error(xhr);
- });
- }
- }
- }
- }
- }
|