Skip to content
Snippets Groups Projects
Commit 7f4bb0dc authored by jvanboxtel@wisc.edu's avatar jvanboxtel@wisc.edu
Browse files

fix for multiple courses requests

parent 15c5e064
No related branches found
No related tags found
No related merge requests found
......@@ -2,7 +2,7 @@ import { Course } from '@app/core/models/course';
import { Note } from './../models/note';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { groupBy, toArray, mergeMap, flatMap, tap, mergeAll, map, distinct } from 'rxjs/operators';
import { groupBy, toArray, mergeMap, flatMap, tap, mergeAll, map, distinct, share } from 'rxjs/operators';
import { DataService } from '@app/core/data.service';
......@@ -12,7 +12,7 @@ import { DataService } from '@app/core/data.service';
export class DegreePlannerDataService {
degreePlannerData: Observable<any>;
coursesData$: any;
termCodes$: any;
termCodes: any;
planId: number;
constructor(private dataService: DataService) { }
......@@ -23,9 +23,16 @@ export class DegreePlannerDataService {
this.degreePlannerData = this.dataService.getDegreePlannerCourseData(planId).pipe(
map(courses => courses.sort((a, b) => Number(a.termCode) - Number(b.termCode))),
mergeAll()
mergeAll(),
share()
);
this.degreePlannerData.pipe(
map(course => course.termCode),
distinct(),
toArray()
).subscribe(termCodes => this.termCodes = termCodes);
this.coursesData$ = this.degreePlannerData.pipe(
groupBy(course => course.termCode),
mergeMap(group$ => group$.pipe(toArray())),
......@@ -47,12 +54,7 @@ export class DegreePlannerDataService {
}
getAllTerms() {
this.termCodes$ = this.degreePlannerData.pipe(
map(course => course.termCode),
distinct(),
toArray()
);
return this.termCodes$;
return this.termCodes;
}
getAllNotes(): Observable<Note[]> {
......
......@@ -39,9 +39,7 @@ export class DegreePlannerComponent {
this.selectedDegreePlan = this.degreePlans[0].roadmapId;
this.coursesData$ = this.degreePlannerDataSvc.getDegreePlanDataById(this.selectedDegreePlan);
this.degreePlannerDataSvc.getAllNotes().subscribe(notes => { route.snapshot.data.requiredData.notes = notes; });
route.snapshot.data.requiredData.termCodes$ = this.degreePlannerDataSvc.getAllTerms();
// this.coursesData$.subscribe(x => console.log(x));
// this.dataService.getDegreePlans()
......
......@@ -28,7 +28,7 @@
<button mat-menu-item [matMenuTriggerFor]="academicYearsGroup">Move</button>
<mat-menu #academicYearsGroup="matMenu" class="course-item-submenu">
<button mat-menu-item (click)="moveToFavorites(course)" *ngIf="!savedForLater" class="favorites-list">Saved for later</button>
<button mat-menu-item *ngFor="let termCode of termCodes$ | async" (click)="savedForLater ? addToTerm(termCode) : switchTerm(termCode)">{{ termCode | getTermDescription }}</button>
<button mat-menu-item *ngFor="let termCode of termCodes" (click)="savedForLater ? addToTerm(termCode) : switchTerm(termCode)">{{ termCode | getTermDescription }}</button>
</mat-menu>
<button mat-menu-item (click)="openRemoveConfirmationDialog(savedForLater)">Remove</button>
</mat-menu>
......
......@@ -25,7 +25,7 @@ export class CourseItemComponent implements OnInit {
degreePlanCourses: any[];
selectedDegreePlan: number;
// termCodes: any;
termCodes$: any;
termCodes: any;
@Input() course: Course;
@Input() courses: Course[];
@Input() status: string;
......@@ -46,7 +46,7 @@ export class CourseItemComponent implements OnInit {
this.degreePlans = route.snapshot.data.requiredData.degreePlans;
this.selectedDegreePlan = this.degreePlans[0].roadmapId;
this.subjects = route.snapshot.data.requiredData.subjects;
this.termCodes$ = route.snapshot.data.requiredData.termCodes$;
this.termCodes = this.degreePlannerDataSvc.getAllTerms();
}
ngOnInit() {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment