From eaad244181c555423837058d58e6a39c2eadb111 Mon Sep 17 00:00:00 2001 From: Aleksey Date: Sat, 16 Nov 2019 20:36:27 +0300 Subject: [PATCH] Refactoring & Fix: editing group and challenges from user dashboard (#11418) * Refactoring & Feature: edit/delete group and challenge tasks - Remove showOption from tasks props - Pass all needed data to task for understand in mapGetter function which controls we should show - Improve current solution with edit and delete logic * Fix: this in template * Fix & Test: extend tests, fix can Edit/Delete functions * Fix: allow user edit challenge tasks on dashboard * Fix: test case after code change * fix import path * Fix: - Extend canEdit and canDelete functions with admin role - Clarify canEdit and canDelete conditions - Extend test cases --- .../components/challenges/challengeDetail.vue | 5 +- .../group-plans/taskInformation.vue | 4 - .../client/src/components/tasks/column.vue | 7 +- website/client/src/components/tasks/task.vue | 30 +++++++- website/client/src/store/getters/tasks.js | 75 +++++++++++++++++-- .../store/getters/tasks/canDelete.spec.js | 70 +++++++++++++++-- .../unit/store/getters/tasks/canEdit.spec.js | 75 +++++++++++++++++++ 7 files changed, 236 insertions(+), 30 deletions(-) create mode 100644 website/client/tests/unit/store/getters/tasks/canEdit.spec.js diff --git a/website/client/src/components/challenges/challengeDetail.vue b/website/client/src/components/challenges/challengeDetail.vue index de0962c386..d2cbc7b300 100644 --- a/website/client/src/components/challenges/challengeDetail.vue +++ b/website/client/src/components/challenges/challengeDetail.vue @@ -123,7 +123,7 @@ class="col-12 col-sm-6" :type="column" :task-list-override="tasksByType[column]" - :show-options="showOptions" + :challenge="challenge" @editTask="editTask" @taskDestroyed="taskDestroyed" /> @@ -386,9 +386,6 @@ export default { canJoin () { return !this.isMember; }, - showOptions () { - return this.isLeader; - }, }, mounted () { if (!this.searchId) this.searchId = this.challengeId; diff --git a/website/client/src/components/group-plans/taskInformation.vue b/website/client/src/components/group-plans/taskInformation.vue index d98baeedd6..f874a79507 100644 --- a/website/client/src/components/group-plans/taskInformation.vue +++ b/website/client/src/components/group-plans/taskInformation.vue @@ -75,7 +75,6 @@ class="col-12 col-md-3" :type="column" :task-list-override="tasksByType[column]" - :show-options="showOptions" :group="group" :search-text="searchText" @editTask="editTask" @@ -199,9 +198,6 @@ export default { return (this.group.leader && this.group.leader._id === this.user._id) || (this.group.managers && Boolean(this.group.managers[this.user._id])); }, - showOptions () { - return this.canCreateTasks; - }, }, watch: { // call again the method if the route changes (when this route is already active) diff --git a/website/client/src/components/tasks/column.vue b/website/client/src/components/tasks/column.vue index 11a5d0b993..a381877936 100644 --- a/website/client/src/components/tasks/column.vue +++ b/website/client/src/components/tasks/column.vue @@ -90,8 +90,8 @@ :key="task.id" :task="task" :is-user="isUser" - :show-options="showOptions" :group="group" + :challenge="challenge" @editTask="editTask" @moveTo="moveTo" @taskDestroyed="taskDestroyed" @@ -372,10 +372,7 @@ export default { selectedTags: {}, taskListOverride: {}, group: {}, - showOptions: { - type: Boolean, - default: true, - }, + challenge: {}, }, // @TODO: maybe we should store the group on state? data () { const icons = Object.freeze({ diff --git a/website/client/src/components/tasks/task.vue b/website/client/src/components/tasks/task.vue index 699f57b1e4..acb2df06e2 100644 --- a/website/client/src/components/tasks/task.vue +++ b/website/client/src/components/tasks/task.vue @@ -99,6 +99,7 @@