Show stats by worker in daily stats
This commit is contained in:
parent
11cc168b3a
commit
b3c89a01d0
@ -295,6 +295,9 @@ func GetDailyStats(db *clover.DB, date time.Time) (*models.DailyStats, error) {
|
|||||||
}
|
}
|
||||||
for workerName, workerShares := range sharesByWorker {
|
for workerName, workerShares := range sharesByWorker {
|
||||||
workerHashrate := helpers.CalculateAverageHashrate(workerShares)
|
workerHashrate := helpers.CalculateAverageHashrate(workerShares)
|
||||||
|
sort.Slice(workerShares, func(i, j int) bool {
|
||||||
|
return workerShares[i].SDiff > workerShares[j].SDiff
|
||||||
|
})
|
||||||
workerTopShare := workerShares[0] // Already sorted by SDiff
|
workerTopShare := workerShares[0] // Already sorted by SDiff
|
||||||
|
|
||||||
stats.Workers[workerName] = models.WorkerDailyStats{
|
stats.Workers[workerName] = models.WorkerDailyStats{
|
||||||
|
@ -1,8 +1,25 @@
|
|||||||
{{ define "title" }}Daily Stats{{ end }} {{ define "header" }}📊 Pool Daily
|
{{ define "title" }}Daily Stats{{ end }} {{ define "header" }}📊 Pool Daily
|
||||||
Stats{{ end }} {{ define "content" }}
|
Stats{{ end }} {{ define "content" }}
|
||||||
|
<style>
|
||||||
|
.worker-rows {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.expand-btn {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.worker-table {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.worker-table th,
|
||||||
|
.worker-table td {
|
||||||
|
font-size: 0.9em;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
<th></th>
|
||||||
<th>Date (UTC)</th>
|
<th>Date (UTC)</th>
|
||||||
<th>Share Count</th>
|
<th>Share Count</th>
|
||||||
<th>Top Share Diff</th>
|
<th>Top Share Diff</th>
|
||||||
@ -10,21 +27,57 @@ Stats{{ end }} {{ define "content" }}
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{{ range .DailyStats }}
|
{{ range $i, $ds := .DailyStats }}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ .Date }}</td>
|
<td>
|
||||||
<td>{{ .ShareCount }}</td>
|
<span class="expand-btn" onclick="toggleWorkers({{ $i }})">➕</span>
|
||||||
<td>{{ humanDiff .TopShare.SDiff }}</td>
|
</td>
|
||||||
<td>{{ formatHashrate .PoolHashrate }}</td>
|
<td>{{ $ds.Date }}</td>
|
||||||
|
<td>{{ $ds.ShareCount }}</td>
|
||||||
|
<td>{{ humanDiff $ds.TopShare.SDiff }}</td>
|
||||||
|
<td>{{ formatHashrate $ds.PoolHashrate }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="worker-rows" id="workers-{{ $i }}">
|
||||||
|
<td colspan="5">
|
||||||
|
<table class="worker-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Shares</th>
|
||||||
|
<th>Top Share Diff</th>
|
||||||
|
<th>Hashrate</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{{ range $name, $w := $ds.Workers }}
|
||||||
|
<tr>
|
||||||
|
<td>{{ $w.Shares }}</td>
|
||||||
|
<td>{{ humanDiff $w.TopShare.SDiff }}</td>
|
||||||
|
<td>{{ formatHashrate $w.Hashrate }}</td>
|
||||||
|
</tr>
|
||||||
|
{{ end }}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="4">No stats found for this date range.</td>
|
<td colspan="5">No stats found for this date range.</td>
|
||||||
</tr>
|
</tr>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function toggleWorkers(index) {
|
||||||
|
const row = document.getElementById(`workers-${index}`);
|
||||||
|
if (row.style.display === "none" || row.style.display === "") {
|
||||||
|
row.style.display = "table-row";
|
||||||
|
} else {
|
||||||
|
row.style.display = "none";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
{{ if .PrevPageAvailable }}
|
{{ if .PrevPageAvailable }}
|
||||||
<a class="page-link" href="?start={{ .PrevPageStart }}&end={{ .PrevPageEnd }}"
|
<a class="page-link" href="?start={{ .PrevPageStart }}&end={{ .PrevPageEnd }}"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user