From c856ea3c82bee0c87ea6fb5a07fdc2824caecaf6 Mon Sep 17 00:00:00 2001 From: Chris Cummer Date: Sun, 1 Apr 2018 21:39:56 -0700 Subject: [PATCH] Add OpsGenie frame and some layout modifications --- git/widget.go | 12 +++------ opsgenie/widget.go | 66 ++++++++++++++++++++++++++++++++++++++++++++++ wtf.go | 13 ++++++--- 3 files changed, 79 insertions(+), 12 deletions(-) create mode 100644 opsgenie/widget.go diff --git a/git/widget.go b/git/widget.go index 2f99fd57..b1ece2d4 100644 --- a/git/widget.go +++ b/git/widget.go @@ -35,7 +35,9 @@ func NewWidget() *Widget { func (widget *Widget) Refresh() { data := Fetch() - widget.View.SetTitle(" 🤞 Git ") + str := fmt.Sprintf("[green]%s[white] [dodgerblue]%s[white]\n", data["repo"][0], data["branch"][0]) + + widget.View.SetTitle(fmt.Sprintf(" 🤞 %s ", str)) widget.RefreshedAt = time.Now() widget.View.Clear() @@ -57,8 +59,6 @@ func (widget *Widget) addView() { func (widget *Widget) contentFrom(data map[string][]string) string { str := "\n" - str = str + fmt.Sprintf(" [green]%s[white] [dodgerblue]%s[white]\n", data["repo"][0], data["branch"][0]) - str = str + widget.formatChanges(data["changes"]) str = str + "\n" str = str + widget.formatCommits(data["commits"]) @@ -92,13 +92,9 @@ func (widget *Widget) formatChange(line string) string { case 'D': line = strings.Replace(line, "D", "[red]D[white]", 1) case 'M': - line = strings.Replace(line, "M", "[blue]M[white]", 1) + line = strings.Replace(line, "M", "[yellow]M[white]", 1) case 'R': line = strings.Replace(line, "R", "[purple]R[white]", 1) - case '!': - line = strings.Replace(line, "!", "[yellow]![white]", 1) - case '?': - line = strings.Replace(line, "?", "[yellow]?[white]", 1) default: line = line } diff --git a/opsgenie/widget.go b/opsgenie/widget.go new file mode 100644 index 00000000..85e73cb6 --- /dev/null +++ b/opsgenie/widget.go @@ -0,0 +1,66 @@ +package opsgenie + +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: "OpsGenie", + RefreshedAt: time.Now(), + RefreshInterval: 8, + }, + } + + widget.addView() + go widget.refresher() + + return &widget +} + +/* -------------------- Exported Functions -------------------- */ + +func (widget *Widget) Refresh() { + widget.View.SetTitle(" OpsGenie ") + widget.RefreshedAt = time.Now() + + widget.View.Clear() + fmt.Fprintf(widget.View, "%s", "opsgenie") +} + +/* -------------------- 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 1611724e..8899a7b9 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/opsgenie" "github.com/senorprogrammer/wtf/security" "github.com/senorprogrammer/wtf/status" "github.com/senorprogrammer/wtf/weather" @@ -37,6 +38,9 @@ func main() { git := git.NewWidget() git.Refresh() + opsgenie := opsgenie.NewWidget() + opsgenie.Refresh() + sec := security.NewWidget() sec.Refresh() @@ -47,16 +51,17 @@ func main() { weather.Refresh() grid := tview.NewGrid() - grid.SetRows(9, 9, 33, 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, 24, 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, 1, 1, 0, 0, false) + grid.AddItem(cal.View, 2, 0, 2, 1, 0, 0, false) grid.AddItem(git.View, 0, 2, 3, 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) + grid.AddItem(opsgenie.View, 2, 1, 1, 1, 0, 0, false) + grid.AddItem(stat.View, 4, 0, 3, 3, 0, 0, false) app := tview.NewApplication()