You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
1.7 KiB
86 lines
1.7 KiB
package ui
|
|
|
|
import (
|
|
"cli-mon/yabl"
|
|
"github.com/gdamore/tcell/v2"
|
|
"github.com/rivo/tview"
|
|
"os"
|
|
)
|
|
|
|
const (
|
|
connectors_page = "Connectors"
|
|
)
|
|
|
|
type page struct {
|
|
left string
|
|
right string
|
|
primitive tview.Primitive
|
|
}
|
|
|
|
func InitCliApp(events <-chan *yabl.Event) {
|
|
var app = tview.NewApplication()
|
|
pages := tview.NewPages()
|
|
|
|
var active page
|
|
var layout map[string]page
|
|
|
|
connectors := newConnectorsGrid()
|
|
page2 := tview.NewBox().SetBorder(true).SetTitle("Bbbbbb")
|
|
|
|
layout = map[string]page{
|
|
connectors_page: {
|
|
left: "Page2",
|
|
right: "Page2",
|
|
primitive: connectors,
|
|
},
|
|
"Page2": {
|
|
left: connectors_page,
|
|
right: connectors_page,
|
|
primitive: page2,
|
|
},
|
|
}
|
|
|
|
for k, p := range layout {
|
|
pages.AddPage(k, p.primitive, true, true)
|
|
}
|
|
|
|
active = layout["Page1"]
|
|
pages.SwitchToPage("Page1")
|
|
|
|
app.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
|
|
switch event.Key() {
|
|
case tcell.KeyRight:
|
|
pages.SwitchToPage(active.right)
|
|
active = layout[active.right]
|
|
return nil
|
|
case tcell.KeyLeft:
|
|
pages.SwitchToPage(active.left)
|
|
active = layout[active.left]
|
|
return nil
|
|
case tcell.KeyCtrlC:
|
|
app.Stop()
|
|
}
|
|
return event
|
|
})
|
|
|
|
go func() {
|
|
if err := app.SetRoot(pages, true).EnableMouse(true).Run(); err != nil {
|
|
panic(err)
|
|
}
|
|
os.Exit(0)
|
|
}()
|
|
|
|
for event := range events {
|
|
switch obj := event.Object.(type) {
|
|
case *yabl.PuPresentEnergy:
|
|
connectors.updatePU(event.UnitId, event.Field, event.Value)
|
|
case *yabl.PuPeriphery:
|
|
connectors.updatePU(event.UnitId, event.Field, event.Value)
|
|
case *yabl.PuDebug:
|
|
connectors.updatePU(event.UnitId, event.Field, event.Value)
|
|
case *yabl.PuErrors:
|
|
connectors.updatePuErrors(obj)
|
|
}
|
|
app.Draw()
|
|
}
|
|
}
|
|
|