1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00

Add OpsGenie frame and some layout modifications

This commit is contained in:
Chris Cummer 2018-04-01 21:39:56 -07:00 committed by Chris Cummer
parent a79588e9cc
commit c856ea3c82
3 changed files with 79 additions and 12 deletions

View File

@ -35,7 +35,9 @@ func NewWidget() *Widget {
func (widget *Widget) Refresh() { func (widget *Widget) Refresh() {
data := Fetch() 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.RefreshedAt = time.Now()
widget.View.Clear() widget.View.Clear()
@ -57,8 +59,6 @@ func (widget *Widget) addView() {
func (widget *Widget) contentFrom(data map[string][]string) string { func (widget *Widget) contentFrom(data map[string][]string) string {
str := "\n" 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 + widget.formatChanges(data["changes"])
str = str + "\n" str = str + "\n"
str = str + widget.formatCommits(data["commits"]) str = str + widget.formatCommits(data["commits"])
@ -92,13 +92,9 @@ func (widget *Widget) formatChange(line string) string {
case 'D': case 'D':
line = strings.Replace(line, "D", "[red]D[white]", 1) line = strings.Replace(line, "D", "[red]D[white]", 1)
case 'M': case 'M':
line = strings.Replace(line, "M", "[blue]M[white]", 1) line = strings.Replace(line, "M", "[yellow]M[white]", 1)
case 'R': case 'R':
line = strings.Replace(line, "R", "[purple]R[white]", 1) 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: default:
line = line line = line
} }

66
opsgenie/widget.go Normal file
View File

@ -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
}
}
}

11
wtf.go
View File

@ -7,6 +7,7 @@ import (
"github.com/senorprogrammer/wtf/bamboohr" "github.com/senorprogrammer/wtf/bamboohr"
"github.com/senorprogrammer/wtf/gcal" "github.com/senorprogrammer/wtf/gcal"
"github.com/senorprogrammer/wtf/git" "github.com/senorprogrammer/wtf/git"
"github.com/senorprogrammer/wtf/opsgenie"
"github.com/senorprogrammer/wtf/security" "github.com/senorprogrammer/wtf/security"
"github.com/senorprogrammer/wtf/status" "github.com/senorprogrammer/wtf/status"
"github.com/senorprogrammer/wtf/weather" "github.com/senorprogrammer/wtf/weather"
@ -37,6 +38,9 @@ func main() {
git := git.NewWidget() git := git.NewWidget()
git.Refresh() git.Refresh()
opsgenie := opsgenie.NewWidget()
opsgenie.Refresh()
sec := security.NewWidget() sec := security.NewWidget()
sec.Refresh() sec.Refresh()
@ -47,16 +51,17 @@ func main() {
weather.Refresh() weather.Refresh()
grid := tview.NewGrid() grid := tview.NewGrid()
grid.SetRows(9, 9, 33, 3) // How _high_ the row is, in terminal rows 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.SetColumns(40, 40) // How _wide_ the column is, in terminal columns
grid.SetBorder(false) grid.SetBorder(false)
grid.AddItem(bamboo.View, 0, 0, 2, 1, 0, 0, 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(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(weather.View, 0, 1, 1, 1, 0, 0, false)
grid.AddItem(sec.View, 1, 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() app := tview.NewApplication()