Skip to content
Snippets Groups Projects
term-container.component.html 4.81 KiB
Newer Older
<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">
Isaac Evavold's avatar
Isaac Evavold committed
        <p class="text-right semi-bold credits">{{ credits$ | async }} Cr</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>
pnogal's avatar
pnogal committed
    <div
      id="term-{{ termCode }}"
      class="term-body"
      cdkDropList
Isaac Evavold's avatar
Isaac Evavold committed
      [cdkDropListData]="(term$ | async).termCode"
      [cdkDropListConnectedTo]="dropZoneIds$ | async"
pnogal's avatar
pnogal committed
      (cdkDropListDropped)="drop($event)"
    >
Isaac Evavold's avatar
Isaac Evavold committed
      <!-- Render term note (if it exists) -->
pnogal's avatar
pnogal committed
      <ng-container *ngIf="(note$ | async) as note">
Isaac Evavold's avatar
Isaac Evavold committed
        <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>
pnogal's avatar
pnogal committed
            <mat-progress-spinner
              mode="indeterminate"
              diameter="24"
            ></mat-progress-spinner>
Isaac Evavold's avatar
Isaac Evavold committed
          </div>
        </ng-template>
Isaac Evavold's avatar
Isaac Evavold committed
      </ng-container>
pnogal's avatar
pnogal committed
      <!-- Render list of cart courses in this term -->
      <div
        *ngIf="(term$ | async).era == 'active'"
        fxLayout="row"
        class="term-header"
        fxLayoutAlign="space-between center"
      >
        <h3>My Courses: Cart</h3>
        <div fxLayout="row" fxLayoutAlign="space-between center">
          <p class="text-right semi-bold credits">
            {{ cartCredits$ | async }} Cr
          </p>
          <button mat-icon-button>
            <a href="/my-courses">
              <mat-icon
                aria-label="Go to cart"
                color="primary"
                matTooltip="Go to cart"
                matTooltipPosition="above"
              >
                shopping_cart
              </mat-icon>
            </a>
          </button>
        </div>
      </div>

      <div
        class="course-wrapper"
        *ngFor="let course of (courses$ | async)"
        cdkDrag
        [cdkDragData]="course"
      >
        <ng-container class="course-wrapper-inner" *ngIf="course.id !== null">
          <cse-course-item
            type="course"
            [course]="course"
            [isPastTerm]="isPastTerm$ | async"
          >
          </cse-course-item>
        </ng-container>
      </div>
      <div class="no-courses" *ngIf="(courses$ | async).length == 0">
        <p>
          No courses planned
        </p>
      </div>

Isaac Evavold's avatar
Isaac Evavold committed
      <!-- Render list of courses in this term -->
pnogal's avatar
pnogal committed
      <div
        class="course-wrapper"
        *ngFor="let course of (courses$ | async)"
Isaac Evavold's avatar
Isaac Evavold committed
        cdkDrag
        [cdkDragDisabled]="(isPastTerm$ | async) || course.id === null"
pnogal's avatar
pnogal committed
        [cdkDragData]="course"
      >
        <ng-container class="course-wrapper-inner" *ngIf="course.id === null">
Isaac Evavold's avatar
Isaac Evavold committed
          <cse-course-item
            type="course"
            [course]="course"
pnogal's avatar
pnogal committed
            [isPastTerm]="isPastTerm$ | async"
            [isCurrentTerm]="isCurrentTerm$ | async"
            [disabled]="(isPastTerm$ | async) || course.id === null"
          >
Isaac Evavold's avatar
Isaac Evavold committed
          </cse-course-item>
pnogal's avatar
pnogal committed
        </ng-container>
Isaac Evavold's avatar
Isaac Evavold committed
      </div>
pnogal's avatar
pnogal committed
      <div
        class="no-courses"
        *ngIf="
          (courses$ | async).length === 0 && (term$ | async).era == 'passt'
        "
      >
        <p>
          {{
            (isPastTerm$ | async) ? 'No courses Taken' : 'No enrolled courses'
          }}
        </p>
Isaac Evavold's avatar
Isaac Evavold committed
      </div>
    </div>
  </div>
pnogal's avatar
pnogal committed

  <!-- Add course -->
Isaac Evavold's avatar
Isaac Evavold committed
  <div class="add-new-wrapper" *ngIf="(isPastTerm$ | async) === false">
    <button
      mat-raised-button
      class="add-course-button"
pnogal's avatar
pnogal committed
      (click)="openCourseSearch()"
    >
Isaac Evavold's avatar
Isaac Evavold committed
      + Add Course
    </button>
pnogal's avatar
pnogal committed
  </div>
Isaac Evavold's avatar
Isaac Evavold committed
</mat-card>