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

Closes #37. Help into Git and Github modules

This commit is contained in:
Chris Cummer 2018-05-14 17:05:53 -07:00
parent c7ff101e08
commit 5353d6ddf7
5 changed files with 78 additions and 18 deletions

View File

@ -47,8 +47,9 @@ func Fetch() (*calendar.Events, error) {
return nil, err return nil, err
} }
t := fromMidnight().Format(time.RFC3339) startTime := fromMidnight().Format(time.RFC3339)
events, err := srv.Events.List("primary").ShowDeleted(false).SingleEvents(true).TimeMin(t).MaxResults(int64(Config.UInt("wtf.mods.gcal.eventCount", 10))).OrderBy("startTime").Do() eventLimit := int64(Config.UInt("wtf.mods.gcal.eventCount", 10))
events, err := srv.Events.List("primary").ShowDeleted(false).SingleEvents(true).TimeMin(startTime).MaxResults(eventLimit).OrderBy("startTime").Do()
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -79,10 +79,11 @@ func (widget *Widget) contentFrom(events *calendar.Events) string {
conflict := widget.conflicts(event, events) conflict := widget.conflicts(event, events)
str = str + fmt.Sprintf( str = str + fmt.Sprintf(
"%s [%s]%s[white]\n [%s]%s %s[white]\n\n", "%s [%s]%s[white]\n %s[%s]%s %s[white]\n\n",
widget.dayDivider(event, prevEvent), widget.dayDivider(event, prevEvent),
widget.titleColor(event), widget.titleColor(event),
widget.eventSummary(event, conflict), widget.eventSummary(event, conflict),
widget.location(event),
widget.descriptionColor(event), widget.descriptionColor(event),
widget.eventTimestamp(event), widget.eventTimestamp(event),
widget.until(event), widget.until(event),
@ -176,6 +177,22 @@ func (widget *Widget) titleColor(event *calendar.Event) string {
return color return color
} }
func (widget *Widget) location(event *calendar.Event) string {
if Config.UBool("wtf.mods.gcal.withLocation", true) == false {
return ""
}
if event.Location == "" {
return ""
}
return fmt.Sprintf(
"[%s]%s\n ",
widget.descriptionColor(event),
event.Location,
)
}
// until returns the number of hours or days until the event // until returns the number of hours or days until the event
// If the event is in the past, returns nil // If the event is in the past, returns nil
func (widget *Widget) until(event *calendar.Event) string { func (widget *Widget) until(event *calendar.Event) string {

View File

@ -5,6 +5,7 @@ import (
"github.com/gdamore/tcell" "github.com/gdamore/tcell"
"github.com/olebedev/config" "github.com/olebedev/config"
"github.com/rivo/tview"
"github.com/senorprogrammer/wtf/wtf" "github.com/senorprogrammer/wtf/wtf"
) )
@ -25,14 +26,19 @@ const helpText = `
type Widget struct { type Widget struct {
wtf.TextWidget wtf.TextWidget
app *tview.Application
Data []*GitRepo Data []*GitRepo
Idx int Idx int
pages *tview.Pages
} }
func NewWidget() *Widget { func NewWidget(app *tview.Application, pages *tview.Pages) *Widget {
widget := Widget{ widget := Widget{
TextWidget: wtf.NewTextWidget(" Git ", "git", true), TextWidget: wtf.NewTextWidget(" Git ", "git", true),
app: app,
Idx: 0, Idx: 0,
pages: pages,
} }
widget.View.SetInputCapture(widget.keyboardIntercept) widget.View.SetInputCapture(widget.keyboardIntercept)
@ -99,6 +105,9 @@ func (widget *Widget) gitRepos(repoPaths []string) []*GitRepo {
func (widget *Widget) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey { func (widget *Widget) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
switch string(event.Rune()) { switch string(event.Rune()) {
case "/":
widget.showHelp()
return nil
case "h": case "h":
widget.Prev() widget.Prev()
return nil return nil
@ -118,3 +127,15 @@ func (widget *Widget) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
return event return event
} }
} }
func (widget *Widget) showHelp() {
closeFunc := func() {
widget.pages.RemovePage("help")
widget.app.SetFocus(widget.View)
}
modal := wtf.NewBillboardModal(helpText, closeFunc)
widget.pages.AddPage("help", modal, false, true)
widget.app.SetFocus(modal)
}

View File

@ -5,6 +5,7 @@ import (
"github.com/gdamore/tcell" "github.com/gdamore/tcell"
"github.com/olebedev/config" "github.com/olebedev/config"
"github.com/rivo/tview"
"github.com/senorprogrammer/wtf/wtf" "github.com/senorprogrammer/wtf/wtf"
) )
@ -12,7 +13,7 @@ import (
var Config *config.Config var Config *config.Config
const helpText = ` const helpText = `
Keyboard commands for Git: Keyboard commands for Github:
/: Show/hide this help window /: Show/hide this help window
h: Previous git repository h: Previous git repository
@ -26,14 +27,19 @@ const helpText = `
type Widget struct { type Widget struct {
wtf.TextWidget wtf.TextWidget
app *tview.Application
Data []*GithubRepo Data []*GithubRepo
Idx int Idx int
pages *tview.Pages
} }
func NewWidget() *Widget { func NewWidget(app *tview.Application, pages *tview.Pages) *Widget {
widget := Widget{ widget := Widget{
TextWidget: wtf.NewTextWidget(" Github ", "github", true), TextWidget: wtf.NewTextWidget(" Github ", "github", true),
app: app,
Idx: 0, Idx: 0,
pages: pages,
} }
widget.View.SetInputCapture(widget.keyboardIntercept) widget.View.SetInputCapture(widget.keyboardIntercept)
@ -99,6 +105,9 @@ func (widget *Widget) currentData() *GithubRepo {
func (widget *Widget) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey { func (widget *Widget) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
switch string(event.Rune()) { switch string(event.Rune()) {
case "/":
widget.showHelp()
return nil
case "h": case "h":
widget.Prev() widget.Prev()
return nil return nil
@ -121,3 +130,15 @@ func (widget *Widget) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
return event return event
} }
} }
func (widget *Widget) showHelp() {
closeFunc := func() {
widget.pages.RemovePage("help")
widget.app.SetFocus(widget.View)
}
modal := wtf.NewBillboardModal(helpText, closeFunc)
widget.pages.AddPage("help", modal, false, true)
widget.app.SetFocus(modal)
}

4
wtf.go
View File

@ -186,8 +186,8 @@ func main() {
bamboohr.NewWidget(), bamboohr.NewWidget(),
clocks.NewWidget(), clocks.NewWidget(),
gcal.NewWidget(), gcal.NewWidget(),
git.NewWidget(), git.NewWidget(app, pages),
github.NewWidget(), github.NewWidget(app, pages),
jira.NewWidget(), jira.NewWidget(),
newrelic.NewWidget(), newrelic.NewWidget(),
opsgenie.NewWidget(), opsgenie.NewWidget(),