Skip to content
Snippets Groups Projects
term-container.component.html 5.86 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">
Scott Berg's avatar
Scott Berg committed
                <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>
Isaac Evavold's avatar
Isaac Evavold committed
            <cse-course-item
              *ngFor="let course of enrolledCourses"
              type="course"
              [disabled]="true"
              [course]="course"
              [era]="(term$ | async).era">
            </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">
Scott Berg's avatar
Scott Berg committed
              <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>
              <p *ngIf="(term$ | async).era === 'past'" class="no-courses">No courses planned</p>
            </ng-container>
            <div
              cdkDrag
              [cdkDragData]="course"
              class="course-wrapper"
              *ngFor="let course of plannedCourses"
            >
Isaac Evavold's avatar
Isaac Evavold committed
              <cse-course-item
                type="course"
                [course]="course"
                [era]="(term$ | async).era">
              </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">
Scott Berg's avatar
Scott Berg committed
        <mat-tab [label]="'In Progress (' + enrolledCourses.length + ')'"><ng-container *ngTemplateOutlet="enrolled"></ng-container></mat-tab>
        <mat-tab [label]="'Cart (' + plannedCourses.length + ')'"><ng-container *ngTemplateOutlet="planned"></ng-container></mat-tab>
    </mat-tab-group>
pnogal's avatar
pnogal committed

  <!-- If this term is a past term -->
  <ng-container *ngIf="(term$ |async).era === 'past'">
Scott Berg's avatar
Scott Berg committed
      <ng-container *ngIf="plannedCourses.length > 0">
          <mat-tab-group (selectedTabChange)="changeVisibleCredits($event)" [selectedIndex]="0">
Scott Berg's avatar
Scott Berg committed
              <mat-tab [label]="'Completed (' + enrolledCourses.length + ')'"><ng-container *ngTemplateOutlet="enrolled"></ng-container></mat-tab>
              <mat-tab [label]="'Cart (' + plannedCourses.length + ')'"><ng-container *ngTemplateOutlet="planned"></ng-container></mat-tab>
          </mat-tab-group>
      </ng-container>

      <ng-container *ngIf="plannedCourses.length === 0" >
          <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>