From 35e7fa01284dfa6184104bfdb5d200fc4733a8a9 Mon Sep 17 00:00:00 2001 From: Chris Cummer Date: Sun, 1 Apr 2018 22:49:38 -0700 Subject: [PATCH] Add JIRA frame --- jira/widget.go | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++ wtf.go | 13 +++++++--- 2 files changed, 75 insertions(+), 4 deletions(-) create mode 100644 jira/widget.go diff --git a/jira/widget.go b/jira/widget.go new file mode 100644 index 00000000..25b706b1 --- /dev/null +++ b/jira/widget.go @@ -0,0 +1,66 @@ +package jira + +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: "JIRA", + RefreshedAt: time.Now(), + RefreshInterval: 8, + }, + } + + widget.addView() + go widget.refresher() + + return &widget +} + +/* -------------------- Exported Functions -------------------- */ + +func (widget *Widget) Refresh() { + widget.View.SetTitle(" JIRA ") + widget.RefreshedAt = time.Now() + + widget.View.Clear() + fmt.Fprintf(widget.View, "%s", "jira") +} + +/* -------------------- 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.Hour) + quit := make(chan struct{}) + + for { + select { + case <-tick.C: + widget.Refresh() + case <-quit: + tick.Stop() + return + } + } +} diff --git a/wtf.go b/wtf.go index 8899a7b9..36e348a5 100644 --- a/wtf.go +++ b/wtf.go @@ -7,6 +7,7 @@ import ( "github.com/senorprogrammer/wtf/bamboohr" "github.com/senorprogrammer/wtf/gcal" "github.com/senorprogrammer/wtf/git" + "github.com/senorprogrammer/wtf/jira" "github.com/senorprogrammer/wtf/opsgenie" "github.com/senorprogrammer/wtf/security" "github.com/senorprogrammer/wtf/status" @@ -38,6 +39,9 @@ func main() { git := git.NewWidget() git.Refresh() + jira := jira.NewWidget() + jira.Refresh() + opsgenie := opsgenie.NewWidget() opsgenie.Refresh() @@ -51,17 +55,18 @@ func main() { weather.Refresh() grid := tview.NewGrid() - grid.SetRows(9, 9, 9, 24, 3) // How _high_ the row is, in terminal rows - grid.SetColumns(40, 40) // How _wide_ the column is, in terminal columns + grid.SetRows(9, 9, 9, 9, 15, 3) // How _high_ the row is, in terminal rows + grid.SetColumns(40, 40) // How _wide_ the column is, in terminal columns grid.SetBorder(false) grid.AddItem(bamboo.View, 0, 0, 2, 1, 0, 0, false) - grid.AddItem(cal.View, 2, 0, 2, 1, 0, 0, false) + grid.AddItem(cal.View, 2, 0, 3, 1, 0, 0, false) grid.AddItem(git.View, 0, 2, 3, 1, 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) grid.AddItem(opsgenie.View, 2, 1, 1, 1, 0, 0, false) - grid.AddItem(stat.View, 4, 0, 3, 3, 0, 0, false) + grid.AddItem(jira.View, 3, 1, 1, 1, 0, 0, false) + grid.AddItem(stat.View, 5, 0, 3, 3, 0, 0, false) app := tview.NewApplication()