47
47
<button
48
48
class =" add-requirement-button"
49
49
@click =" addRequirement"
50
- :disabled =" Object.keys( requirements) .length === numberOfRequirements"
50
+ :disabled =" requirements.length === numberOfRequirements"
51
51
>
52
52
+ Requirement
53
53
</button >
54
54
</div >
55
55
</div >
56
- <!-- The Figma wrote the below as 'No Requirements added' but I believe that was a capitalization mistake. -->
57
- <p v-if =" Object.keys(requirements).length === 0" class =" no-requirements-added" >
58
- No requirements added.
59
- </p >
56
+ <p v-if =" requirements.length === 0" class =" no-requirements-added" >No requirements added.</p >
60
57
<div v-for =" (req, index) in requirements" :key =" req.reqId" >
61
58
<requirement-courses
62
59
:available-requirements =" availableRequirements"
@@ -88,6 +85,8 @@ export type ReqCourses = {
88
85
89
86
export default defineComponent ({
90
87
data(): {
88
+ // requirements is the list of requirement groups on the sidebar
89
+ // it includes the requirement id, name, and the courses associated with it
91
90
requirements: ReqCourses [];
92
91
isConfirmationOpen: boolean ;
93
92
confirmationText: string ;
@@ -113,6 +112,9 @@ export default defineComponent({
113
112
groupedRequirementFulfillmentReports(): readonly GroupedRequirementFulfillmentReport [] {
114
113
return store .state .groupedRequirementFulfillmentReport ;
115
114
},
115
+ // this function is turning the groupedRequirementFulfillmentReports and taking the reqs out of each group
116
+ // and concatenating them into one giant record with reqId's as keys and reqName's as values
117
+ // it represents the available requirements that haven't been assigned yet
116
118
availableRequirements(): Record <string , string > {
117
119
const courseRecord: Record <string , string > = this .groupedRequirementFulfillmentReports .reduce (
118
120
(accumulator : Record <string , string >, groupedReq : GroupedRequirementFulfillmentReport ) =>
@@ -124,6 +126,7 @@ export default defineComponent({
124
126
);
125
127
return courseRecord ;
126
128
},
129
+ // total number of requirements, used to calculate when to gray out the +Requirement button
127
130
numberOfRequirements(): number {
128
131
let length = 0 ;
129
132
this .groupedRequirementFulfillmentReports .forEach (
@@ -147,6 +150,7 @@ export default defineComponent({
147
150
closeConfirmationModal() {
148
151
this .isConfirmationOpen = false ;
149
152
},
153
+ // add course to a requirement
150
154
addCourse(course : CornellCourseRosterCourse , index : number ) {
151
155
this .requirements [index ].courses .push (
152
156
cornellCourseRosterCourseToFirebaseSemesterCourseWithCustomIDAndColor (
@@ -156,25 +160,31 @@ export default defineComponent({
156
160
)
157
161
);
158
162
},
163
+ // delete a course from a requirement
159
164
deleteCourse(code : string , index : number ) {
160
165
this .requirements [index ].courses = this .requirements [index ].courses .filter (
161
166
course => course .code !== code
162
167
);
163
168
},
169
+ // add a new requirement group
164
170
addRequirement() {
165
171
this .requirements = [... this .requirements , { reqId: ' ' , reqName: ' ' , courses: [] }];
166
172
},
173
+ // get rid of an available requirement
167
174
deleteAvailableRequirement(reqId : string ) {
168
175
delete this .availableRequirements [reqId ];
169
176
},
177
+ // select a requirement on the dropdown
170
178
selectRequirement(reqId : string , index : number ) {
171
179
const reqName = this .availableRequirements [reqId ];
172
180
this .requirements [index ] = { reqId , reqName , courses: [] };
173
181
},
182
+ // add back an available requirement
174
183
addAvailableRequirement(requirement : ReqCourses ) {
175
184
if (requirement .reqId !== ' ' )
176
185
this .availableRequirements [requirement .reqId ] = requirement .reqName ;
177
186
},
187
+ // delete a requirement group and add back to the available requirements
178
188
deleteRequirement(index : number ) {
179
189
const requirement = this .requirements [index ];
180
190
// add back to the availableRequirements record
0 commit comments