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 }