github.com/wtfutil/wtf@v0.43.0/modules/buildkite/widget.go (about) 1 package buildkite 2 3 import ( 4 "fmt" 5 6 "github.com/rivo/tview" 7 "github.com/wtfutil/wtf/view" 8 ) 9 10 type Widget struct { 11 view.TextWidget 12 settings *Settings 13 14 builds []Build 15 err error 16 } 17 18 func NewWidget(tviewApp *tview.Application, redrawChan chan bool, pages *tview.Pages, settings *Settings) *Widget { 19 widget := Widget{ 20 TextWidget: view.NewTextWidget(tviewApp, redrawChan, pages, settings.Common), 21 settings: settings, 22 } 23 24 widget.initializeKeyboardControls() 25 widget.View.SetScrollable(true) 26 27 return &widget 28 } 29 30 /* -------------------- Exported Functions -------------------- */ 31 32 func (widget *Widget) Refresh() { 33 builds, err := widget.getBuilds() 34 35 if err != nil { 36 widget.err = err 37 widget.builds = nil 38 } else { 39 widget.builds = builds 40 widget.err = nil 41 } 42 43 // The last call should always be to the display function 44 widget.display() 45 } 46 47 /* -------------------- Unexported Functions -------------------- */ 48 49 func (widget *Widget) display() { 50 widget.Redraw(widget.content) 51 } 52 53 func (widget *Widget) content() (string, string, bool) { 54 title := fmt.Sprintf("%s - [green]%s", widget.CommonSettings().Title, widget.settings.orgSlug) 55 56 if widget.err != nil { 57 return title, widget.err.Error(), true 58 } 59 60 displayData := newPipelinesDisplayData(widget.builds) 61 62 return title, displayData.Content(), false 63 }