From a0177fa44da6e134247b3b1285ff1014c1857413 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Mon, 13 Jun 2022 16:53:29 -0500 Subject: [PATCH] WIP(teams): display assigned tasks on user's personal board --- migrations/tasks/team-tasks-v2.js | 18 ++++-- scripts/team-cron.js | 10 +-- .../src/components/tasks/approvalFooter.vue | 40 +++++------- website/client/src/components/tasks/task.vue | 29 ++++----- .../client/src/components/tasks/taskModal.vue | 64 +++++-------------- .../src/libs/store/helpers/filterTasks.js | 5 +- website/client/src/store/getters/tasks.js | 4 +- website/common/script/ops/scoreTask.js | 28 ++++---- .../server/controllers/api-v3/tasks/groups.js | 4 +- website/server/libs/tasks/index.js | 12 ++-- website/server/models/group.js | 24 ++++--- website/server/models/task.js | 4 +- 12 files changed, 106 insertions(+), 136 deletions(-) diff --git a/migrations/tasks/team-tasks-v2.js b/migrations/tasks/team-tasks-v2.js index 6469b6f275..837854bab9 100644 --- a/migrations/tasks/team-tasks-v2.js +++ b/migrations/tasks/team-tasks-v2.js @@ -1,4 +1,3 @@ -import clone from 'lodash/clone'; import filter from 'lodash/filter'; import find from 'lodash/find'; import isArray from 'lodash/isArray'; @@ -20,19 +19,26 @@ async function updateTeamTasks (team) { boardTask.group.assignedDate = undefined; boardTask.group.assigningUsername = undefined; boardTask.group.sharedCompletion = undefined; - const assignedUsers = clone(boardTask.group.assignedUsers); - boardTask.group.assignedUsers = null; - for (const assignedUser of assignedUsers) { + + for (const assignedUser of boardTask.group.assignedUsers) { const userTask = find(teamUserTasks, task => task.userId === assignedUser && task.group.taskId === boardTask._id); + if (!boardTask.group.assignedUsersDetail) boardTask.group.assignedUsersDetail = {}; if (userTask) { - if (!boardTask.group.assignedUsers) boardTask.group.assignedUsers = {}; - boardTask.group.assignedUsers[assignedUser] = { + boardTask.group.assignedUsersDetail[assignedUser] = { assignedDate: userTask.group.assignedDate, assigningUsername: userTask.group.assigningUsername, completed: userTask.completed || false, completedDate: userTask.dateCompleted, }; + toSave.push(Tasks.Task.findByIdAndDelete(userTask._id)); + } else { + boardTask.group.assignedUsersDetail[assignedUser] = { + assignedDate: new Date(), + assigningUsername: null, + completed: false, + completedDate: null, + }; } } boardTask.markModified('group'); diff --git a/scripts/team-cron.js b/scripts/team-cron.js index e1792e9869..11f67fbf4f 100644 --- a/scripts/team-cron.js +++ b/scripts/team-cron.js @@ -54,16 +54,16 @@ async function updateTeamTasks (team) { let processChecklist = false; let assignments = 0; let completions = 0; - for (const assignedUser in daily.group.assignedUsers) { - if (Object.prototype.hasOwnProperty.call(daily.group.assignedUsers, assignedUser)) { + for (const assignedUser in daily.group.assignedUsersDetail) { + if (Object.prototype.hasOwnProperty.call(daily.group.assignedUsersDetail, assignedUser)) { assignments += 1; - if (daily.group.assignedUsers[assignedUser].completed) { + if (daily.group.assignedUsersDetail[assignedUser].completed) { completions += 1; - daily.group.assignedUsers[assignedUser].completed = false; + daily.group.assignedUsersDetail[assignedUser].completed = false; } } } - if (completions > 0) daily.markModified('group.assignedUsers'); + if (completions > 0) daily.markModified('group.assignedUsersDetail'); if (daily.completed) { processChecklist = true; daily.completed = false; diff --git a/website/client/src/components/tasks/approvalFooter.vue b/website/client/src/components/tasks/approvalFooter.vue index 71d54fca74..1d369d08d4 100644 --- a/website/client/src/components/tasks/approvalFooter.vue +++ b/website/client/src/components/tasks/approvalFooter.vue @@ -41,7 +41,6 @@