Skip to content
Snippets Groups Projects
term-container.component.html 4.93 KiB
Newer Older
<ng-template #enrolled>
  <div class="course-list-wrapper">
      <div class="course-list">
          <div class="course-list-inner">
              <ng-container *ngIf="enrolledCourses.length === 0">
                <p *ngIf="(term$ | async).era === 'past'" class="no-courses">No Courses Taken</p>
                <p *ngIf="(term$ | async).era === 'active'" class="no-courses">Not Enrolled in any Courses</p>
              </ng-container>

            <cse-course-item *ngFor="let course of enrolledCourses" type="course" [disabled]="true" [course]="course"></cse-course-item>
          </div>
        </div>
  </div>
</ng-template>

<ng-template #planned>
    <div class="course-list-wrapper">
        <div class="course-list"
        cdkDropList
            id="term-{{ termCode }}"
            [cdkDropListData]="(term$ | async).termCode"
            [cdkDropListConnectedTo]="dropZoneIds$ | async"
            (cdkDropListDropped)="drop($event)"
            (cdkDropListEntered)="dragEnter($event)"
            (cdkDropListExited)="dragExit($event)"
        >
          <div class="course-list-inner term-body">
            <ng-container *ngIf="plannedCourses.length === 0 && !hasItemDraggedOver">
              <p *ngIf="(term$ | async).era === 'active'" class="no-courses">No Courses In Cart</p>
              <p *ngIf="(term$ | async).era === 'future'" class="no-courses">No Courses Planned</p>
            </ng-container>
            <div
              cdkDrag
              [cdkDragData]="course"
              class="course-wrapper"
              *ngFor="let course of plannedCourses"
            >
              <cse-course-item type="course" [course]="course"></cse-course-item>
            </div>
          </div>
        </div>

        <!-- Add course -->
      <div class="add-new-wrapper" *ngIf="(term$ | async).era !== 'past'">
          <button
            mat-raised-button
            class="add-course-button"
            (click)="openCourseSearch()"
          >
            + Add Course
          </button>
        </div>
    </div>
</ng-template>

<mat-card class="term-container">
Isaac Evavold's avatar
Isaac Evavold committed
  <div class="term-inner">
pnogal's avatar
pnogal committed
    <div
      fxLayout="row"
      class="term-header"
      fxLayoutAlign="space-between center"
    >
Isaac Evavold's avatar
Isaac Evavold committed
      <h2>{{ termCode | getTermDescription }}</h2>
jvanboxtel@wisc.edu's avatar
jvanboxtel@wisc.edu committed
      <div fxLayout="row" fxLayoutAlign="space-between center">
        <p class="text-right semi-bold credits">
          <span *ngIf="visibleCredits === 'planned'">{{plannedCredits}} Cr</span>
          <span *ngIf="visibleCredits === 'enrolled'">{{enrolledCredits}} Cr</span>
        </p>
Isaac Evavold's avatar
Isaac Evavold committed
        <ng-container *ngIf="(note$ | async) as note; else newNote">
pnogal's avatar
pnogal committed
          <button
            mat-icon-button
            [disabled]="note.isLoaded === false"
            (click)="openNotesDialog(note)"
          >
Isaac Evavold's avatar
Isaac Evavold committed
            <mat-icon
              aria-label="Open dialog with notes in this term"
              color="primary"
              matTooltip="Edit Note"
pnogal's avatar
pnogal committed
              matTooltipPosition="above"
            >
Isaac Evavold's avatar
Isaac Evavold committed
              insert_drive_file
            </mat-icon>
Isaac Evavold's avatar
Isaac Evavold committed
          </button>
        </ng-container>
        <ng-template #newNote>
          <button mat-icon-button (click)="openNotesDialog()">
Isaac Evavold's avatar
Isaac Evavold committed
            <mat-icon
              aria-label="Open dialog with notes in this term"
              color="primary"
              matTooltip="Add Note"
pnogal's avatar
pnogal committed
              matTooltipPosition="above"
            >
              note_add
            </mat-icon>
pnogal's avatar
pnogal committed
          </button>
        </ng-template>
Isaac Evavold's avatar
Isaac Evavold committed
      </div>
    </div>
Isaac Evavold's avatar
Isaac Evavold committed

    <!-- Render term note (if it exists) -->
    <ng-container *ngIf="(note$ | async) as note">
      <ng-container *ngIf="note.isLoaded; else noteIsLoading">
        <div class="note-item" (click)="openNotesDialog(note)">
          <p class="semi-bold">Note</p>
          <p class="note-excerpt">{{ note.text }}</p>
        </div>
      </ng-container>
      <ng-template #noteIsLoading>
        <div class="note-item note-item-loading">
          <p class="semi-bold">Note</p>
          <p class="note-excerpt">{{ note.text }}</p>
          <mat-progress-spinner
            mode="indeterminate"
            diameter="24"
          ></mat-progress-spinner>
        </div>
      </ng-template>
    </ng-container>
  <!-- If this term is an active term -->
  <ng-container *ngIf="(term$ |async).era === 'active'">
    <mat-tab-group (selectedTabChange)="changeVisibleCredits($event)" [selectedIndex]="1">
        <mat-tab label="Enrolled"><ng-container *ngTemplateOutlet="enrolled"></ng-container></mat-tab>
        <mat-tab label="Cart"><ng-container *ngTemplateOutlet="planned"></ng-container></mat-tab>
      </mat-tab-group>
  </ng-container>
pnogal's avatar
pnogal committed

  <!-- If this term is a past term -->
  <ng-container *ngIf="(term$ |async).era === 'past'">
      <ng-container *ngTemplateOutlet="enrolled"></ng-container>
  </ng-container>
pnogal's avatar
pnogal committed

  <!-- If this term is a past term -->
  <ng-container *ngIf="(term$ |async).era === 'future'">
      <ng-container *ngTemplateOutlet="planned"></ng-container>
  </ng-container>
Isaac Evavold's avatar
Isaac Evavold committed
</mat-card>