task_tracker/web/angular/src/app/project-dashboard/project-dashboard.component.html
2019-03-02 15:19:28 -05:00

101 lines
4.7 KiB
HTML

<div class="container">
<mat-card class="mat-elevation-z8">
<button mat-raised-button style="float: right"
[title]="'dashboard.refresh' | translate"
(click)="refresh()"
>
<mat-icon>refresh</mat-icon>
</button>
<mat-card-title *ngIf="project">{{"dashboard.title" | translate}} "{{project.name}}"</mat-card-title>
<mat-card-content style="padding: 2em 0 1em">
<p *ngIf="project">
{{"project.git_repo" | translate}}:
<a target="_blank" [href]="project['clone_url']"
*ngIf="isSafeUrl(project['clone_url'])">{{project.git_repo}}</a>
<span class="text-mono" *ngIf="!isSafeUrl(project['clone_url'])">{{project['git_repo']}}</span>
</p>
<p>{{"project.motd" | translate}}:</p>
<pre *ngIf="project">{{project.motd}}</pre>
<p>{{"project.task_per_second" | translate}}:
<span class="text-mono" *ngIf="project">{{avgTask | number}}/s</span>
</p>
<div style="display: flex; align-items: center; justify-content: center">
<div id="timeline-wrapper">
<canvas id="timeline"></canvas>
</div>
<div [class.hidden]="noTasks" id="side-charts">
<div id="status-pie-wrapper">
<canvas id="status-pie"></canvas>
</div>
<div id="assignees-pie-wrapper">
<canvas id="assignees-pie"></canvas>
</div>
</div>
<div *ngIf="noTasks" id="no-tasks">
<mat-icon>priority_high</mat-icon>
<p>{{"dashboard.empty" | translate}}</p>
</div>
</div>
<div id="small-screen-stats">
<p>Small screen stats</p>
<p>Latest monitoring snapshot:</p>
<pre>{{ lastSnapshot | json }}</pre>
<p>Assignees</p>
<pre>{{ assignees | json }}</pre>
</div>
<mat-expansion-panel *ngIf="project" style="margin-top: 1em">
<mat-expansion-panel-header>
<mat-panel-title>{{"dashboard.metadata" | translate}}</mat-panel-title>
</mat-expansion-panel-header>
<pre>{{project | json}}</pre>
</mat-expansion-panel>
<mat-expansion-panel *ngIf="project && auth.logged" class="project-actions">
<mat-expansion-panel-header>
<mat-panel-title>{{"dashboard.actions" | translate}}</mat-panel-title>
</mat-expansion-panel-header>
<button mat-raised-button color="accent" (click)="resetFailedTasks()">
<mat-icon>replay</mat-icon>
{{"dashboard.reset_failed"|translate}}
</button>
<button mat-raised-button
color="primary"
(click)="pauseProject()"
*ngIf="!project.paused"
[title]="'dashboard.pause_hint'|translate">
<mat-icon>pause</mat-icon>
{{"dashboard.pause"|translate}}
</button>
<button mat-raised-button
color="primary"
(click)="resumeProject()"
*ngIf="project.paused"
[title]="'dashboard.resume_hint'|translate">
<mat-icon>play_arrow</mat-icon>
{{"dashboard.resume"|translate}}
</button>
<button mat-raised-button color="warn" (click)="hardReset()">
<mat-icon>warning</mat-icon>
{{"dashboard.hard_reset"|translate}}
</button>
</mat-expansion-panel>
</mat-card-content>
<mat-card-actions>
<button mat-raised-button [routerLink]="'../'">{{"nav.back"|translate}}</button>
<button mat-raised-button color="primary" *ngIf="project && auth.logged"
[routerLink]="'/project/' + project.id + '/update'">{{"project.update" | translate}}</button>
<button mat-raised-button color="primary" *ngIf="project && auth.logged"
[routerLink]="'/project/' + project.id + '/perms'">{{"project.perms" | translate}}</button>
<button mat-raised-button color="primary" *ngIf="project && auth.logged"
[routerLink]="'/project/' + project.id + '/secret'">{{"project.secret" | translate}}</button>
</mat-card-actions>
</mat-card>
</div>