sampler-fork/main.go

80 lines
1.8 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"
2019-01-31 00:02:38 +00:00
"github.com/sqshq/vcmd/data"
2019-02-01 05:07:25 +00:00
"github.com/sqshq/vcmd/settings"
2019-01-28 23:09:52 +00:00
"github.com/sqshq/vcmd/widgets"
"log"
"time"
)
func main() {
2019-02-01 05:07:25 +00:00
print("\033]0;vcmd\007")
2019-01-28 23:09:52 +00:00
cfg := config.Load("/Users/sqshq/Go/src/github.com/sqshq/vcmd/config.yml")
if err := ui.Init(); err != nil {
2019-01-31 00:02:38 +00:00
log.Fatalf("failed to initialize termui: %v", err)
2019-01-28 23:09:52 +00:00
}
defer ui.Close()
2019-01-31 00:02:38 +00:00
events := ui.PollEvents()
2019-01-28 23:09:52 +00:00
2019-01-31 00:02:38 +00:00
pollers := make([]data.Poller, 0)
2019-02-01 05:07:25 +00:00
lout := widgets.NewLayout(ui.TerminalDimensions())
2019-01-30 00:21:57 +00:00
2019-01-31 01:41:51 +00:00
for _, chartConfig := range cfg.RunCharts {
2019-01-28 23:09:52 +00:00
2019-01-31 01:41:51 +00:00
chart := widgets.NewRunChart(chartConfig.Title)
2019-01-31 00:02:38 +00:00
lout.AddItem(chart, chartConfig.Position, chartConfig.Size)
2019-01-28 23:09:52 +00:00
2019-01-31 23:40:05 +00:00
for _, item := range chartConfig.Items {
2019-01-31 00:02:38 +00:00
pollers = append(pollers,
2019-01-31 23:40:05 +00:00
data.NewPoller(chart, item, chartConfig.RefreshRateMs))
2019-01-28 23:09:52 +00:00
}
2019-01-31 00:02:38 +00:00
}
ticker := time.NewTicker(30 * time.Millisecond)
2019-02-01 05:07:25 +00:00
pause := false
2019-01-28 23:09:52 +00:00
for {
select {
2019-01-31 00:02:38 +00:00
case e := <-events:
2019-01-28 23:09:52 +00:00
switch e.ID {
2019-02-01 05:07:25 +00:00
case settings.EventQuit, settings.EventExit:
2019-01-28 23:09:52 +00:00
return
2019-02-01 05:07:25 +00:00
case settings.EventResize:
2019-01-30 00:21:57 +00:00
payload := e.Payload.(ui.Resize)
2019-01-31 00:02:38 +00:00
lout.ChangeDimensions(payload.Width, payload.Height)
2019-02-01 05:07:25 +00:00
case settings.EventMouseClick:
2019-01-31 00:02:38 +00:00
//payload := e.Payload.(ui.Mouse)
//x, y := payload.X, payload.Y
//log.Printf("x: %v, y: %v", x, y)
2019-01-28 23:09:52 +00:00
}
switch e.Type {
2019-01-31 00:02:38 +00:00
case ui.KeyboardEvent:
2019-01-28 23:09:52 +00:00
switch e.ID {
2019-02-01 05:07:25 +00:00
case settings.EventKeyboardLeft:
2019-01-31 00:02:38 +00:00
// here we are going to move selection (special type of layout item)
2019-01-31 01:41:51 +00:00
//lout.GetItem("").Move(-1, 0)
2019-02-01 05:07:25 +00:00
case settings.EventKeyboardRight:
2019-01-31 01:41:51 +00:00
//lout.GetItem(0).Move(1, 0)
2019-02-01 05:07:25 +00:00
case settings.EventKeyboardDown:
2019-01-31 01:41:51 +00:00
//lout.GetItem(0).Move(0, 1)
2019-02-01 05:07:25 +00:00
case settings.EventKeyboardUp:
2019-01-31 01:41:51 +00:00
//lout.GetItem(0).Move(0, -1)
2019-02-01 05:07:25 +00:00
case settings.EventPause:
pause = !pause
2019-01-28 23:09:52 +00:00
}
}
2019-01-31 00:02:38 +00:00
case <-ticker.C:
2019-02-01 05:07:25 +00:00
if !pause {
ui.Render(lout)
}
2019-01-28 23:09:52 +00:00
}
}
}