github.com/wtfutil/wtf@v0.43.0/modules/gerrit/display.go (about) 1 package gerrit 2 3 import ( 4 "fmt" 5 ) 6 7 func (widget *Widget) display() { 8 widget.Redraw(widget.content) 9 } 10 11 func (widget *Widget) content() (string, string, bool) { 12 title := widget.CommonSettings().Title 13 if widget.err != nil { 14 return title, widget.err.Error(), true 15 } 16 17 project := widget.currentGerritProject() 18 if project == nil { 19 return title, "Gerrit project data is unavailable", true 20 } 21 22 title = fmt.Sprintf("%s- %s", widget.CommonSettings().Title, widget.title(project)) 23 24 _, _, width, _ := widget.View.GetRect() 25 str := widget.settings.PaginationMarker(len(widget.GerritProjects), widget.Idx, width) + "\n" 26 str += fmt.Sprintf(" [%s]Stats[white]\n", widget.settings.Colors.Subheading) 27 str += widget.displayStats(project) 28 str += "\n" 29 str += fmt.Sprintf(" [%s]Open Incoming Reviews[white]\n", widget.settings.Colors.Subheading) 30 str += widget.displayMyIncomingReviews(project) 31 str += "\n" 32 str += fmt.Sprintf(" [%s]My Outgoing Reviews[white]\n", widget.settings.Colors.Subheading) 33 str += widget.displayMyOutgoingReviews(project) 34 35 return title, str, false 36 } 37 38 func (widget *Widget) displayMyIncomingReviews(project *GerritProject) string { 39 if len(project.IncomingReviews) == 0 { 40 return " [grey]none[white]\n" 41 } 42 43 str := "" 44 for idx, r := range project.IncomingReviews { 45 str += fmt.Sprintf(" [%s] [green]%d[white] [%s] %s\n", widget.rowColor(idx), r.Number, widget.rowColor(idx), r.Subject) 46 } 47 48 return str 49 } 50 51 func (widget *Widget) displayMyOutgoingReviews(project *GerritProject) string { 52 if len(project.OutgoingReviews) == 0 { 53 return " [grey]none[white]\n" 54 } 55 56 str := "" 57 for idx, r := range project.OutgoingReviews { 58 str += fmt.Sprintf(" [%s] [green]%d[white] [%s] %s\n", widget.rowColor(idx+len(project.IncomingReviews)), r.Number, widget.rowColor(idx+len(project.IncomingReviews)), r.Subject) 59 } 60 61 return str 62 } 63 64 func (widget *Widget) displayStats(project *GerritProject) string { 65 str := fmt.Sprintf( 66 " Reviews: %d\n", 67 project.ReviewCount, 68 ) 69 70 return str 71 } 72 73 func (widget *Widget) rowColor(idx int) string { 74 if widget.View.HasFocus() && (idx == widget.selected) { 75 return widget.settings.DefaultFocusedRowColor() 76 } 77 78 return widget.settings.RowColor(idx) 79 } 80 81 func (widget *Widget) title(project *GerritProject) string { 82 return fmt.Sprintf("[green]%s [white]", project.Path) 83 }