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  }