diff --git a/web/angular/src/app/api.service.ts b/web/angular/src/app/api.service.ts index 272ece8..0a05d3e 100755 --- a/web/angular/src/app/api.service.ts +++ b/web/angular/src/app/api.service.ts @@ -6,7 +6,8 @@ import {Credentials} from "./models/credentials"; @Injectable() export class ApiService { - public url: string = window.location.protocol + "//" + window.location.hostname + "/api"; + // public url: string = window.location.protocol + "//" + window.location.hostname + "/api"; + public url = "https://tt.simon987.net/api"; private options: { withCredentials: true, responseType: "json" diff --git a/web/angular/src/app/project-dashboard/project-dashboard.component.html b/web/angular/src/app/project-dashboard/project-dashboard.component.html index e13b181..fdc5f34 100644 --- a/web/angular/src/app/project-dashboard/project-dashboard.component.html +++ b/web/angular/src/app/project-dashboard/project-dashboard.component.html @@ -19,7 +19,8 @@
{{project.motd}}

{{"project.task_per_second" | translate}}: - {{avgTask | number}}/s + {{avgTask | number}}/s, + {{"project.eta"|translate}}: {{eta}}

diff --git a/web/angular/src/app/project-dashboard/project-dashboard.component.ts b/web/angular/src/app/project-dashboard/project-dashboard.component.ts index ad02b50..779c9ec 100644 --- a/web/angular/src/app/project-dashboard/project-dashboard.component.ts +++ b/web/angular/src/app/project-dashboard/project-dashboard.component.ts @@ -11,6 +11,8 @@ import {AuthService} from "../auth.service"; import {MatDialog} from "@angular/material"; import {AreYouSureComponent} from "../are-you-sure/are-you-sure.component"; +import * as moment from "moment" + @Component({ selector: 'app-project-dashboard', @@ -27,6 +29,7 @@ export class ProjectDashboardComponent implements OnInit { private statusPie: Chart; private assigneesPie: Chart; private avgTask: number; + eta: string; private colors = { @@ -74,6 +77,7 @@ export class ProjectDashboardComponent implements OnInit { .subscribe((data: any) => { this.snapshots = data.content.snapshots; this.averageTaskPerSecond(); + this.calculateEta(); this.lastSnapshot = this.snapshots ? this.snapshots.sort((a, b) => { return b.time_stamp - a.time_stamp })[0] : null; @@ -340,6 +344,7 @@ export class ProjectDashboardComponent implements OnInit { }); this.averageTaskPerSecond(); + this.calculateEta(); }) }, error => { @@ -396,6 +401,14 @@ export class ProjectDashboardComponent implements OnInit { } } + private calculateEta() { + if (this.snapshots.length > 0) { + this.eta = moment.utc(this.snapshots[0].new_task_count / this.avgTask * 1000).format("D[d] HH[h]mm[m]ss[s]") + } else { + this.eta = "N/A" + } + } + private setPaused(paused: boolean) { this.dialog.open(AreYouSureComponent, { width: '250px', diff --git a/web/angular/src/assets/i18n/en.json b/web/angular/src/assets/i18n/en.json index 0cd1c47..91a0561 100644 --- a/web/angular/src/assets/i18n/en.json +++ b/web/angular/src/assets/i18n/en.json @@ -74,7 +74,8 @@ "assign_rate": "Task assign rate limit", "submit_rate": "Task submit rate limit", "rate": "per second", - "task_per_second": "Completed tasks per second" + "task_per_second": "Tasks per second", + "eta": "ETA" }, "dashboard": { "title": "Dashboard for", diff --git a/web/angular/src/assets/i18n/fr.json b/web/angular/src/assets/i18n/fr.json index 008d052..8451e1a 100644 --- a/web/angular/src/assets/i18n/fr.json +++ b/web/angular/src/assets/i18n/fr.json @@ -74,7 +74,8 @@ "assign_rate": "Taux d'assignation de tâches", "submit_rate": "Taux de soumission de tâches", "rate": "par seconde", - "task_per_second": "Tâches par seconde" + "task_per_second": "Tâches par seconde", + "eta": "Temps estimé" }, "dashboard": { "title": "Tableau de bord pour ",