@@ -82,6 +82,7 @@ window.getPlan = function(){
82
82
$ ( "#hrsCurrent" ) . html ( "Current Hours: " + currPlan . hrsCurrent ) ;
83
83
$ ( "#hrsFuture" ) . html ( "Remaining Hours: " + currPlan . hrsFuture ) ;
84
84
$ ( "#hrsTotal" ) . html ( "Total Hours Planned: " + currPlan . hrsTotal ) ;
85
+ checkMissingReqs ( ) ;
85
86
86
87
// load catalog table
87
88
let courses = [ ] ;
@@ -159,6 +160,156 @@ function checkMissingReqs() {
159
160
}
160
161
}
161
162
163
+ window . addYears = function ( ) {
164
+ alert ( "Got into add year function" ) ;
165
+ if ( currPlan . years . length >= 12 ) {
166
+ alert ( "You can only have a maximum of 12 years in a plan!" ) ;
167
+ return ;
168
+ }
169
+
170
+ // let queryString = window.location.search;
171
+ // let urlParams = new URLSearchParams(queryString);
172
+ // let numYears = urlParams.get("numYears");
173
+
174
+ let numYears = parseInt ( $ ( "#numYears" ) . val ( ) ) ;
175
+
176
+ if ( numYears > 12 || currPlan . years . length + numYears >= 12 ) {
177
+ alert ( "This will put you over the maximum of 12 years per plan! Try again." ) ;
178
+ return ;
179
+ }
180
+
181
+ let lastTermHeaderInPlan = $ ( ".termHeader" ) . get ( - 1 ) ;
182
+ let termAndYear = lastTermHeaderInPlan . textContent . split ( " " ) ;
183
+ let lastYearInPlan = parseInt ( termAndYear [ 1 ] ) ;
184
+
185
+ for ( let i = 1 ; i < numYears + 1 ; i ++ ) {
186
+ currPlan . years . push ( new Year ( lastYearInPlan + i ) ) ;
187
+ }
188
+
189
+ currPlan . generateHTML ( ) ;
190
+
191
+ // $.post("/plan", {
192
+ // plan: plan.plan_name,
193
+ // user: plan.user.id,
194
+ // designator: draggedCourse.designator,
195
+ // term: event.target.children[0].children[0].innerText.split(" ")[0],
196
+ // year: parseInt(event.target.children[0].children[0].innerText.split(" ")[1]),
197
+ // });
198
+ return ;
199
+ }
200
+
201
+ window . deleteYear = function ( ) {
202
+ let yearToDelete = parseInt ( $ ( "#yearToDelete" ) . val ( ) ) ;
203
+ let isValidYear = validateYear ( yearToDelete ) ;
204
+ if ( ! isValidYear ) {
205
+ alert ( "That's not valid year! Try again." ) ;
206
+ return ;
207
+ }
208
+
209
+ deleteCoursesAndYear ( yearToDelete ) ;
210
+
211
+ $ ( "#hrsCompleted" ) . html ( "Hours Completed: " + currPlan . hrsCompleted ) ;
212
+ $ ( "#hrsCurrent" ) . html ( "Current Hours: " + currPlan . hrsCurrent ) ;
213
+ $ ( "#hrsFuture" ) . html ( "Remaining Hours: " + currPlan . hrsFuture ) ;
214
+ $ ( "#hrsTotal" ) . html ( "Total Hours Planned: " + currPlan . hrsTotal ) ;
215
+ currPlan . generateHTML ( ) ;
216
+
217
+ }
218
+
219
+ function validateYear ( year ) {
220
+ let isValid = false ;
221
+ for ( let i = 0 ; i < currPlan . years . length ; i ++ ) {
222
+ if ( year == parseInt ( currPlan . years [ i ] . name ) ) {
223
+ isValid = true ;
224
+ break ;
225
+ }
226
+ }
227
+ return isValid ;
228
+ }
229
+
230
+ function deleteCoursesAndYear ( year ) {
231
+ let planYear = null ;
232
+ for ( let i = 0 ; i < currPlan . years . length ; i ++ ) {
233
+ if ( year == parseInt ( currPlan . years [ i ] . name ) ) {
234
+ planYear = currPlan . years [ i ] ;
235
+ break ;
236
+ }
237
+ }
238
+ let fallCourses = planYear . fall ;
239
+ let springCourses = planYear . spring ;
240
+ let summerCourses = planYear . summer ;
241
+
242
+ let coursesToRemove = fallCourses . concat ( springCourses ) . concat ( summerCourses ) ;
243
+
244
+ let hoursRemoved = 0 ;
245
+ let hoursCompletedRemoved = 0 ;
246
+ let hoursRemainingRemoved = 0 ;
247
+ let currentHoursRemoved = 0 ;
248
+
249
+ let currYear = currPlan . currYear ;
250
+ let currTerm = currPlan . currTerm ;
251
+
252
+ for ( x in coursesToRemove ) {
253
+ let course = coursesToRemove [ x ] ;
254
+ hoursRemoved += course . hours ;
255
+ if ( currYear > course . year ) {
256
+ hoursCompletedRemoved += course . hours ;
257
+ } else if ( currYear < course . year ) {
258
+ hoursRemainingRemoved += course . hours ;
259
+ } else if ( currTerm == "Fall" ) {
260
+ if ( course . term == "Fall" ) {
261
+ currentHoursRemoved += course . hours ;
262
+ } else {
263
+ hoursRemainingRemoved += course . hours ;
264
+ }
265
+ } else if ( currTerm == "Spring" ) {
266
+ if ( course . term == "Fall" ) {
267
+ hoursCompletedRemoved += course . hours ;
268
+ } else if ( course . term == "Spring" ) {
269
+ currentHoursRemoved += course . hours ;
270
+ } else {
271
+ hoursRemainingRemoved += course . hours ;
272
+ }
273
+ } else if ( currTerm == "Summer" ) {
274
+ if ( course . term == "Summer" ) {
275
+ currentHoursRemoved += course . hours ;
276
+ } else {
277
+ hoursCompletedRemoved += course . hours ;
278
+ }
279
+ }
280
+ }
281
+
282
+ currPlan . hrsCompleted -= hoursCompletedRemoved ;
283
+ currPlan . hrsCurrent -= currentHoursRemoved ;
284
+ currPlan . hrsFuture -= hoursRemainingRemoved ;
285
+ currPlan . hrsTotal -= hoursRemoved ;
286
+
287
+
288
+ for ( j in currPlan . courses ) {
289
+ for ( k in coursesToRemove ) {
290
+ if ( currPlan . courses [ j ] . designator == coursesToRemove [ k ] . id ) {
291
+ delete currPlan . courses [ j ] ;
292
+ break ;
293
+ }
294
+ }
295
+ }
296
+
297
+ for ( l in currPlan . years ) {
298
+ if ( parseInt ( currPlan . years [ l ] . name ) == year ) {
299
+ currPlan . years . splice ( l , 1 ) ;
300
+ }
301
+ }
302
+
303
+ for ( designator in coursesToRemove ) {
304
+ $ . get ( "/plan_courses" , {
305
+ designator : designator ,
306
+ user : plan . user . id ,
307
+ plan : plan . plan_name
308
+ } ) ;
309
+ }
310
+
311
+ }
312
+
162
313
function courseInPlan ( designator ) {
163
314
let c = currPlan . courses [ designator ] ;
164
315
return c !== undefined ;
@@ -366,6 +517,18 @@ class Course {
366
517
}
367
518
}
368
519
520
+ var yearControlHtml = "<div id='yearControlContainer'>" +
521
+ "<div class='inlineForm'>" +
522
+ "<input type='submit' id='addYear' value='Add Year(s)' onclick='addYears()'>" +
523
+ "<label for='numYears' id='numYearsLabel'>Number of years to add: </label>" +
524
+ "<input type='text' id='numYears' name='numYears' value='1'>" +
525
+ "</div>" +
526
+ "<div class='inlineForm'>" +
527
+ "<input type='submit' id='deleteYear' onclick='return deleteYear();' value='Delete Year'>" +
528
+ "<label for='numYears' id='yearToDeleteLabel'>Year to delete: </label>" +
529
+ "<input type='text' id='yearToDelete' name='yearToDelete'>" +
530
+ "</div></div>" ;
531
+
369
532
class Plan {
370
533
constructor ( student , name , major , currYr , currTerm , courses , cat_yr ) {
371
534
this . name = name ;
@@ -482,6 +645,7 @@ class Plan {
482
645
}
483
646
urHTML += "</ul></div></div>" ;
484
647
}
648
+ urHTML += yearControlHtml ;
485
649
urHTML += "</div>" ;
486
650
var upperRight = $ ( "#upperRight" ) . html ( urHTML ) ;
487
651
}
@@ -530,4 +694,4 @@ class Year {
530
694
}
531
695
}
532
696
}
533
- }
697
+ }
0 commit comments