UNCLASSIFIED

Commit ac0325ef authored by hunter.congress's avatar hunter.congress
Browse files

adding updating teams

parent 07a1a265
This diff is collapsed.
...@@ -29,38 +29,38 @@ ...@@ -29,38 +29,38 @@
"vuex": "^3.5.1" "vuex": "^3.5.1"
}, },
"devDependencies": { "devDependencies": {
"@babel/plugin-transform-strict-mode": "^7.8.3", "@babel/plugin-transform-strict-mode": "^7.12.13",
"@mdi/font": "^5.3.45", "@mdi/font": "^5.9.55",
"@vue/cli-plugin-babel": "^4.5.8", "@vue/cli-plugin-babel": "^4.5.11",
"@vue/cli-plugin-e2e-cypress": "^4.5.8", "@vue/cli-plugin-e2e-cypress": "^4.5.11",
"@vue/cli-plugin-eslint": "^4.5.8", "@vue/cli-plugin-eslint": "^4.5.11",
"@vue/cli-plugin-router": "^4.5.8", "@vue/cli-plugin-router": "^4.5.11",
"@vue/cli-plugin-unit-jest": "^4.5.8", "@vue/cli-plugin-unit-jest": "^4.5.11",
"@vue/cli-service": "^4.5.8", "@vue/cli-service": "^4.5.11",
"@vue/eslint-config-prettier": "^6.0.0", "@vue/eslint-config-prettier": "^6.0.0",
"@vue/test-utils": "^1.1.2", "@vue/test-utils": "^1.1.3",
"babel-eslint": "^10.1.0", "babel-eslint": "^10.1.0",
"cypress": "^5.4.0", "cypress": "^5.4.0",
"eslint": "^6.8.0", "eslint": "^6.8.0",
"eslint-loader": "^4.0.2", "eslint-loader": "^4.0.2",
"eslint-plugin-prettier": "^3.1.1", "eslint-plugin-prettier": "^3.3.1",
"eslint-plugin-vue": "^6.2.2", "eslint-plugin-vue": "^6.2.2",
"flush-promises": "^1.0.2", "flush-promises": "^1.0.2",
"husky": "^4.3.5", "husky": "^4.3.8",
"pre-commit": "^1.2.2", "pre-commit": "^1.2.2",
"prettier": "^2.2.1", "prettier": "^2.2.1",
"pretty-quick": "^3.1.0", "pretty-quick": "^3.1.0",
"sass": "^1.29.0", "sass": "^1.32.8",
"sass-loader": "^8.0.2", "sass-loader": "^8.0.2",
"style-resources-loader": "^1.3.2", "style-resources-loader": "^1.3.2",
"stylelint": "^13.0.0", "stylelint": "^13.11.0",
"stylelint-webpack-plugin": "^2.1.1", "stylelint-webpack-plugin": "^2.1.1",
"vue-cli-plugin-style-resources-loader": "~0.1.4", "vue-cli-plugin-style-resources-loader": "~0.1.4",
"vue-cli-plugin-vuetify": "~2.0.6", "vue-cli-plugin-vuetify": "^2.0.9",
"vue-loader-v16": "^16.0.0-beta.5.4", "vue-loader-v16": "^16.0.0-beta.5.4",
"vue-svg-loader": "^0.16.0", "vue-svg-loader": "^0.16.0",
"vue-template-compiler": "^2.6.12", "vue-template-compiler": "^2.6.12",
"vuetify-loader": "^1.3.0" "vuetify-loader": "^1.7.2"
}, },
"eslintConfig": { "eslintConfig": {
"root": true, "root": true,
......
...@@ -24,12 +24,17 @@ export default { ...@@ -24,12 +24,17 @@ export default {
} }
}, },
async updateTeam({ id, name, description, capacity }) { async updateTeam(team, addPOC, editedMembers) {
await HTTP.put(`/teams/${id}`, { name, description, capacity }); console.log("UPDATING", team, addPOC, editedMembers);
await HTTP.put(`/teams/${team.id}/members`, editedMembers);
if (addPOC) {
await HTTP.post(`/teams/${team.id}/members`, addPOC);
};
const response = await HTTP.put(`/teams/${team.id}`, team);
return response;
}, },
async deleteMembers(members, teamId) { async deleteMembers(members, teamId) {
console.log(members);
await HTTP.delete(`/teams/${teamId}/members`, { await HTTP.delete(`/teams/${teamId}/members`, {
params: { userIds: `[${members}]` }, params: { userIds: `[${members}]` },
}); });
...@@ -43,7 +48,6 @@ export default { ...@@ -43,7 +48,6 @@ export default {
}); });
}, },
async addMembers(members, teamId) { async addMembers(members, teamId) {
console.log(members);
for (let i = 0; i < members.length; i++) { for (let i = 0; i < members.length; i++) {
console.log("USER", members[i]); console.log("USER", members[i]);
await this.addMember(members[i], teamId, members[i].isTeamLead); await this.addMember(members[i], teamId, members[i].isTeamLead);
......
...@@ -28,4 +28,5 @@ export default { ...@@ -28,4 +28,5 @@ export default {
async updateUserPreferences(preferences) { async updateUserPreferences(preferences) {
return HTTP.post("/users/preferences", preferences); return HTTP.post("/users/preferences", preferences);
}, },
}; }
...@@ -62,6 +62,8 @@ ...@@ -62,6 +62,8 @@
ref="UserSelect" ref="UserSelect"
required required
multiple multiple
preload
:preloadData="toAdd.poc"
label="Select a Team Leads" label="Select a Team Leads"
:rules="[inputRules.required]" :rules="[inputRules.required]"
/> />
...@@ -117,15 +119,11 @@ export default { ...@@ -117,15 +119,11 @@ export default {
created() { created() {
if (this.value) { if (this.value) {
this.toAdd = cloneDeep(this.value); this.toAdd = cloneDeep(this.value);
console.log("ADDED", this.toAdd); this.toAdd.poc = this.toAdd.members.filter(
(item) => item.TeamMember.isTeamLead === true
);
} }
}, },
mounted() {
this.toAdd.poc = this.toAdd.members.filter(
(item) => item.TeamMember.isTeamLead === true
);
console.log("POC", this.toAdd.poc);
},
methods: { methods: {
init() {}, init() {},
cancel() { cancel() {
...@@ -137,6 +135,7 @@ export default { ...@@ -137,6 +135,7 @@ export default {
this.init(); this.init();
}, },
edit() { edit() {
console.log("Saving", this.toAdd);
this.$emit("edit", this.toAdd); this.$emit("edit", this.toAdd);
this.init(); this.init();
}, },
......
...@@ -75,9 +75,14 @@ export default { ...@@ -75,9 +75,14 @@ export default {
type: Boolean, type: Boolean,
default: false, default: false,
}, },
preload: {
type: Boolean,
default: false,
},
rules: Array, rules: Array,
label: String, label: String,
value: [Object, Array], value: [Object, Array],
preloadData: Array,
}, },
data: () => ({ data: () => ({
loading: false, loading: false,
...@@ -87,9 +92,8 @@ export default { ...@@ -87,9 +92,8 @@ export default {
}), }),
created() { created() {
if (this.value) { if (this.value) {
console.log("USERS", this.value);
this.model = this.value; this.model = this.value;
this.items = [this.value]; this.items = this.value;
} }
}, },
computed: { computed: {
...@@ -153,12 +157,12 @@ export default { ...@@ -153,12 +157,12 @@ export default {
const newItems = await UserService.search({ q: val }); const newItems = await UserService.search({ q: val });
if (this.model) { if (this.model) {
if (Array.isArray(this.model)) { if (Array.isArray(this.model)) {
this.items = uniq([...newItems, ...this.model]); this.items = uniq([...newItems.users, ...this.model]);
} else { } else {
this.items = uniq([...newItems, this.model]); this.items = uniq([...newItems.users, this.model]);
} }
} else { } else {
this.items = newItems; this.items = newItems.users;
} }
} catch (e) { } catch (e) {
console.error("unable to get users", e); console.error("unable to get users", e);
......
...@@ -100,6 +100,7 @@ ...@@ -100,6 +100,7 @@
<UserSelect <UserSelect
ref="userSelect" ref="userSelect"
v-model="memberToAdd" v-model="memberToAdd"
multiple
:rules="[ :rules="[
inputRules.required, inputRules.required,
inputRules.duplicates( inputRules.duplicates(
...@@ -288,6 +289,7 @@ export default { ...@@ -288,6 +289,7 @@ export default {
this.team = await TeamService.getTeamForUser(); this.team = await TeamService.getTeamForUser();
} }
} else { } else {
console.log("THIS CANNOT BE ME");
await this.getTeams(); await this.getTeams();
} }
} catch (error) { } catch (error) {
...@@ -303,6 +305,7 @@ export default { ...@@ -303,6 +305,7 @@ export default {
} }
try { try {
this.team = await TeamService.getTeam(this.$route.params.teamId); this.team = await TeamService.getTeam(this.$route.params.teamId);
console.log("TEAM", this.team);
} catch (error) { } catch (error) {
console.error("!teams error!", error); console.error("!teams error!", error);
} finally { } finally {
...@@ -312,9 +315,46 @@ export default { ...@@ -312,9 +315,46 @@ export default {
}, },
async editTeam(editedTeam) { async editTeam(editedTeam) {
this.state.isEditingTeamDetailsBusy = true; this.state.isEditingTeamDetailsBusy = true;
console.log("THIS IS EDITTED", editedTeam); const editMembersId = editedTeam.members.map((member) => member.id);
const newPOCId = editedTeam.poc.map((member) => member.id);
let currentPOCId = this.team.members.filter(
(member) => member.TeamMember.isTeamLead === true
);
currentPOCId = currentPOCId.map((member) => member.id);
console.log("ID", editMembersId);
const addTeamLeads =[];
const editTeamMembers = [];
for (let i = 0; i < editedTeam.poc.length; i++) {
if (!editMembersId.includes(editedTeam.poc[i].id)) {
console.log("ADDING", editedTeam.poc[i].name)
addTeamLeads.push({ userId: editedTeam.poc[i].id, isTeamLead: true });
} else if (
editMembersId.includes(editedTeam.poc[i].id) &&
!currentPOCId.includes(editedTeam.poc[i].id)
) {
console.log("UPGRADING", editedTeam.poc[i].name)
editTeamMembers.push({
userId: editedTeam.poc[i].id,
isTeamLead: true,
});
}
}
editTeamMembers.concat(
currentPOCId.map(function (member) {
if (!newPOCId.includes(member)) {
console.log("DEMOTING", member);
return { userId: member, isTeamLead: false };
}
})
);
console.log("addTeamLeads", addTeamLeads);
console.log("REMOVE TEAM LEAD", editTeamMembers);
try { try {
this.team = await TeamService.updateTeam(editedTeam); this.team = await TeamService.updateTeam(
editedTeam,
addTeamLeads,
editTeamMembers
);
// success state // success state
this.snackbars.teamDetails = true; this.snackbars.teamDetails = true;
this.state.showEditDialog = false; this.state.showEditDialog = false;
...@@ -336,7 +376,7 @@ export default { ...@@ -336,7 +376,7 @@ export default {
} }
this.state.isAddingBusy = true; this.state.isAddingBusy = true;
try { try {
await TeamService.addMember(member, this.$route.params.teamId, false); await TeamService.addMembers(member, this.$route.params.teamId, false);
this.memberToAdd = member; this.memberToAdd = member;
this.snackbars.add = true; this.snackbars.add = true;
} catch (e) { } catch (e) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment