From 3587d90bbae123931ce497097f1d19a566ebe428 Mon Sep 17 00:00:00 2001
From: Malte Bauch <malte.bauch@stud.h-da.de>
Date: Thu, 15 Oct 2020 18:51:29 +0200
Subject: [PATCH] added grpc Status view

- goroutine not working yet
- renaming required
---
 cmd/gosdn-tview/views/headerView.go | 16 +++++-----
 cmd/gosdn-tview/views/mainView.go   | 10 +++---
 cmd/gosdn-tview/views/statusView.go | 48 +++++++++++++++++++++++++++++
 3 files changed, 61 insertions(+), 13 deletions(-)
 create mode 100644 cmd/gosdn-tview/views/statusView.go

diff --git a/cmd/gosdn-tview/views/headerView.go b/cmd/gosdn-tview/views/headerView.go
index 758fc08b6..221c75321 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 f7ac937e9..7ece090a9 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 000000000..306403945
--- /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)
+	}
+}
-- 
GitLab