1
Fork 0

Reformat stats display, protect against division by zero.

This commit is contained in:
Juliusz Chroboczek 2021-05-07 02:23:10 +02:00
parent b1bb427f06
commit 86b6c71ca0
3 changed files with 29 additions and 18 deletions

View File

@ -23,8 +23,11 @@ func (c *webClient) GetStats() *stats.Client {
tracks := up.getTracks() tracks := up.getTracks()
for _, t := range tracks { for _, t := range tracks {
s := t.cache.GetStats(false) s := t.cache.GetStats(false)
loss := float64(s.Expected - s.Received) / var loss float64
float64(s.Expected) if s.Expected > 0 {
loss = float64(s.Expected-s.Received) /
float64(s.Expected)
}
jitter := time.Duration(t.jitter.Jitter()) * jitter := time.Duration(t.jitter.Jitter()) *
(time.Second / time.Duration(t.jitter.HZ())) (time.Second / time.Duration(t.jitter.HZ()))
rate, _ := t.rate.Estimate() rate, _ := t.rate.Estimate()

View File

@ -56,11 +56,15 @@ function formatGroup(group) {
tr2.appendChild(td3); tr2.appendChild(td3);
table.appendChild(tr2); table.appendChild(tr2);
if(client.up) if(client.up)
for(let j = 0; j < client.up.length; j++) for(let j = 0; j < client.up.length; j++) {
table.appendChild(formatConn('↑', client.up[j])); let rows = formatConn('↑', client.up[j]);
rows.forEach(r => table.appendChild(r));
}
if(client.down) if(client.down)
for(let j = 0; j < client.down.length; j++) for(let j = 0; j < client.down.length; j++) {
table.appendChild(formatConn('↓', client.down[j])); let rows = formatConn('↓', client.down[j]);
rows.forEach(r => table.appendChild(r));
}
} }
td2.appendChild(table); td2.appendChild(table);
tr.appendChild(td2); tr.appendChild(td2);
@ -76,24 +80,25 @@ function formatConn(direction, conn) {
td2.textContent = conn.id; td2.textContent = conn.id;
tr.appendChild(td2); tr.appendChild(td2);
let td3 = document.createElement('td'); let td3 = document.createElement('td');
if(conn.maxBitrate) td3.textContent = direction;
td3.textContent = direction + ' ' + conn.maxBitrate;
else
td3.textContent = direction;
tr.appendChild(td3); tr.appendChild(td3);
let td4 = document.createElement('td'); let td4 = document.createElement('td');
if(conn.tracks) { if(conn.maxBitrate)
let table = document.createElement('table'); td4.textContent = `${conn.maxBitrate}`;
for(let i = 0; i < conn.tracks.length; i++)
table.appendChild(formatTrack(conn.tracks[i]));
td4.appendChild(table);
}
tr.appendChild(td4); tr.appendChild(td4);
return tr; let rows = [tr];
if(conn.tracks) {
for(let i = 0; i < conn.tracks.length; i++)
rows.push(formatTrack(conn.tracks[i]));
}
return rows;
} }
function formatTrack(track) { function formatTrack(track) {
let tr = document.createElement('tr'); let tr = document.createElement('tr');
tr.appendChild(document.createElement('td'));
tr.appendChild(document.createElement('td'));
tr.appendChild(document.createElement('td'));
let td = document.createElement('td'); let td = document.createElement('td');
if(track.maxBitrate) if(track.maxBitrate)
td.textContent = `${track.bitrate||0}/${track.maxBitrate}`; td.textContent = `${track.bitrate||0}/${track.maxBitrate}`;

View File

@ -370,7 +370,10 @@ func statsHandler(w http.ResponseWriter, r *http.Request, dataDir string) {
ss := stats.GetGroups() ss := stats.GetGroups()
e := json.NewEncoder(w) e := json.NewEncoder(w)
e.Encode(ss) err = e.Encode(ss)
if err != nil {
log.Printf("stats.json: %v", err)
}
return return
} }