mirror of
https://github.com/simon987/task_tracker.git
synced 2025-04-19 18:16:45 +00:00
Show completed tasks per second
This commit is contained in:
parent
13290d3c55
commit
e4936cd3c5
@ -63,6 +63,7 @@ func (api *WebAPI) SubmitTask(r *Request) {
|
||||
Message: "Too many requests",
|
||||
RateLimitDelay: delay,
|
||||
}, 429)
|
||||
reservation.Cancel()
|
||||
return
|
||||
}
|
||||
|
||||
@ -114,6 +115,7 @@ func (api *WebAPI) GetTaskFromProject(r *Request) {
|
||||
Message: "Too many requests",
|
||||
RateLimitDelay: delay,
|
||||
}, 429)
|
||||
reservation.Cancel()
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -18,6 +18,10 @@
|
||||
<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>
|
||||
|
@ -26,6 +26,7 @@ export class ProjectDashboardComponent implements OnInit {
|
||||
private timeline: Chart;
|
||||
private statusPie: Chart;
|
||||
private assigneesPie: Chart;
|
||||
private avgTask: number;
|
||||
|
||||
|
||||
private colors = {
|
||||
@ -336,6 +337,8 @@ export class ProjectDashboardComponent implements OnInit {
|
||||
this.assignees = data.content.assignees;
|
||||
this.setupAssigneesPie();
|
||||
});
|
||||
|
||||
this.averageTaskPerSecond();
|
||||
})
|
||||
},
|
||||
error => {
|
||||
@ -371,6 +374,27 @@ export class ProjectDashboardComponent implements OnInit {
|
||||
this.setPaused(false)
|
||||
}
|
||||
|
||||
private averageTaskPerSecond() {
|
||||
|
||||
const averageDelta = ([x, ...xs]) => {
|
||||
if (x === undefined)
|
||||
return NaN;
|
||||
else
|
||||
return xs.reduce(
|
||||
([acc, last], x) => [acc + (x - last), x],
|
||||
[0, x]
|
||||
) [0] / xs.length
|
||||
};
|
||||
|
||||
let interval = this.snapshots.length > 1 ? this.snapshots[0].time_stamp - this.snapshots[1].time_stamp : 0;
|
||||
|
||||
if (interval != 0) {
|
||||
this.avgTask = averageDelta(this.snapshots.reverse().map(s => s.closed_task_count) as any) / interval;
|
||||
} else {
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
private setPaused(paused: boolean) {
|
||||
this.dialog.open(AreYouSureComponent, {
|
||||
width: '250px',
|
||||
|
@ -73,7 +73,8 @@
|
||||
"reset_response": "Reset failed tasks: ",
|
||||
"assign_rate": "Task assign rate limit",
|
||||
"submit_rate": "Task submit rate limit",
|
||||
"rate": "per second"
|
||||
"rate": "per second",
|
||||
"task_per_second": "Completed tasks per second"
|
||||
},
|
||||
"dashboard": {
|
||||
"title": "Dashboard for",
|
||||
|
@ -73,7 +73,8 @@
|
||||
"reset_response": "Réinitialisé les tâches en échec: ",
|
||||
"assign_rate": "Taux d'assignation de tâches",
|
||||
"submit_rate": "Taux de soumission de tâches",
|
||||
"rate": "par seconde"
|
||||
"rate": "par seconde",
|
||||
"task_per_second": "Tâches par seconde"
|
||||
},
|
||||
"dashboard": {
|
||||
"title": "Tableau de bord pour ",
|
||||
|
Loading…
x
Reference in New Issue
Block a user