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  }