Skip to content

Show dropdown with all statuses for commit #13977

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 19 commits into from
Dec 20, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion integrations/repo_commits_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ func doTestRepoCommitWithStatus(t *testing.T, state string, classes ...string) {

doc = NewHTMLParser(t, resp.Body)
// Check if commit status is displayed in message column
sel := doc.doc.Find("#commits-table tbody tr td.message i.commit-status")
sel := doc.doc.Find("#commits-table tbody tr td.message a.commit-statuses-trigger i.commit-status")
assert.Equal(t, sel.Length(), 1)
for _, class := range classes {
assert.True(t, sel.HasClass(class))
Expand Down
4 changes: 3 additions & 1 deletion models/commit_status.go
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,8 @@ func NewCommitStatus(opts NewCommitStatusOptions) error {

// SignCommitWithStatuses represents a commit with validation of signature and status state.
type SignCommitWithStatuses struct {
Status *CommitStatus
Status *CommitStatus
Statuses []*CommitStatus
*SignCommit
}

Expand All @@ -272,6 +273,7 @@ func ParseCommitsWithStatus(oldCommits *list.List, repo *Repository) *list.List
if err != nil {
log.Error("GetLatestCommitStatus: %v", err)
} else {
commit.Statuses = statuses
commit.Status = CalcCommitStatus(statuses)
}

Expand Down
1 change: 1 addition & 0 deletions routers/repo/blame.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ func RefBlame(ctx *context.Context) {
blob := entry.Blob()

ctx.Data["LatestCommitStatus"] = models.CalcCommitStatus(statuses)
ctx.Data["LatestCommitStatuses"] = statuses

ctx.Data["Paths"] = paths
ctx.Data["TreeLink"] = treeLink
Expand Down
1 change: 1 addition & 0 deletions routers/repo/commit.go
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,7 @@ func Diff(ctx *context.Context) {
}

ctx.Data["CommitStatus"] = models.CalcCommitStatus(statuses)
ctx.Data["CommitStatuses"] = statuses

diff, err := gitdiff.GetDiffCommit(repoPath,
commitID, setting.Git.MaxGitDiffLines,
Expand Down
3 changes: 2 additions & 1 deletion routers/repo/issue.go
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,8 @@ func issues(ctx *context.Context, milestoneID, projectID int64, isPullOption uti
return
}

commitStatus[issues[i].PullRequest.ID], _ = pull_service.GetLastCommitStatus(issues[i].PullRequest)
var statuses, _ = pull_service.GetLastCommitStatus(issues[i].PullRequest)
commitStatus[issues[i].PullRequest.ID] = models.CalcCommitStatus(statuses)
}
}

Expand Down
1 change: 1 addition & 0 deletions routers/repo/view.go
Original file line number Diff line number Diff line change
Expand Up @@ -359,6 +359,7 @@ func renderDirectory(ctx *context.Context, treeLink string) {
}

ctx.Data["LatestCommitStatus"] = models.CalcCommitStatus(statuses)
ctx.Data["LatestCommitStatuses"] = statuses

// Check permission to add or upload new file.
if ctx.Repo.CanWrite(models.UnitTypeCode) && ctx.Repo.IsViewBranch {
Expand Down
3 changes: 2 additions & 1 deletion routers/user/home.go
Original file line number Diff line number Diff line change
Expand Up @@ -563,7 +563,8 @@ func Issues(ctx *context.Context) {
issue.Repo = showReposMap[issue.RepoID]

if isPullList {
commitStatus[issue.PullRequest.ID], _ = pull_service.GetLastCommitStatus(issue.PullRequest)
var statuses, _ = pull_service.GetLastCommitStatus(issue.PullRequest)
commitStatus[issue.PullRequest.ID] = models.CalcCommitStatus(statuses)
}
}

Expand Down
6 changes: 3 additions & 3 deletions services/pull/pull.go
Original file line number Diff line number Diff line change
Expand Up @@ -640,8 +640,8 @@ func GetCommitMessages(pr *models.PullRequest) string {
return stringBuilder.String()
}

// GetLastCommitStatus returns the last commit status for this pull request.
func GetLastCommitStatus(pr *models.PullRequest) (status *models.CommitStatus, err error) {
// GetLastCommitStatus returns list of commit statuses for latest commit on this pull request.
func GetLastCommitStatus(pr *models.PullRequest) (status []*models.CommitStatus, err error) {
if err = pr.LoadBaseRepo(); err != nil {
return nil, err
}
Expand All @@ -666,7 +666,7 @@ func GetLastCommitStatus(pr *models.PullRequest) (status *models.CommitStatus, e
if err != nil {
return nil, err
}
return models.CalcCommitStatus(statusList), nil
return statusList, nil
}

// IsHeadEqualWithBranch returns if the commits of branchName are available in pull request head
Expand Down
2 changes: 1 addition & 1 deletion templates/repo/commit_page.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
{{.i18n.Tr "repo.diff.browse_source"}}
</a>
{{end}}
<h3><span class="message-wrapper"><span class="commit-summary" title="{{.Commit.Summary}}">{{RenderCommitMessage .Commit.Message $.RepoLink $.Repository.ComposeMetas}}</span></span>{{template "repo/commit_status" .CommitStatus}}</h3>
<h3><span class="message-wrapper"><span class="commit-summary" title="{{.Commit.Summary}}">{{RenderCommitMessage .Commit.Message $.RepoLink $.Repository.ComposeMetas}}</span></span>{{template "repo/commit_statuses" dict "Status" .CommitStatus "Statuses" .CommitStatuses "root" $}}</h3>
{{if IsMultilineCommitMessage .Commit.Message}}
<pre class="commit-body">{{RenderCommitBody .Commit.Message $.RepoLink $.Repository.ComposeMetas}}</pre>
{{end}}
Expand Down
10 changes: 5 additions & 5 deletions templates/repo/commit_status.tmpl
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
{{if eq .State "pending"}}
<a class="commit-status-link" href="{{.TargetURL}}" target="_blank" rel="noopener noreferrer"><i class="commit-status circle icon yellow"></i></a>
<i class="commit-status circle icon yellow"></i>
{{end}}
{{if eq .State "success"}}
<a class="commit-status-link" href="{{.TargetURL}}" target="_blank" rel="noopener noreferrer"><i class="commit-status check icon green"></i></a>
<i class="commit-status check icon green"></i>
{{end}}
{{if eq .State "error"}}
<a class="commit-status-link" href="{{.TargetURL}}" target="_blank" rel="noopener noreferrer"><i class="commit-status warning icon red"></i></a>
<i class="commit-status warning icon red"></i>
{{end}}
{{if eq .State "failure"}}
<a class="commit-status-link" href="{{.TargetURL}}" target="_blank" rel="noopener noreferrer"><i class="commit-status remove icon red"></i></a>
<i class="commit-status remove icon red"></i>
{{end}}
{{if eq .State "warning"}}
<a class="commit-status-link" href="{{.TargetURL}}" target="_blank" rel="noopener noreferrer"><i class="commit-status warning sign icon yellow"></i></a>
<i class="commit-status warning sign icon yellow"></i>
{{end}}
14 changes: 14 additions & 0 deletions templates/repo/commit_statuses.tmpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<a class="ui link commit-statuses-trigger">{{template "repo/commit_status" .Status}}</a>
<div class="ui popup very wide fixed basic commit-statuses">
<div class="ui relaxed list divided">
{{range .Statuses}}
<div class="ui item singular-status">
<span>{{template "repo/commit_status" .}}</span>
<span class="ui">{{.Context}} <span class="text grey">{{.Description}}</span></span>
{{if .TargetURL}}
<div class="ui right"><a href="{{.TargetURL}}" target="_blank" rel="noopener noreferrer">{{$.root.i18n.Tr "repo.pulls.status_checks_details"}}</a></div>
{{end}}
</div>
{{end}}
</div>
</div>
2 changes: 1 addition & 1 deletion templates/repo/commits_list.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
<button class="basic compact mini ui icon button commit-button"><i class="ellipsis horizontal icon"></i></button>
{{end}}
{{if eq (CommitType .) "SignCommitWithStatuses"}}
{{template "repo/commit_status" .Status}}
{{template "repo/commit_statuses" dict "Status" .Status "Statuses" .Statuses "root" $}}
{{end}}
{{if IsMultilineCommitMessage .Message}}
<pre class="commit-body" style="display: none;">{{RenderCommitBody .Message $.RepoLink $.Repository.ComposeMetas}}</pre>
Expand Down
4 changes: 2 additions & 2 deletions templates/repo/commits_list_small.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@

<span class="ui float right shabox">
{{if eq (CommitType .) "SignCommitWithStatuses"}}
{{template "repo/commit_status" .Status}}
{{end}}
{{template "repo/commit_statuses" dict "Status" .Status "Statuses" .Statuses "root" $.root}}
{{end}}
{{$class := "ui sha label"}}
{{if .Signature}}
{{$class = (printf "%s%s" $class " isSigned")}}
Expand Down
2 changes: 1 addition & 1 deletion templates/repo/view_list.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
{{template "repo/shabox_badge" dict "root" $ "verification" .LatestCommitVerification}}
{{end}}
</a>
{{template "repo/commit_status" .LatestCommitStatus}}
{{template "repo/commit_statuses" dict "Status" .LatestCommitStatus "Statuses" .LatestCommitStatuses "root" $}}
{{ $commitLink:= printf "%s/commit/%s" .RepoLink .LatestCommit.ID }}
<span class="grey commit-summary" title="{{.LatestCommit.Summary}}"><span class="message-wrapper">{{RenderCommitMessageLinkSubject .LatestCommit.Message $.RepoLink $commitLink $.Repository.ComposeMetas}}</span>
{{if IsMultilineCommitMessage .LatestCommit.Message}}
Expand Down
12 changes: 7 additions & 5 deletions templates/shared/issuelist.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,14 @@
</div>
<div class="issue-item-main f1 fc df">
<div class="issue-item-top-row df ac fw">
<a class="title mr-3" href="{{if .HTMLURL}}{{.HTMLURL}}{{else}}{{$.Link}}/{{.Index}}{{end}}">{{RenderEmoji .Title}}</a>
{{if .IsPull }}
{{if (index $.CommitStatus .PullRequest.ID)}}
{{template "repo/commit_status" (index $.CommitStatus .PullRequest.ID)}}
<a class="title mr-3" href="{{if .HTMLURL}}{{.HTMLURL}}{{else}}{{$.Link}}/{{.Index}}{{end}}">
{{RenderEmoji .Title}}
{{if .IsPull }}
{{if (index $.CommitStatus .PullRequest.ID)}}
{{template "repo/commit_status" (index $.CommitStatus .PullRequest.ID)}}
{{end}}
{{end}}
{{end}}
</a>
<span class="labels-list">
{{range .Labels}}
<a class="ui label" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&state={{$.State}}&labels={{.ID}}{{if ne $.listType "milestone"}}&milestone={{$.MilestoneID}}{{end}}&assignee={{$.AssigneeID}}" style="color: {{.ForegroundColor}}; background-color: {{.Color}}" title="{{.Description | RenderEmojiPlain}}">{{.Name | RenderEmoji}}</a>
Expand Down
9 changes: 9 additions & 0 deletions web_src/js/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -759,6 +759,15 @@ async function initRepository() {
});
}

// Commit statuses
$('.commit-statuses-trigger').each(function () {
$(this)
.popup({
on: 'click',
position: ($('.repository.file.list').length > 0 ? 'right center' : 'left center'),
});
});

// File list and commits
if ($('.repository.file.list').length > 0 || ('.repository.commits').length > 0) {
initFilterBranchTagDropdown('.choose.reference .dropdown');
Expand Down
6 changes: 5 additions & 1 deletion web_src/less/_base.less
Original file line number Diff line number Diff line change
Expand Up @@ -530,6 +530,10 @@ a.ui.card:hover,
border-radius: var(--border-radius);
}

.ui.divided.list > .item {
border-color: var(--color-secondary);
}

.dont-break-out {
overflow-wrap: break-word;
word-wrap: break-word;
Expand Down Expand Up @@ -1164,7 +1168,7 @@ footer {
}
}

.center {
.center:not(.popup) {
text-align: center;
}

Expand Down
4 changes: 4 additions & 0 deletions web_src/less/_repository.less
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
.repository {
.commit-statuses .list > .item {
line-height: 2;
}

.repo-header {
.ui.compact.menu {
margin-left: 1rem;
Expand Down