diff --git a/security/widget.go b/security/widget.go new file mode 100644 index 00000000..e3270b30 --- /dev/null +++ b/security/widget.go @@ -0,0 +1,70 @@ +package security + +import ( + "fmt" + "time" + + "github.com/rivo/tview" + "github.com/senorprogrammer/wtf/wtf" +) + +type Widget struct { + wtf.BaseWidget + View *tview.TextView +} + +func NewWidget() *Widget { + widget := Widget{ + BaseWidget: wtf.BaseWidget{ + Name: "Weather", + RefreshedAt: time.Now(), + RefreshInterval: 5, + }, + } + + widget.addView() + go widget.refresher() + + return &widget +} + +/* -------------------- Exported Functions -------------------- */ + +func (widget *Widget) Refresh() { + //data := Fetch() + + widget.View.SetTitle(" 🐼 Security") + widget.RefreshedAt = time.Now() + + widget.View.Clear() + + fmt.Fprintf(widget.View, "%s", "cats and dogs") + //fmt.Fprintf(widget.View, "%s", widget.contentFrom(data)) +} + +/* -------------------- Unexported Functions -------------------- */ + +func (widget *Widget) addView() { + view := tview.NewTextView() + + view.SetBorder(true) + view.SetDynamicColors(true) + view.SetTitle(widget.Name) + + widget.View = view +} + +func (widget *Widget) refresher() { + tick := time.NewTicker(time.Duration(widget.RefreshInterval) * time.Second) + quit := make(chan struct{}) + + for { + select { + case <-tick.C: + widget.Refresh() + case <-quit: + tick.Stop() + return + } + } +} diff --git a/weather/widget.go b/weather/widget.go index 53ca68ff..1a65c7ca 100644 --- a/weather/widget.go +++ b/weather/widget.go @@ -49,7 +49,7 @@ func (widget *Widget) addView() { view.SetBorder(true) view.SetDynamicColors(true) - view.SetTitle(" Weather ") + view.SetTitle(widget.Name) widget.View = view } diff --git a/wtf.go b/wtf.go index fc23ed11..bdf05bad 100644 --- a/wtf.go +++ b/wtf.go @@ -6,6 +6,7 @@ import ( "github.com/rivo/tview" "github.com/senorprogrammer/wtf/bamboohr" "github.com/senorprogrammer/wtf/gcal" + "github.com/senorprogrammer/wtf/security" "github.com/senorprogrammer/wtf/status" "github.com/senorprogrammer/wtf/weather" ) @@ -32,6 +33,9 @@ func main() { cal := gcal.NewWidget() cal.Refresh() + sec := security.NewWidget() + sec.Refresh() + stat := status.NewWidget() stat.Refresh() @@ -47,6 +51,7 @@ func main() { grid.AddItem(cal.View, 2, 0, 1, 1, 0, 0, false) grid.AddItem(stat.View, 3, 0, 2, 3, 0, 0, false) grid.AddItem(weather.View, 0, 1, 1, 1, 0, 0, false) + grid.AddItem(sec.View, 1, 1, 1, 1, 0, 0, false) app := tview.NewApplication()