| <!-- Copyright (C) 2018 The Android Open Source Project |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <div class="entity-filter"> |
| <app-filter (applyFilters)="applyFilters($event)" [disabled]="loading"></app-filter> |
| </div> |
| <div class="mat-elevation-z2 entity-table" [ngStyle]="{'opacity': (loading) ? 0.2 : 1 }"> |
| <mat-table [dataSource]="dataSource"> |
| <!-- Index Column --> |
| <ng-container matColumnDef="_index"> |
| <mat-header-cell *matHeaderCellDef>No.</mat-header-cell> |
| <mat-cell *matCellDef="let i = index"> {{i+1+pageSize*pageIndex}} </mat-cell> |
| </ng-container> |
| |
| <!-- Test Name Column --> |
| <ng-container matColumnDef="test_name"> |
| <mat-header-cell *matHeaderCellDef>Test Name</mat-header-cell> |
| <mat-cell *matCellDef="let schedule"> {{schedule.test_name}} </mat-cell> |
| </ng-container> |
| |
| <!-- Device Column --> |
| <ng-container matColumnDef="device"> |
| <mat-header-cell *matHeaderCellDef>Device</mat-header-cell> |
| <mat-cell *matCellDef="let schedule"> {{schedule.device ? schedule.device.join('\n') : ""}} </mat-cell> |
| </ng-container> |
| |
| <!-- Manifest Branch Column --> |
| <ng-container matColumnDef="manifest_branch"> |
| <mat-header-cell *matHeaderCellDef>Manifest Branch</mat-header-cell> |
| <mat-cell *matCellDef="let schedule"> {{schedule.manifest_branch}}</mat-cell> |
| </ng-container> |
| |
| <!-- Build Target Column --> |
| <ng-container matColumnDef="build_target"> |
| <mat-header-cell *matHeaderCellDef>Build Target</mat-header-cell> |
| <mat-cell *matCellDef="let schedule"> {{schedule.build_target}} </mat-cell> |
| </ng-container> |
| |
| <!-- GSI Branch Column --> |
| <ng-container matColumnDef="gsi_branch"> |
| <mat-header-cell *matHeaderCellDef>GSI Branch</mat-header-cell> |
| <mat-cell *matCellDef="let schedule"> {{schedule.gsi_branch}} </mat-cell> |
| </ng-container> |
| |
| <!-- GSI Build Target Column --> |
| <ng-container matColumnDef="gsi_build_target"> |
| <mat-header-cell *matHeaderCellDef>GSI Build Target</mat-header-cell> |
| <mat-cell *matCellDef="let schedule"> {{schedule.gsi_build_target}} </mat-cell> |
| </ng-container> |
| |
| <!-- Test Branch Column --> |
| <ng-container matColumnDef="test_branch"> |
| <mat-header-cell *matHeaderCellDef>Test Branch</mat-header-cell> |
| <mat-cell *matCellDef="let schedule"> {{schedule.test_branch}} </mat-cell> |
| </ng-container> |
| |
| <!-- Test Build Target Column --> |
| <ng-container matColumnDef="test_build_target"> |
| <mat-header-cell *matHeaderCellDef>Test Build Target</mat-header-cell> |
| <mat-cell *matCellDef="let schedule"> {{schedule.test_build_target}}</mat-cell> |
| </ng-container> |
| |
| <!-- Period Column --> |
| <ng-container matColumnDef="period"> |
| <mat-header-cell *matHeaderCellDef>Period</mat-header-cell> |
| <mat-cell *matCellDef="let schedule"> {{schedule.period}}</mat-cell> |
| </ng-container> |
| |
| <!-- Status Column --> |
| <ng-container matColumnDef="status"> |
| <mat-header-cell *matHeaderCellDef>Status</mat-header-cell> |
| <mat-cell *matCellDef="let schedule" |
| [ngStyle]="{color: (schedule.suspended || isExpired(schedule.timestamp)) ? '#FF0000' : '#000000'}"> |
| {{schedule.suspended ? "Suspended" : (isExpired(schedule.timestamp) ? "Expired" : "Active")}} |
| </mat-cell> |
| </ng-container> |
| |
| <!-- Timestamp Column --> |
| <ng-container matColumnDef="timestamp"> |
| <mat-header-cell *matHeaderCellDef>Timestamp</mat-header-cell> |
| <mat-cell *matCellDef="let schedule"> {{getRelativeTime(schedule.timestamp)}}</mat-cell> |
| </ng-container> |
| |
| <mat-header-row *matHeaderRowDef="columnTitles"></mat-header-row> |
| <mat-row *matRowDef="let row; columns: columnTitles;" |
| matRipple |
| class="element-row" |
| [appCdkDetailRow]="row" [appCdkDetailRowTpl]="schedule_detail"></mat-row> |
| </mat-table> |
| |
| <mat-paginator [length]="count" |
| [pageSize]="pageSize" |
| [pageSizeOptions]="pageSizeOptions" |
| [pageIndex]="pageIndex" |
| (page)="pageEvent = onPageEvent($event)"> |
| </mat-paginator> |
| </div> |
| <ng-template #schedule_detail let-schedule> |
| <div class="mat-row div-expandable" [@detailExpand] style="overflow: hidden"> |
| <button mat-raised-button (click)="suspendSchedule([{urlsafe_key: schedule.urlsafe_key, suspend: !schedule.suspended}])"> |
| {{(schedule.suspended ? "Resume" : "Suspend")}} |
| </button> |
| <button mat-raised-button (click)="onShowDetailsClicked(schedule)"> |
| Show Details |
| </button> |
| </div> |
| </ng-template> |
| <div class="loading-spinner" *ngIf="loading"> |
| <mat-spinner color="primary"></mat-spinner> |
| </div> |