From acc940f03088dd39eaf023a48a6fdf6ceef3cca5 Mon Sep 17 00:00:00 2001 From: Trey Stevens Date: Thu, 3 Dec 2020 18:54:07 -0500 Subject: [PATCH 1/3] activate / deactivate subjects --- src/views/ProfileView.vue | 68 ++++++++++++++++++++++++++++----------- 1 file changed, 49 insertions(+), 19 deletions(-) diff --git a/src/views/ProfileView.vue b/src/views/ProfileView.vue index 30022867..c8dbf288 100644 --- a/src/views/ProfileView.vue +++ b/src/views/ProfileView.vue @@ -103,14 +103,35 @@
Unlocked Subjects
-
-
- {{ certKey[key] }} +
+
+ + {{ certKey[subject].subjectType }} + + {{ + certKey[subject].displayName + }}
-
{{ key }}
+
@@ -141,10 +162,12 @@ export default { phoneNational: "", phoneInputInfo: {}, isAccountActive: true, - showDeactivateAccountModal: false + showDeactivateAccountModal: false, + modifiedSubjects: [] }; }, created() { + this.modifiedSubjects = this.user.subjects; this.isAccountActive = !this.user.isDeactivated; if (this.user.isVolunteer && this.user.phone) { const num = @@ -189,7 +212,10 @@ export default { for (let topic in topicData.subtopics) { if (topicData.subtopics.hasOwnProperty(topic)) { const { displayName } = topicData.subtopics[topic]; - subtopicObj[displayName] = topicName.toUpperCase(); + subtopicObj[topic] = { + subjectType: topicName.toUpperCase(), + displayName + }; } } } @@ -197,13 +223,14 @@ export default { }, subjects() { const user = this.$store.state.user.user; + const subtopics = allSubtopics(); const subjects = user.subjects.reduce((displayObj, key) => { - const subtopics = allSubtopics(); - - if (subtopics[key]) { - displayObj[subtopics[key].displayName || subtopics[key]] = true; - } + const { subject } = key; + if (subtopics[subject]) + displayObj[ + subtopics[subject].displayName || subtopics[subject] + ] = true; return displayObj; }, {}); @@ -268,11 +295,10 @@ export default { if (!this.errors.length) { // form fields valid, so set profile this.user.phone = this.phoneInputInfo.e164; - this.user.isDeactivated = !this.isAccountActive; - + this.user.subjects = this.modifiedSubjects; // send only the necessary data const payloadUser = {}; - const keys = ["phone", "isDeactivated"]; + const keys = ["phone", "isDeactivated", "subjects"]; keys.forEach(key => (payloadUser[key] = this.user[key])); @@ -288,6 +314,11 @@ export default { } ); } + }, + toggleSubjectActivated({ value }, subject) { + for (const s of this.modifiedSubjects) { + if (s.subject === subject) s.isActivated = value; + } } } }; @@ -485,10 +516,9 @@ button:hover { } .certBox { - display: flex; + @include flex-container(row, space-between, center); height: 60px; - align-items: center; - padding-left: 20px; + padding: 0 20px; border-top: 1px solid #cccccf; font-weight: 600; } From 9959e6862a698e2acefbd7593bc241112112b580 Mon Sep 17 00:00:00 2001 From: Trey Stevens Date: Thu, 3 Dec 2020 19:06:52 -0500 Subject: [PATCH 2/3] updated looking for subjects in user.subjects to new schema --- src/components/AdditionalSubjectsDropDown.vue | 3 ++- src/components/SubjectCertsDropDown.vue | 5 +++-- src/views/DashboardView/VolunteerDashboard/ListSessions.vue | 4 +++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/components/AdditionalSubjectsDropDown.vue b/src/components/AdditionalSubjectsDropDown.vue index a5d635b4..1bf78eab 100644 --- a/src/components/AdditionalSubjectsDropDown.vue +++ b/src/components/AdditionalSubjectsDropDown.vue @@ -84,8 +84,9 @@ export default { methods: { isComplete(includedSubjects) { + // Check if the user has all required certifications for the subject return includedSubjects.every(subject => - this.user.subjects.includes(subject.key) + this.user.subjects.some(s => s.subject === subject.key) ); }, progressStatus(includedSubjects) { diff --git a/src/components/SubjectCertsDropDown.vue b/src/components/SubjectCertsDropDown.vue index 295e0738..2eb8cb43 100644 --- a/src/components/SubjectCertsDropDown.vue +++ b/src/components/SubjectCertsDropDown.vue @@ -118,8 +118,9 @@ export default { return this.user.certifications[cert].passed; }, hasUnlockedSubject(cert) { - if (cert === "algebra") return this.user.subjects.includes("algebraOne"); - return this.user.subjects.includes(cert); + if (cert === "algebra") + return this.user.subjects.some(s => s.subject === "algebraOne"); + return this.user.subjects.some(s => s.subject === cert); }, progressStatus(cert) { if (this.isComplete(cert)) return "Completed"; diff --git a/src/views/DashboardView/VolunteerDashboard/ListSessions.vue b/src/views/DashboardView/VolunteerDashboard/ListSessions.vue index 57cccf4d..2dc348a5 100644 --- a/src/views/DashboardView/VolunteerDashboard/ListSessions.vue +++ b/src/views/DashboardView/VolunteerDashboard/ListSessions.vue @@ -132,7 +132,9 @@ export default { if ( Object.keys(allSubtopics()).some( - s => s === subTopic && this.user.subjects.includes(s) + s => + s === subTopic && + this.user.subjects.some(({ subject }) => subject === s) ) ) { results.push(session); From 4a62856fc08cb2d6c34f204bc8b416b7708e5204 Mon Sep 17 00:00:00 2001 From: Trey Stevens Date: Thu, 3 Dec 2020 19:20:31 -0500 Subject: [PATCH 3/3] remove computed val "subjects" --- src/views/ProfileView.vue | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/src/views/ProfileView.vue b/src/views/ProfileView.vue index c8dbf288..1be078c8 100644 --- a/src/views/ProfileView.vue +++ b/src/views/ProfileView.vue @@ -144,7 +144,7 @@ import PhoneNumber from "awesome-phonenumber"; import { mapGetters, mapState } from "vuex"; import UserService from "@/services/UserService"; -import { topics, allSubtopics } from "@/utils/topics"; +import { topics } from "@/utils/topics"; import DeactivateAccountModal from "./DeactivateAccountModal"; export default { @@ -220,22 +220,6 @@ export default { } } return subtopicObj; - }, - subjects() { - const user = this.$store.state.user.user; - const subtopics = allSubtopics(); - - const subjects = user.subjects.reduce((displayObj, key) => { - const { subject } = key; - if (subtopics[subject]) - displayObj[ - subtopics[subject].displayName || subtopics[subject] - ] = true; - - return displayObj; - }, {}); - - return subjects; } }, methods: {