Newer
Older

Scott Berg
committed
// Libraries
import { Component, Input, OnInit } from '@angular/core';
import { CdkDragDrop } from '@angular/cdk/drag-drop';

Scott Berg
committed
// rsjx / ngrx
import { Observable } from 'rxjs';
import { Store, select } from '@ngrx/store';
import { DegreePlannerState } from '@app/degree-planner/state';
import {
ChangeCourseTermRequest
} from '@app/degree-planner/actions/plan.actions';
// Selectors
import {
getDropZones,
isActiveTerm
} from '@app/degree-planner/selectors';
// Services
import { DataService } from '../../core/data.service';
import { DegreePlannerDataService } from './../../core/service/degree-planner-data.service';
import { SidenavService } from './../../core/service/sidenav.service';
// Models
import { PlannedTerm } from '@app/core/models/planned-term';
import {
NotesDialogComponent,
NotesDialogData
} from '../dialogs/notes-dialog/notes-dialog.component';
pnogal
committed
@Component({
templateUrl: './term-container.component.html',
styleUrls: ['./term-container.component.scss']
pnogal
committed
})

Scott Berg
committed
export class TermContainerComponent implements OnInit {
@Input() term: PlannedTerm;

Scott Berg
committed
public dropZones$: Observable<String[]>;
public isActiveTerm$: Observable<Boolean>;
constructor(
private dataService: DataService,

Scott Berg
committed
private sidenavService: SidenavService,
private store: Store<{ degreePlanner: DegreePlannerState }>,

Scott Berg
committed
public ngOnInit() {
this.dropZones$ = this.store.pipe(select(getDropZones));
this.isActiveTerm$ = this.store.pipe(select(isActiveTerm(this.term.termCode)));
}
// this.dropZones$ = this.store.pipe(select(getDropZones));
public openAddSidenav(): void {
this.sidenavService.open();
}
public openNotesDialog(): void {
const termCode = this.term.termCode;
const data: NotesDialogData = this.term.note
? { termCode, hasExistingNote: true, initialText: this.term.note.note }
: { termCode, hasExistingNote: false };
this.dialog.open<any, NotesDialogData>(NotesDialogComponent, { data });
public getTotalCredits(): number {
return this.term.courses.reduce((sum, course) => {
return sum + course.credits;
}, 0);

Scott Berg
committed
const to = event.container.id.substr(5);
const { termCode: from, id } = event.item.data;
if (from === to) {
return;

Scott Berg
committed
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
console.log(to);
console.log(from);
console.log(id);
this.store.dispatch(new ChangeCourseTermRequest({ to, from, id }));
// // Get the course JSON
// const item = event.item.data;
// console.log(event);
// const newTermCode = event.container.id.substr(5, 4);
// if (
// event.previousContainer.id === 'saved-courses' &&
// event.container.id !== 'saved-courses'
// ) {
// // If moving from favorites to term
// container.data.push(item);
// previousContainer.data.splice(previousIndex, 1);
// this.dataService
// .addCourse(
// this.degreePlannerDataSvc.getPlanId(),
// event.item.data.subjectCode,
// event.item.data.courseId,
// newTermCode
// )
// .subscribe(data => {
// const yearCode = newTermCode.substring(0, 3);
// const termCode = newTermCode.substring(3);
// });
// this.dataService
// .removeFavoriteCourse(
// event.item.data.subjectCode,
// event.item.data.courseId
// )
// .subscribe();
// } else if (event.previousContainer.id !== event.container.id) {
// container.data.push(item);
// previousContainer.data.splice(previousIndex, 1);
// // Tell the API this course updated
// this.dataService
// .updateCourseTerm(
// this.degreePlannerDataSvc.getPlanId(),
// event.item.data.id,
// newTermCode
// )
// .subscribe();
// }