Skip to content
Snippets Groups Projects
Forked from an inaccessible project.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
audit.component.html 10.25 KiB
<mat-card id="audit" *ngIf="audit">
  <header id="audit-header" class="no-horizontal-padding">
    <div class="audit-metadata">
      <div>
        <p>{{audit.header.preparedLabel}}: {{audit.header.preparedDate}}</p>
        <p>{{audit.header.studentName}}</p>
        <p>{{audit.header.darsDegreeProgramCodeLabel}}: {{audit.header.darsDegreeProgramCode}}</p>
      </div>

      <div class="text-align-right">
        <p>0123456789</p>
        <p>{{audit.header.darsCatalogYearTermLabel}}: {{audit.header.darsCatalogYearTerm}}</p>
        <p *ngIf="audit.header.darsAlternateCatalogYearTerm1">
          {{audit.header.darsAlternateCatalogYearTerm1Label}}: {{audit.header.darsAlternateCatalogYearTerm1}}
        </p>
      </div>
    </div>

    <h3 class="text-align-center">
      {{audit.header.clientDefinedMessage}}
      <br />
      {{audit.header.degreeProgramTitle1}}
      <br />
      {{audit.header.degreeProgramTitle2}}
    </h3>

    <div class="audit-section-controles">
      <button mat-stroked-button color="primary" (click)="openAllRequirements()">Open All Sections</button>
      <button mat-stroked-button color="primary" (click)="closeAllRequirements()">Close All Sections</button>
    </div>
  </header>

  <section class="audit-section" class="audit-top-section">
    <div *ngIf="audit.topSection.academicPlansSection && audit.topSection.academicPlansSection.planList.length > 0">
      <h4>Academic Plans:</h4>
      <ng-contrainer *ngFor="let plan of audit.topSection.academicPlansSection.planList">
        <p class="audit-academic-plan">{{plan.planTypeLabel}}: {{plan.declareDate}} {{plan.planCodeNumber}} {{plan.planCodeDescription}}</p>
      </ng-contrainer>
    </div>
    
    <div *ngIf="audit.topSection.advisorSection && audit.topSection.advisorSection.advisorNames">
      <h4>{{audit.topSection.advisorSection.advisorLabel}}:</h4>

      <ng-container *ngFor="let name of audit.topSection.advisorSection.advisorNames">
        <p class="audit-advisor-name">{{name}}</p>
      </ng-container>
    </div>

    <div *ngIf="audit.topSection.degreesSection && audit.topSection.degreesSection.degrees.length > 0">
      <h4>{{audit.topSection.degreesSection.label}}:</h4>
      <div *ngFor="let degree of audit.topSection.degreesSection.degrees" class="audit-degree">
        <p class="audit-degree-awarded">Awarded: {{degree.awardedDate}}</p>
        <p class="audit-degree-major">Major: {{degree.major}} {{degree.degreeCode}}</p>
      </div>
    </div>
  </section>

  <section class="audit-section audit-credit-tables">
    <!-- TODO Figure out how to get this to look like a matTable -->
      <table mat-table [dataSource]="formatHighSchoolUnitData(audit.topSection.highSchoolUnitsSection.units)">
        <caption>HS Units</caption>

        <tr mat-header-row *matHeaderRowDef="highSchoolUnitsSection"></tr>
        <tr mat-row *matRowDef="let row; columns: highSchoolUnitsSection;"></tr>

        <ng-container matColumnDef="LANG">
          <th mat-header-cell *matHeaderCellDef>Lang</th>
          <td mat-cell *matCellDef="let courses">{{courses.LANG}}</td>
        </ng-container>
        <ng-container matColumnDef="MATH">
          <th mat-header-cell *matHeaderCellDef>Math</th>
          <td mat-cell *matCellDef="let courses">{{courses.MATH}}</td>
        </ng-container>

        <ng-container matColumnDef="SCIENCE">
          <th mat-header-cell *matHeaderCellDef>Science</th>
          <td mat-cell *matCellDef="let courses">{{courses.SCIENCE}}</td>
        </ng-container>

        <ng-container matColumnDef="SOC STUD">
          <th mat-header-cell *matHeaderCellDef>Soc Stud</th>
          <td mat-cell *matCellDef="let courses">{{courses['SOC STUD']}}</td>
        </ng-container>
      </table>

      <table mat-table [dataSource]="audit.topSection.advancedStandingCreditsSection.advanceStandingCredits">
        <caption>{{audit.topSection.advancedStandingCreditsSection.sectionLabel}}</caption>
        <tr mat-header-row *matHeaderRowDef="advancedStandingCredits"></tr>
        <tr mat-row *matRowDef="let row; columns: advancedStandingCredits;"></tr>
        <tr mat-footer-row *matFooterRowDef="advancedStandingCredits"></tr>

        <ng-container matColumnDef="dateValue">
          <th mat-header-cell *matHeaderCellDef>Date</th>
          <td mat-cell *matCellDef="let course">{{course.dateValue}}</td>
          <td mat-footer-cell *matFooterCellDef class="bold">Total</td>
        </ng-container>

        <ng-container matColumnDef="typeValue">
          <th mat-header-cell *matHeaderCellDef>Type</th>
          <td mat-cell *matCellDef="let course">{{course.typeValue}}</td>
          <td mat-footer-cell *matFooterCellDef></td>
        </ng-container>

        <ng-container matColumnDef="degreeCreditsValue">
          <th mat-header-cell *matHeaderCellDef class="text-align-right">Deg</th>
          <td mat-cell *matCellDef="let course" class="text-align-right">{{course.degreeCreditsValue}}</td>
          <td mat-footer-cell *matFooterCellDef class="bold text-align-right">{{audit.topSection.advancedStandingCreditsSection.totals.degreeCreditsValue}}</td>
        </ng-container>

        <ng-container matColumnDef="courseCreditsValue">
          <th mat-header-cell *matHeaderCellDef class="text-align-right">Crse</th>
          <td mat-cell *matCellDef="let course" class="text-align-right">{{course.courseCreditsValue}}</td>
          <td mat-footer-cell *matFooterCellDef class="bold text-align-right">{{audit.topSection.advancedStandingCreditsSection.totals.courseCreditsValue}}</td>
        </ng-container>
      </table>
  </section>
  
  <section class="audit-section">
    <mat-accordion multi="true" hideToggle="true" #requirements>

      <!-- START OF REQUIREMENT -->
      <ng-container *ngFor="let requirement of audit.requirements; trackBy: trackReq">
        
        <!-- START OF REQUIREMENT TEXT -->
        <ng-container *ngIf="requirement.status.status === 'NONE'; else requirementTemplate">
          <div *ngFor="let contentType of requirement.requirementContents" class="content-type-{{contentType.contentType}}" matTooltip="{{contentType.contentType}}">
            <p *ngFor="let line of contentType.lines">{{line}}</p>
          </div>
        </ng-container>
        <!-- END OF REQUIREMENT TEXT -->

        <!-- START OF ACCORDION REQUIREMENT -->
        <ng-template #requirementTemplate>
          <mat-expansion-panel #requirementPanel [expanded]="true">

            <mat-expansion-panel-header collapsedHeight="auto" expandedHeight="auto">
              <mat-panel-title class="requirement-title status-{{requirement.status.status === 'OK' ? 'ok' : 'no'}}">
                <div class="requirement-icon-outer">
                    <mat-icon class="requirement-toggle">{{requirementPanel.expanded ? 'arrow_drop_down' : 'arrow_right'}}</mat-icon>
                    <mat-icon *ngIf="requirement.status.status === 'OK'" class="requirement-icon ok-icon">check_circle</mat-icon>
                    <mat-icon *ngIf="requirement.status.status === 'NO'" class="requirement-icon no-icon">cancel</mat-icon>
                </div>
                <div>
                  <p>
                    <ng-container *ngFor="let line of getRequirementTitle(requirement)">
                      {{line}}
                    </ng-container>
                  </p>
                </div>
              </mat-panel-title>
            </mat-expansion-panel-header>

            <div *ngFor="let reqBody of getRequirementBody(requirement); trackBy: trackByIndex">
              
              <div class="content-type content-type-{{reqBody.contentType}}" matTooltip="{{reqBody.contentType}}" matTooltipPosition="left">
                <ng-container [ngSwitch]="reqBody.template">

                  <ng-container *ngSwitchCase="'courses'">
                      <table style="width: 100%" mat-table [dataSource]="asCourseBody(reqBody).subRequirementCourses">
                          <caption>Applicable academic work</caption>
                          <tr mat-header-row *matHeaderRowDef="courseTerms"></tr>
                          <tr mat-row *matRowDef="let row; columns: courseTerms;"></tr>


                          <ng-container matColumnDef="term">
                            <th mat-header-cell *matHeaderCellDef>Term</th>
                            <td mat-cell *matCellDef="let course">{{course.term}}</td>
                          </ng-container>

                          <ng-container matColumnDef="course">
                            <th mat-header-cell *matHeaderCellDef>Course</th>
                            <td mat-cell *matCellDef="let course">{{course.course}}</td>
                          </ng-container>

                          <ng-container matColumnDef="credits">
                            <th mat-header-cell *matHeaderCellDef>Credits</th>
                            <td mat-cell *matCellDef="let course">{{course.credits}}</td>
                          </ng-container>

                          <ng-container matColumnDef="grade">
                            <th mat-header-cell *matHeaderCellDef>Grade</th>
                            <td mat-cell *matCellDef="let course">{{course.grade}}</td>
                          </ng-container>

                          <ng-container matColumnDef="title">
                            <th mat-header-cell *matHeaderCellDef>Course Title</th>
                            <td mat-cell *matCellDef="let course">{{course.courseTitle}}</td>
                          </ng-container>

                          <ng-container matColumnDef="note">
                            <th mat-header-cell *matHeaderCellDef>Course Note</th>
                            <td mat-cell *matCellDef="let course">{{course.courseNote}}</td>
                          </ng-container>
                      </table>
                  </ng-container>

                  <ng-container *ngSwitchCase="'lines'">
                      <p 
                        *ngFor="let line of asLineBody(reqBody).lines; trackBy: trackByIndex"
                        [innerHTML]="line | auditLine:reqBody.contentType"></p>
                  </ng-container>
            
                </ng-container>
              </div>
            </div>

          </mat-expansion-panel>
        </ng-template>
        <!-- END OF ACCORDION REQUIREMENT -->

      </ng-container>
      <!-- END OF REQUIREMENT -->

    </mat-accordion>
  </section>
</mat-card>