Skip to content
Snippets Groups Projects
sidenav-menu-item.component.ts 1.73 KiB
Newer Older
pnogal's avatar
pnogal committed
// Libraries
import { Component } from '@angular/core';
import { Store } from '@ngrx/store';
Isaac Evavold's avatar
Isaac Evavold committed
import { MatDialog } from '@angular/material';
import { FormGroup } from '@angular/forms';
import { MatSnackBar } from '@angular/material';
import { Observable } from 'rxjs';
pnogal's avatar
pnogal committed

// State management
import { GlobalState } from '@app/core/state';
import { AddAcademicYearRequest } from '@app/degree-planner/store/actions/addAcademicYear.actions';
import { PromptDialogComponent } from '@app/shared/dialogs/prompt-dialog/prompt-dialog.component';
Isaac Evavold's avatar
Isaac Evavold committed
import { CreatePlan } from '@app/degree-planner/store/actions/plan.actions';
jvanboxtel@wisc.edu's avatar
jvanboxtel@wisc.edu committed
  selector: 'cse-sidenav-menu-item',
  templateUrl: './sidenav-menu-item.component.html',
  styleUrls: ['./sidenav-menu-item.component.scss'],
pnogal's avatar
pnogal committed
export class SidenavMenuItemComponent {
  public inputForm: FormGroup;
  public yearCodes$: Observable<string[]>;
  constructor(
    private store: Store<GlobalState>,
    public dialog: MatDialog,
    private snackBar: MatSnackBar,
  ) {}
  public onAddAcademicYear() {
pnogal's avatar
pnogal committed
    this.store.dispatch(new AddAcademicYearRequest());
    this.snackBar.open('New academic year has been created');
Isaac Evavold's avatar
Isaac Evavold committed

jvanboxtel@wisc.edu's avatar
jvanboxtel@wisc.edu committed
  public print() {
    window.print();
  }

  public onCreatePlanClick() {
Isaac Evavold's avatar
Isaac Evavold committed
    this.dialog
      .open(PromptDialogComponent, {
        data: {
          initialValue: name,
          title: 'Add degree plan',
          confirmText: 'Save',
          inputName: 'i.e. Psychology',
        },
      })
Isaac Evavold's avatar
Isaac Evavold committed
      .afterClosed()
      .subscribe((result: { confirmed: boolean; value: string }) => {
        const { confirmed, value } = result;
        if (confirmed) {
          const action = new CreatePlan({ name: value, primary: false });
Isaac Evavold's avatar
Isaac Evavold committed
          this.store.dispatch(action);
        }
      });
  }