diff --git a/cmd/gosdn-tview/views/headerView.go b/cmd/gosdn-tview/views/headerView.go index 758fc08b692cf6bda9e0800b6ff81e3bb99ce0d0..221c753218c50563238d1759713e5a6c7fc22386 100644 --- a/cmd/gosdn-tview/views/headerView.go +++ b/cmd/gosdn-tview/views/headerView.go @@ -1,8 +1,6 @@ package views -import ( - "github.com/rivo/tview" -) +import "github.com/rivo/tview" var goSDNAscii string = ` ____ ____ _ _ __ _ ___/ ___|| _ \| \ | | @@ -12,23 +10,23 @@ var goSDNAscii string = ` ____ ____ _ _ |___/ ` type HeaderView struct { - statusView *tview.Flex + headerFlex *tview.Flex titleView *tview.TextView } func NewHeaderView() *HeaderView { //TODO: change to uses FlexBox if there is more to display in the header - sv := &HeaderView{ + hv := &HeaderView{ titleView: tview.NewTextView(), } - sv.titleView. + hv.titleView. SetText(goSDNAscii). SetTextAlign(tview.AlignCenter). SetBorder(true) - return sv + return hv } -func (sv *HeaderView) GetContent() tview.Primitive { - return sv.titleView +func (hv *HeaderView) GetContent() tview.Primitive { + return hv.titleView } diff --git a/cmd/gosdn-tview/views/mainView.go b/cmd/gosdn-tview/views/mainView.go index f7ac937e9f8d144d50a24f887f7ee40eae2f2206..7ece090a90f8145535634d0fe3b4dd165f930341 100644 --- a/cmd/gosdn-tview/views/mainView.go +++ b/cmd/gosdn-tview/views/mainView.go @@ -11,7 +11,8 @@ type MainView struct { mainGrid *tview.Grid commandsListView *CommandListView resultAndInputView *ResultAndInputView - statusView *HeaderView + headerView *HeaderView + goSDNStatusView *GoSDNStatusView } func NewMainView(app *app.App, conn *grpc.ClientConn) *MainView { @@ -20,15 +21,16 @@ func NewMainView(app *app.App, conn *grpc.ClientConn) *MainView { mainGrid: tview.NewGrid(), commandsListView: NewCommandListView(), resultAndInputView: NewResultAndInputView(), - statusView: NewHeaderView(), + headerView: NewHeaderView(), + goSDNStatusView: NewGoSDNStatusView(conn), } mv.commandsListView.GetCommands(app, mv.resultAndInputView, conn) mv.mainGrid. SetRows(8, 0, 3). SetColumns(40, 0). - AddItem(mv.statusView.GetContent(), 0, 0, 1, 2, 0, 0, false). - AddItem(newPrimitive("Footer"), 2, 0, 1, 2, 0, 0, false) + AddItem(mv.headerView.GetContent(), 0, 0, 1, 2, 0, 0, false). + AddItem(mv.goSDNStatusView.GetContent(), 2, 0, 1, 2, 0, 0, false) mv.mainGrid.AddItem(mv.commandsListView.GetContent(), 1, 0, 1, 1, 0, 0, true). AddItem(mv.resultAndInputView.GetContent(), 1, 1, 1, 1, 0, 0, false) diff --git a/cmd/gosdn-tview/views/statusView.go b/cmd/gosdn-tview/views/statusView.go new file mode 100644 index 0000000000000000000000000000000000000000..306403945b34fc81d45534fdeb431c9e71925a9c --- /dev/null +++ b/cmd/gosdn-tview/views/statusView.go @@ -0,0 +1,48 @@ +package views + +import ( + "fmt" + "time" + + "github.com/rivo/tview" + "google.golang.org/grpc" +) + +type GoSDNStatusView struct { + statusGoSDNView *tview.TextView +} + +//TODO: change to grpcStatusView +func NewGoSDNStatusView(conn *grpc.ClientConn) *GoSDNStatusView { + //TODO: change to uses FlexBox if there is more to display in the header + sv := &GoSDNStatusView{ + statusGoSDNView: tview.NewTextView(), + } + + sv.statusGoSDNView. + SetRegions(true). + SetBorder(true). + SetTitle("Status: gRPC") + + go goSDNTicker(sv, conn) + + return sv +} + +func (sv *GoSDNStatusView) GetContent() tview.Primitive { + return sv.statusGoSDNView +} + +func (sv *GoSDNStatusView) SetContent(s string) { + sv.statusGoSDNView.Clear() + sv.statusGoSDNView.SetText(s) +} + +func goSDNTicker(sv *GoSDNStatusView, conn *grpc.ClientConn) { + ticker := time.NewTicker(5 * time.Second) + sv.statusGoSDNView.SetText("???") + for range ticker.C { + sv.statusGoSDNView.Clear() + fmt.Println(sv) + } +}