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 ",