github.com/wtfutil/wtf@v0.43.0/modules/cds/favorites/display.go (about)

     1  package cdsfavorites
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/ovh/cds/sdk"
     7  )
     8  
     9  func (widget *Widget) display() {
    10  	widget.TextWidget.Redraw(widget.content)
    11  }
    12  
    13  func (widget *Widget) content() (string, string, bool) {
    14  	if len(widget.View.GetHighlights()) > 0 {
    15  		widget.View.ScrollToHighlight()
    16  	} else {
    17  		widget.View.ScrollToBeginning()
    18  	}
    19  
    20  	widget.Items = make([]int64, 0)
    21  
    22  	workflow := widget.currentCDSWorkflow()
    23  	if workflow == nil {
    24  		return "", " Workflow not selected ", false
    25  	}
    26  
    27  	_, _, width, _ := widget.View.GetRect()
    28  	str := widget.settings.PaginationMarker(len(widget.workflows), widget.Idx, width) + "\n"
    29  	title := fmt.Sprintf("%s - %s", widget.CommonSettings().Title, widget.title(workflow))
    30  
    31  	str += widget.displayWorkflowRuns(workflow)
    32  
    33  	return title, str, false
    34  }
    35  
    36  func (widget *Widget) title(workflow *sdk.Workflow) string {
    37  	return fmt.Sprintf(
    38  		"[%s]%s/%s[white]",
    39  		widget.settings.Colors.TextTheme.Title,
    40  		workflow.ProjectKey, workflow.Name,
    41  	)
    42  }
    43  
    44  func (widget *Widget) displayWorkflowRuns(workflow *sdk.Workflow) string {
    45  	runs, _ := widget.client.WorkflowRunList(workflow.ProjectKey, workflow.Name, 0, 16)
    46  
    47  	widget.SetItemCount(len(runs))
    48  
    49  	if len(runs) == 0 {
    50  		return " [grey]none[white]\n"
    51  	}
    52  
    53  	content := ""
    54  	for idx, run := range runs {
    55  		var tags string
    56  		for _, tag := range run.Tags {
    57  			toadd := true
    58  			for _, v := range widget.settings.hideTags {
    59  				if v == tag.Tag {
    60  					toadd = false
    61  					break
    62  				}
    63  			}
    64  			if toadd {
    65  				tags = fmt.Sprintf("%s%s:%s ", tags, tag.Tag, tag.Value)
    66  			}
    67  		}
    68  		content += fmt.Sprintf(`[%s]["%d"]%d %-6s[""][gray] %s`, getStatusColor(run.Status), idx, run.Number, run.Status, tags)
    69  		content += "\n"
    70  		widget.Items = append(widget.Items, run.Number)
    71  	}
    72  
    73  	return content
    74  }
    75  
    76  func getStatusColor(status string) string {
    77  	switch status {
    78  	case sdk.StatusSuccess:
    79  		return "green"
    80  	case sdk.StatusBuilding, sdk.StatusWaiting:
    81  		return "blue"
    82  	case sdk.StatusFail:
    83  		return "red"
    84  	case sdk.StatusStopped:
    85  		return "red"
    86  	case sdk.StatusSkipped:
    87  		return "grey"
    88  	case sdk.StatusDisabled:
    89  		return "grey"
    90  	}
    91  	return "red"
    92  }