appview: show pipeline status indicators on PR stacks #279

merged
opened by oppi.li targeting master from push-vquoltwpkuny
Changed files
+46 -29
appview
pages
templates
pulls
+3 -2
appview/pages/templates/repo/pulls/fragments/pullStack.html
···
{{ i "chevrons-down-up" "w-4 h-4" }}
</span>
STACK
-
<span class="bg-gray-200 dark:bg-gray-700 rounded py-1/2 px-1 text-sm ml-1">{{ len .Stack }}</span>
+
<span class="bg-gray-200 dark:bg-gray-700 font-normal rounded py-1/2 px-1 text-sm">{{ len .Stack }}</span>
</span>
</summary>
{{ block "pullList" (list .Stack $) }} {{ end }}
···
<div class="grid grid-cols-1 rounded border border-gray-200 dark:border-gray-700 divide-y divide-gray-200 dark:divide-gray-700">
{{ range $pull := $list }}
{{ $isCurrent := false }}
+
{{ $pipeline := index $root.Pipelines $pull.LatestSha }}
{{ with $root.Pull }}
{{ $isCurrent = eq $pull.PullId $root.Pull.PullId }}
{{ end }}
···
</div>
{{ end }}
<div class="{{ if not $isCurrent }} pl-6 {{ end }} flex-grow min-w-0 w-full py-2">
-
{{ template "repo/pulls/fragments/summarizedHeader" $pull }}
+
{{ template "repo/pulls/fragments/summarizedHeader" (list $pull $pipeline) }}
</div>
</div>
</a>
+36 -26
appview/pages/templates/repo/pulls/fragments/summarizedPullHeader.html
···
{{ define "repo/pulls/fragments/summarizedHeader" }}
-
<div class="flex text-sm items-center justify-between w-full">
-
<div class="flex items-center gap-2 min-w-0 flex-1 pr-2">
-
<div class="flex-shrink-0">
-
{{ template "repo/pulls/fragments/summarizedPullState" .State }}
+
{{ $pull := index . 0 }}
+
{{ $pipeline := index . 1 }}
+
{{ with $pull }}
+
<div class="flex text-sm items-center justify-between w-full">
+
<div class="flex items-center gap-2 min-w-0 flex-1 pr-2">
+
<div class="flex-shrink-0">
+
{{ template "repo/pulls/fragments/summarizedPullState" .State }}
+
</div>
+
<span class="truncate text-sm text-gray-800 dark:text-gray-200">
+
<span class="text-gray-500 dark:text-gray-400">#{{ .PullId }}</span>
+
{{ .Title }}
+
</span>
</div>
-
<span class="truncate text-sm text-gray-800 dark:text-gray-200">
-
<span class="text-gray-500 dark:text-gray-400">#{{ .PullId }}</span>
-
{{ .Title }}
-
</span>
-
</div>
-
<div class="flex-shrink-0">
-
{{ $latestRound := .LastRoundNumber }}
-
{{ $lastSubmission := index .Submissions $latestRound }}
-
{{ $commentCount := len $lastSubmission.Comments }}
-
<span>
-
<div class="inline-flex items-center gap-2">
-
{{ i "message-square" "w-3 h-3 md:hidden" }}
-
{{ $commentCount }}
-
<span class="hidden md:inline">comment{{if ne $commentCount 1}}s{{end}}</span>
-
</div>
-
</span>
-
<span class="mx-2 before:content-['·'] before:select-none"></span>
-
<span>
-
<span class="hidden md:inline">round</span>
-
<span class="font-mono">#{{ $latestRound }}</span>
-
</span>
+
<div class="flex-shrink-0 flex items-center">
+
{{ $latestRound := .LastRoundNumber }}
+
{{ $lastSubmission := index .Submissions $latestRound }}
+
{{ $commentCount := len $lastSubmission.Comments }}
+
{{ if $pipeline }}
+
<div class="inline-flex items-center gap-2">
+
{{ template "repo/pipelines/fragments/pipelineSymbol" $pipeline }}
+
<span class="mx-2 before:content-['·'] before:select-none"></span>
+
</div>
+
{{ end }}
+
<span>
+
<div class="inline-flex items-center gap-2">
+
{{ i "message-square" "w-3 h-3 md:hidden" }}
+
{{ $commentCount }}
+
<span class="hidden md:inline">comment{{if ne $commentCount 1}}s{{end}}</span>
+
</div>
+
</span>
+
<span class="mx-2 before:content-['·'] before:select-none"></span>
+
<span>
+
<span class="hidden md:inline">round</span>
+
<span class="font-mono">#{{ $latestRound }}</span>
+
</span>
+
</div>
</div>
-
</div>
+
{{ end }}
{{ end }}
+1 -1
appview/pages/templates/repo/pulls/pulls.html
···
<a href="/{{ $root.RepoInfo.FullName }}/pulls/{{ $pull.PullId }}" class="no-underline hover:no-underline hover:bg-gray-100/25 hover:dark:bg-gray-700/25">
<div class="flex gap-2 items-center px-6">
<div class="flex-grow min-w-0 w-full py-2">
-
{{ template "repo/pulls/fragments/summarizedHeader" $pull }}
+
{{ template "repo/pulls/fragments/summarizedHeader" (list $pull 0) }}
</div>
</div>
</a>
+6
appview/pulls/pulls.go
···
for _, s := range pull.Submissions {
shas = append(shas, s.SourceRev)
}
+
for _, p := range stack {
+
shas = append(shas, p.LatestSha())
+
}
+
for _, p := range abandonedPulls {
+
shas = append(shas, p.LatestSha())
+
}
ps, err := db.GetPipelineStatuses(
s.db,