Newer
Older
import { DegreePlannerDataService } from './../../../core/service/degree-planner-data.service';
import { ActivatedRoute } from '@angular/router';
import { Component, Input, ChangeDetectorRef, OnInit } from '@angular/core';
import { Course } from '../../../core/models/course';
import { Subject } from '@app/core/models/course-details';
import { Term } from '../../../core/models/term';
import { DegreePlan } from '../../../core/models/degree-plan';
Isaac Evavold
committed
import { SavedForLaterCourse } from '../../../core/models/saved-for-later-course';
import { DataService } from '../../../core/data.service';
import { CourseDetailsDialogComponent } from '../../dialogs/course-details-dialog/course-details-dialog.component';
// tslint:disable-next-line:max-line-length
import { RemoveCourseConfirmDialogComponent } from '../../dialogs/remove-course-confirm-dialog/remove-course-confirm-dialog.component';
import { MatDialog } from '@angular/material';
templateUrl: './course-item.component.html',
styleUrls: ['./course-item.component.scss']
export class CourseItemComponent implements OnInit {
termsInAcademicYear: [];
// favoriteCourse: FavoriteCourse;
degreePlans: DegreePlan[];
degreePlanCourses: any[];
selectedDegreePlan: number;
// termCodes: any;
@Input() courses: Course[];
// @Input() term: Term;
// @Input() termsByAcademicYear: Object;
// @Input() refreshContent;
@Input() savedForLater: Boolean;
Isaac Evavold
committed
@Input() favoriteCourses: SavedForLaterCourse[];
constructor(
private dataService: DataService,
public dialog: MatDialog,
private degreePlannerDataSvc: DegreePlannerDataService,
private cdRef: ChangeDetectorRef) {
this.degreePlans = route.snapshot.data.requiredData.degreePlans;
this.selectedDegreePlan = this.degreePlans[0].roadmapId;
this.subjects = route.snapshot.data.requiredData.subjects;
this.termCodes = this.degreePlannerDataSvc.getAllTerms();
}
ngOnInit() {
}
// removeCourseFromUI(courseItem) {
// const index = courseItem.indexOf(this.course, 0);
// if (index > -1) {
// courseItem = courseItem.splice(index, 1);
// }
// }
openCourseDetailsDialog(course) {
this.dataService.getCourseDetails(course.termCode, course.subjectCode, course.courseId)
.subscribe(courseDetails => {
const dialogRef = this.dialog.open(CourseDetailsDialogComponent, {
data: { courseDetails: courseDetails }
});
});
}
// Get term codes to display in the course item menu
// getAllTermCodes() {
// const termYears: any = Object.values(this.termsByAcademicYear);
// this.termsInAcademicYear = termYears.map(year => year.terms).flat();
// }
// Add this coruse to the favorites list
moveToFavorites(course) {
this.dataService.saveFavoriteCourse(course.subjectCode, course.courseId)
.subscribe(favoriteCourse => {
// this.favoriteCourses.push(this.course);
});
// Remove this course from term
this.dataService.removeCourse(this.degreePlannerDataSvc.getPlanId(), course.id)
.subscribe(data => {
// this.removeCourseFromUI(this.courses);
});
}
// Add Favorite course to term
addToTerm(newTermCode) {
this.dataService.addCourse( this.course.subjectCode, this.course.courseId, newTermCode, this.degreePlannerDataSvc.getPlanId())
.subscribe( data => {
});
// Remove course from favorites list
this.dataService.removeFavoriteCourse(this.course.subjectCode, this.course.courseId)
.subscribe(data => {
});
}
// Move course to another term
switchTerm(newTermCode) {
this.dataService.updateCourseTerm(this.degreePlannerDataSvc.getPlanId(), this.course.id, newTermCode)
});
}
openRemoveConfirmationDialog(savedForLater) {
const dialogRef = this.dialog.open(RemoveCourseConfirmDialogComponent, {
data: { course: this.course, courses: this.courses, favoriteCourses: this.favoriteCourses, savedForLater }
});
}