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)));
}
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
// console.log(to);
// console.log(from);
// console.log(id);

Scott Berg
committed
this.store.dispatch(new ChangeCourseTermRequest({ to, from, id }));