|
|
@@ -3,6 +3,7 @@ package tui
|
|
|
import (
|
|
|
"fmt"
|
|
|
|
|
|
+ "github.com/NimbleMarkets/ntcharts/linechart/streamlinechart"
|
|
|
tea "github.com/charmbracelet/bubbletea"
|
|
|
)
|
|
|
|
|
|
@@ -13,11 +14,12 @@ type Model struct {
|
|
|
Addresses []Address // as defined in internal/tui/types.go
|
|
|
}
|
|
|
|
|
|
-func InitialModel(addresses []string) Model {
|
|
|
+func InitialModel(addresses []string, max_results int) Model {
|
|
|
var model Model
|
|
|
for _, address := range addresses {
|
|
|
var addr Address
|
|
|
addr.Address = address
|
|
|
+ addr.max_results = max_results
|
|
|
model.Addresses = append(model.Addresses, addr)
|
|
|
}
|
|
|
return model
|
|
|
@@ -43,6 +45,28 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|
|
return m, m.Poll
|
|
|
}
|
|
|
|
|
|
+func (m Model) View() string {
|
|
|
+ output := "Results:\n\n"
|
|
|
+ for _, address := range m.Addresses {
|
|
|
+ last := address.Last()
|
|
|
+ if last == -1 {
|
|
|
+ output = output + fmt.Sprintf("- %s\tloading...\n\n", address.Address)
|
|
|
+ } else {
|
|
|
+ output = output + fmt.Sprintf("- %s\n\n", address.Address)
|
|
|
+ }
|
|
|
+
|
|
|
+ // Linechart
|
|
|
+ slc := streamlinechart.New(address.max_results, 10)
|
|
|
+ for _, v := range address.results {
|
|
|
+ slc.Push(v)
|
|
|
+ }
|
|
|
+ slc.Draw()
|
|
|
+ output = output + fmt.Sprintf("%s\n\n", slc.View())
|
|
|
+ }
|
|
|
+
|
|
|
+ return output
|
|
|
+}
|
|
|
+
|
|
|
// A wrapper for the underlying [tui.Address.Poll] function. For each address in
|
|
|
// [tui.Model.Addresses], run its respective Poll function and update [tui.Model]
|
|
|
//
|
|
|
@@ -54,16 +78,3 @@ func (m Model) Poll() tea.Msg {
|
|
|
}
|
|
|
return true
|
|
|
}
|
|
|
-
|
|
|
-func (m Model) View() string {
|
|
|
- output := "Results:\n"
|
|
|
- for _, address := range m.Addresses {
|
|
|
- last := address.Last()
|
|
|
- if last == -1 {
|
|
|
- output = output + fmt.Sprintf("%s: loading...\n", address.Address)
|
|
|
- } else {
|
|
|
- output = output + fmt.Sprintf("%s: %f\n", address.Address, last)
|
|
|
- }
|
|
|
- }
|
|
|
- return output
|
|
|
-}
|