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
··· 10 {{ i "chevrons-down-up" "w-4 h-4" }} 11 </span> 12 STACK 13 - <span class="bg-gray-200 dark:bg-gray-700 rounded py-1/2 px-1 text-sm ml-1">{{ len .Stack }}</span> 14 </span> 15 </summary> 16 {{ block "pullList" (list .Stack $) }} {{ end }} ··· 41 <div class="grid grid-cols-1 rounded border border-gray-200 dark:border-gray-700 divide-y divide-gray-200 dark:divide-gray-700"> 42 {{ range $pull := $list }} 43 {{ $isCurrent := false }} 44 {{ with $root.Pull }} 45 {{ $isCurrent = eq $pull.PullId $root.Pull.PullId }} 46 {{ end }} ··· 52 </div> 53 {{ end }} 54 <div class="{{ if not $isCurrent }} pl-6 {{ end }} flex-grow min-w-0 w-full py-2"> 55 - {{ template "repo/pulls/fragments/summarizedHeader" $pull }} 56 </div> 57 </div> 58 </a>
··· 10 {{ i "chevrons-down-up" "w-4 h-4" }} 11 </span> 12 STACK 13 + <span class="bg-gray-200 dark:bg-gray-700 font-normal rounded py-1/2 px-1 text-sm">{{ len .Stack }}</span> 14 </span> 15 </summary> 16 {{ block "pullList" (list .Stack $) }} {{ end }} ··· 41 <div class="grid grid-cols-1 rounded border border-gray-200 dark:border-gray-700 divide-y divide-gray-200 dark:divide-gray-700"> 42 {{ range $pull := $list }} 43 {{ $isCurrent := false }} 44 + {{ $pipeline := index $root.Pipelines $pull.LatestSha }} 45 {{ with $root.Pull }} 46 {{ $isCurrent = eq $pull.PullId $root.Pull.PullId }} 47 {{ end }} ··· 53 </div> 54 {{ end }} 55 <div class="{{ if not $isCurrent }} pl-6 {{ end }} flex-grow min-w-0 w-full py-2"> 56 + {{ template "repo/pulls/fragments/summarizedHeader" (list $pull $pipeline) }} 57 </div> 58 </div> 59 </a>
+36 -26
appview/pages/templates/repo/pulls/fragments/summarizedPullHeader.html
··· 1 {{ define "repo/pulls/fragments/summarizedHeader" }} 2 - <div class="flex text-sm items-center justify-between w-full"> 3 - <div class="flex items-center gap-2 min-w-0 flex-1 pr-2"> 4 - <div class="flex-shrink-0"> 5 - {{ template "repo/pulls/fragments/summarizedPullState" .State }} 6 </div> 7 - <span class="truncate text-sm text-gray-800 dark:text-gray-200"> 8 - <span class="text-gray-500 dark:text-gray-400">#{{ .PullId }}</span> 9 - {{ .Title }} 10 - </span> 11 - </div> 12 13 - <div class="flex-shrink-0"> 14 - {{ $latestRound := .LastRoundNumber }} 15 - {{ $lastSubmission := index .Submissions $latestRound }} 16 - {{ $commentCount := len $lastSubmission.Comments }} 17 - <span> 18 - <div class="inline-flex items-center gap-2"> 19 - {{ i "message-square" "w-3 h-3 md:hidden" }} 20 - {{ $commentCount }} 21 - <span class="hidden md:inline">comment{{if ne $commentCount 1}}s{{end}}</span> 22 - </div> 23 - </span> 24 - <span class="mx-2 before:content-['·'] before:select-none"></span> 25 - <span> 26 - <span class="hidden md:inline">round</span> 27 - <span class="font-mono">#{{ $latestRound }}</span> 28 - </span> 29 </div> 30 - </div> 31 {{ end }} 32
··· 1 {{ define "repo/pulls/fragments/summarizedHeader" }} 2 + {{ $pull := index . 0 }} 3 + {{ $pipeline := index . 1 }} 4 + {{ with $pull }} 5 + <div class="flex text-sm items-center justify-between w-full"> 6 + <div class="flex items-center gap-2 min-w-0 flex-1 pr-2"> 7 + <div class="flex-shrink-0"> 8 + {{ template "repo/pulls/fragments/summarizedPullState" .State }} 9 + </div> 10 + <span class="truncate text-sm text-gray-800 dark:text-gray-200"> 11 + <span class="text-gray-500 dark:text-gray-400">#{{ .PullId }}</span> 12 + {{ .Title }} 13 + </span> 14 </div> 15 16 + <div class="flex-shrink-0 flex items-center"> 17 + {{ $latestRound := .LastRoundNumber }} 18 + {{ $lastSubmission := index .Submissions $latestRound }} 19 + {{ $commentCount := len $lastSubmission.Comments }} 20 + {{ if $pipeline }} 21 + <div class="inline-flex items-center gap-2"> 22 + {{ template "repo/pipelines/fragments/pipelineSymbol" $pipeline }} 23 + <span class="mx-2 before:content-['·'] before:select-none"></span> 24 + </div> 25 + {{ end }} 26 + <span> 27 + <div class="inline-flex items-center gap-2"> 28 + {{ i "message-square" "w-3 h-3 md:hidden" }} 29 + {{ $commentCount }} 30 + <span class="hidden md:inline">comment{{if ne $commentCount 1}}s{{end}}</span> 31 + </div> 32 + </span> 33 + <span class="mx-2 before:content-['·'] before:select-none"></span> 34 + <span> 35 + <span class="hidden md:inline">round</span> 36 + <span class="font-mono">#{{ $latestRound }}</span> 37 + </span> 38 + </div> 39 </div> 40 + {{ end }} 41 {{ end }} 42
+1 -1
appview/pages/templates/repo/pulls/pulls.html
··· 156 <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"> 157 <div class="flex gap-2 items-center px-6"> 158 <div class="flex-grow min-w-0 w-full py-2"> 159 - {{ template "repo/pulls/fragments/summarizedHeader" $pull }} 160 </div> 161 </div> 162 </a>
··· 156 <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"> 157 <div class="flex gap-2 items-center px-6"> 158 <div class="flex-grow min-w-0 w-full py-2"> 159 + {{ template "repo/pulls/fragments/summarizedHeader" (list $pull 0) }} 160 </div> 161 </div> 162 </a>
+6
appview/pulls/pulls.go
··· 175 for _, s := range pull.Submissions { 176 shas = append(shas, s.SourceRev) 177 } 178 179 ps, err := db.GetPipelineStatuses( 180 s.db,
··· 175 for _, s := range pull.Submissions { 176 shas = append(shas, s.SourceRev) 177 } 178 + for _, p := range stack { 179 + shas = append(shas, p.LatestSha()) 180 + } 181 + for _, p := range abandonedPulls { 182 + shas = append(shas, p.LatestSha()) 183 + } 184 185 ps, err := db.GetPipelineStatuses( 186 s.db,