diff --git a/widgets/expanded_net.go b/widgets/expanded_net.go index 7e99ec6..910daee 100644 --- a/widgets/expanded_net.go +++ b/widgets/expanded_net.go @@ -8,30 +8,30 @@ import ( type ExpandedNet struct { *ui.Sparklines - rxHist IntHistData - txHist IntHistData + rxHist DiffHistData + txHist DiffHistData } func NewExpandedNet() *ExpandedNet { - net := &ExpandedNet{ui.NewSparklines(), NewIntHistData(60), NewIntHistData(60)} + net := &ExpandedNet{ui.NewSparklines(), NewDiffHistData(30), NewDiffHistData(30)} rx := ui.NewSparkline() rx.Title = "RX" - rx.Height = 3 + rx.Height = 2 rx.Data = net.rxHist.data rx.TitleColor = ui.ColorDefault rx.LineColor = ui.ColorGreen tx := ui.NewSparkline() tx.Title = "TX" - tx.Height = 3 + tx.Height = 2 tx.Data = net.txHist.data tx.TitleColor = ui.ColorDefault - tx.LineColor = ui.ColorGreen + tx.LineColor = ui.ColorYellow net.Lines = []ui.Sparkline{rx, tx} - net.Height = 12 - net.Width = 50 + net.Height = 8 + net.Width = 35 net.X = 0 net.Y = 15 return net @@ -39,7 +39,8 @@ func NewExpandedNet() *ExpandedNet { func (w *ExpandedNet) Update(rx int64, tx int64) { w.rxHist.Append(int(rx)) + w.Lines[0].Title = fmt.Sprintf("RX [%s/s]", byteFormat(int64(w.rxHist.Last()))) + w.txHist.Append(int(tx)) - w.Lines[0].Title = fmt.Sprintf("RX (%s)", byteFormat(rx)) - w.Lines[1].Title = fmt.Sprintf("TX (%s)", byteFormat(tx)) + w.Lines[1].Title = fmt.Sprintf("TX [%s/s]", byteFormat(int64(w.txHist.Last()))) } diff --git a/widgets/hist.go b/widgets/hist.go index 1cc5a07..e51def0 100644 --- a/widgets/hist.go +++ b/widgets/hist.go @@ -44,3 +44,37 @@ func (h FloatHistData) Append(val float64) { } h.data = append(h.data, val) } + +type DiffHistData struct { + HistData + data []int + srcData []int +} + +func NewDiffHistData(max int) DiffHistData { + return DiffHistData{ + NewHistData(max), + make([]int, max), + make([]int, max), + } +} + +// return most recent value +func (h DiffHistData) Last() int { + return h.data[len(h.data)-1] +} + +func (h DiffHistData) Append(val int) { + if len(h.data) >= h.maxLen { + h.data = append(h.data[:0], h.data[1:]...) + } + if len(h.srcData) >= h.maxLen { + h.srcData = append(h.srcData[:0], h.srcData[1:]...) + } + + diff := val - h.srcData[len(h.srcData)-1] + if diff != val { // skip adding to data if this is the initial update + h.data = append(h.data, diff) + } + h.srcData = append(h.srcData, val) +}