sampler-fork/main.go

103 lines
2.1 KiB
Go
Raw Normal View History

2019-01-28 23:09:52 +00:00
package main
import (
ui "github.com/sqshq/termui"
"github.com/sqshq/vcmd/config"
"github.com/sqshq/vcmd/widgets"
"log"
"time"
)
func main() {
cfg := config.Load("/Users/sqshq/Go/src/github.com/sqshq/vcmd/config.yml")
for _, linechart := range cfg.LineCharts {
for _, data := range linechart.Data {
value, _ := data.NextValue()
log.Printf("%s: %s - %v", linechart.Title, data.Label, value)
}
}
p1 := widgets.NewTimePlot()
p1.Title = " CURL LATENCY STATISTICS (sec) "
p1.LineColors[0] = ui.ColorYellow
p1.Marker = widgets.MarkerBraille
2019-01-30 00:21:57 +00:00
p2 := widgets.NewTimePlot()
p2.Title = " CURL LATENCY STATISTICS 2 (sec) "
p2.LineColors[0] = ui.ColorYellow
p2.Marker = widgets.MarkerBraille
2019-01-28 23:09:52 +00:00
if err := ui.Init(); err != nil {
//log.Fatalf("failed to initialize termui: %v", err)
}
defer ui.Close()
uiEvents := ui.PollEvents()
2019-01-30 00:21:57 +00:00
layout := widgets.NewLayout(ui.TerminalDimensions())
layout.AddItem(p1, 0, 0, 6, 6)
layout.AddItem(p2, 0, 6, 6, 12)
2019-01-28 23:09:52 +00:00
dataTicker := time.NewTicker(200 * time.Millisecond)
uiTicker := time.NewTicker(50 * time.Millisecond)
pause := false
go func() {
for {
select {
case <-dataTicker.C:
if !pause {
value, err := cfg.LineCharts[0].Data[0].NextValue()
if err != nil {
log.Printf("failed to get value: %s", err)
break
}
p1.AddValue(value)
2019-01-30 00:21:57 +00:00
p2.AddValue(value)
2019-01-28 23:09:52 +00:00
}
}
}
}()
for {
select {
case e := <-uiEvents:
switch e.ID {
case "q", "<C-c>": // press 'q' or 'C-c' to quit
return
2019-01-30 00:21:57 +00:00
case "<Resize>":
payload := e.Payload.(ui.Resize)
layout.ChangeDimensions(payload.Width, payload.Height)
2019-01-28 23:09:52 +00:00
}
//case "<MouseLeft>":
// payload := e.Payload.(ui.Mouse)
// x, y := payload.X, payload.Y
// log.Printf("x: %v, y: %v", x, y)
//}
switch e.Type {
case ui.KeyboardEvent: // handle all key presses
//log.Printf("key: %v", e.ID)
switch e.ID {
case "<Left>":
2019-01-30 00:21:57 +00:00
layout.MoveItem(-1, 0)
2019-01-28 23:09:52 +00:00
case "<Right>":
2019-01-30 00:21:57 +00:00
layout.MoveItem(1, 0)
2019-01-28 23:09:52 +00:00
case "<Down>":
2019-01-30 00:21:57 +00:00
layout.MoveItem(0, 1)
2019-01-28 23:09:52 +00:00
case "<Up>":
2019-01-30 00:21:57 +00:00
layout.MoveItem(0, -1)
2019-01-28 23:09:52 +00:00
case "p":
pause = !pause
}
}
case <-uiTicker.C:
if !pause {
2019-01-30 00:21:57 +00:00
ui.Render(layout)
2019-01-28 23:09:52 +00:00
}
}
}
}