this repo has no description
1{{ define "title" }} 2 {{ .Pull.Title }} &middot; pull #{{ .Pull.PullId }} &middot; {{ .RepoInfo.FullName }} 3{{ end }} 4 5{{ define "extrameta" }} 6 {{ template "repo/pulls/fragments/og" (dict "RepoInfo" .RepoInfo "Pull" .Pull) }} 7{{ end }} 8 9{{ define "mainLayout" }} 10 <div class="px-1 col-span-full flex-grow flex flex-col gap-4"> 11 {{ block "contentLayout" . }} 12 {{ block "content" . }}{{ end }} 13 {{ end }} 14 </div> 15{{ end }} 16 17{{ define "repoContentLayout" }} 18 <div class="grid grid-cols-1 md:grid-cols-10 gap-y-2 gap-x-4 w-full"> 19 <div class="col-span-1 md:col-span-7"> 20 <section class="bg-white dark:bg-gray-800 p-6 rounded relative w-full mx-auto dark:text-white h-full"> 21 {{ block "repoContent" . }}{{ end }} 22 </section> 23 {{ block "repoAfter" . }}{{ end }} 24 </div> 25 <div class="col-span-1 md:col-span-3 flex flex-col gap-6"> 26 {{ template "repo/fragments/labelPanel" 27 (dict "RepoInfo" $.RepoInfo 28 "Defs" $.LabelDefs 29 "Subject" $.Pull.AtUri 30 "State" $.Pull.Labels) }} 31 {{ template "repo/fragments/participants" $.Pull.Participants }} 32 {{ template "repo/fragments/backlinks" 33 (dict "RepoInfo" $.RepoInfo 34 "Backlinks" $.Backlinks) }} 35 {{ template "repo/fragments/externalLinkPanel" $.Pull.AtUri }} 36 </div> 37 38 <style> 39 #filesToggle:checked ~ div label[for="filesToggle"] .show-text { display: none; } 40 #filesToggle:checked ~ div label[for="filesToggle"] .hide-text { display: inline; } 41 #filesToggle:not(:checked) ~ div label[for="filesToggle"] .hide-text { display: none; } 42 43 #filesToggle:checked ~ div div#files { width: 10vw; margin-right: 1rem; } 44 #filesToggle:not(:checked) ~ div div#files { width: 0; display: hidden; margin-right: 0; } 45 46 #subsToggle:checked ~ div div#subs { width: 25vw; margin-left: 1rem; } 47 #subsToggle:not(:checked) ~ div div#subs { width: 0; display: hidden; margin-left: 0; } 48 </style> 49 50 <!-- Checkboxes must come first as siblings --> 51 <input type="checkbox" id="filesToggle" class="peer/files hidden" checked/> 52 <input type="checkbox" id="subsToggle" class="peer/subs hidden" checked/> 53 54 <!-- Top bar with controls --> 55 <div class="sticky top-0 z-30 bg-slate-100 dark:bg-gray-900 flex items-center gap-2 col-span-full h-12"> 56 <label for="filesToggle" class="inline-flex items-center justify-center rounded cursor-pointer p-2 text-normal font-normal normalcase"> 57 <span class="show-text">{{ i "panel-left-open" "size-5" }}</span> 58 <span class="hide-text">{{ i "panel-left-close" "size-5" }}</span> 59 </label> 60 {{ template "repo/fragments/diffStatPill" .Diff.Stat }} 61 {{ .Diff.Stat.FilesChanged }} changed file{{ if ne .Diff.Stat.FilesChanged 1 }}s{{ end }} 62 <div class="flex-grow"></div> 63 {{ template "repo/fragments/diffOpts" .DiffOpts }} 64 <label for="subsToggle" class="inline-flex items-center justify-center rounded cursor-pointer p-2"> 65 {{ i "message-square-more" "size-5" }} 66 </label> 67 </div> 68 69 <div class="flex col-span-full"> 70 <!-- left panel --> 71 <div id="files" class="w-0 overflow-hidden sticky top-12 max-h-screen overflow-y-auto pb-12"> 72 {{ template "repo/fragments/diffChangedFiles" .Diff }} 73 </div> 74 75 <!-- main content --> 76 <div class="flex-1 min-w-0 sticky top-12 pb-12"> 77 {{ template "repo/fragments/diff" (list .Diff .DiffOpts) }} 78 </div> 79 80 <!-- right panel --> 81 <div id="subs" class="w-0 overflow-hidden max-h-screen flex flex-col sticky top-12 pb-12"> 82 <div class="z-20 sticky top-0 rounded-t p-3 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700"> 83 <h2 class="font-bold uppercase">history</h2> 84 </div> 85 <div class="flex flex-col-reverse gap-4 overflow-y-auto"> 86 {{ template "submissions2" . }} 87 </div> 88 </div> 89 </div> 90 </div> 91{{ end }} 92 93{{ define "repoContent" }} 94 {{ template "repo/pulls/fragments/pullHeader" . }} 95 {{ if .Pull.IsStacked }} 96 <div class="mt-8"> 97 {{ template "repo/pulls/fragments/pullStack" . }} 98 </div> 99 {{ end }} 100{{ end }} 101 102{{ define "repoAfter" }} 103 <div id="pull-close"></div> 104 <div id="pull-reopen"></div> 105{{ end }} 106 107{{ define "submissions2" }} 108 {{ $lastIdx := sub (len .Pull.Submissions) 1 }} 109 {{ range $ridx, $item := reverse .Pull.Submissions }} 110 {{ $idx := sub $lastIdx $ridx }} 111 <div class="rounded border border-gray-200 dark:border-gray-700 w-full shadow-sm bg-gray-50 dark:bg-gray-800/50"> 112 {{ with $item }} 113 {{ $patches := .AsFormatPatch }} 114 {{ $round := .RoundNumber }} 115 <div class="rounded px-6 py-4 bg-white dark:bg-gray-800 flex gap-2"> 116 <div class="flex-shrink-0"> 117 <img 118 src="{{ tinyAvatar $.Pull.OwnerDid }}" 119 alt="" 120 class="rounded-full size-8 mr-1 border-2 border-gray-100 dark:border-gray-900" 121 /> 122 </div> 123 <!-- right column: name and body in two rows --> 124 <div class="flex-1 min-w-0 flex flex-col gap-1"> 125 <div class="flex gap-2 items-center justify-between mb-1"> 126 <span class="inline-flex items-center gap-2 text-sm text-gray-500 dark:text-gray-400"> 127 {{ resolve $.Pull.OwnerDid }} submitted v{{ $round }} 128 <span class="select-none before:content-['\00B7']"></span> 129 <a class="text-gray-500 dark:text-gray-400 hover:text-gray-500" href="#round-#{{ $round }}">{{ template "repo/fragments/shortTimeAgo" .Created }}</a> 130 </span> 131 {{ if ne $idx 0 }} 132 <a class="flex items-center gap-2 no-underline hover:no-underline text-sm" 133 hx-boost="true" 134 href="/{{ $.RepoInfo.FullName }}/pulls/{{ $.Pull.PullId }}/round/{{$round}}/interdiff"> 135 {{ i "chevrons-left-right-ellipsis" "w-4 h-4 rotate-90" }} 136 <span class="hidden md:inline">interdiff</span> 137 </a> 138 {{ end }} 139 </div> 140 <details class="group"> 141 <summary class="list-none cursor-pointer flex items-center gap-2"> 142 <span>{{ i "git-commit-horizontal" "w-4 h-4" }}</span> 143 {{ len $patches }} commit{{ if ne (len $patches) 1 }}s{{ end }} 144 </summary> 145 {{ range $patches }} 146 <div id="commit-{{.SHA}}" class="py-1 relative w-full md:max-w-3/5 md:w-fit flex flex-col text-gray-600 dark:text-gray-300"> 147 <div class="flex items-baseline gap-2"> 148 <div> 149 <!-- attempt to resolve $fullRepo: this is possible only on non-deleted forks and branches --> 150 {{ $fullRepo := "" }} 151 {{ if and $.Pull.IsForkBased $.Pull.PullSource.Repo }} 152 {{ $fullRepo = printf "%s/%s" $.Pull.OwnerDid $.Pull.PullSource.Repo.Name }} 153 {{ else if $.Pull.IsBranchBased }} 154 {{ $fullRepo = $.RepoInfo.FullName }} 155 {{ end }} 156 157 <!-- if $fullRepo was resolved, link to it, otherwise just span without a link --> 158 {{ if $fullRepo }} 159 <a href="/{{ $fullRepo }}/commit/{{ .SHA }}" class="font-mono text-gray-600 dark:text-gray-300">{{ slice .SHA 0 8 }}</a> 160 {{ else }} 161 <span class="font-mono">{{ slice .SHA 0 8 }}</span> 162 {{ end }} 163 </div> 164 165 <div> 166 <span>{{ .Title | description }}</span> 167 {{ if gt (len .Body) 0 }} 168 <button 169 class="py-1/2 px-1 mx-2 bg-gray-200 hover:bg-gray-400 rounded dark:bg-gray-700 dark:hover:bg-gray-600" 170 hx-on:click="document.getElementById('body-{{$round}}-{{.SHA}}').classList.toggle('hidden')" 171 > 172 {{ i "ellipsis" "w-3 h-3" }} 173 </button> 174 {{ end }} 175 {{ if gt (len .Body) 0 }} 176 <p id="body-{{$round}}-{{.SHA}}" class="hidden mt-1 text-sm pb-2">{{ nl2br .Body }}</p> 177 {{ end }} 178 </div> 179 </div> 180 </div> 181 {{ end }} 182 </details> 183 <div> 184 {{ block "pipelineStatus" (list $ .) }} {{ end }} 185 </div> 186 {{ if eq $lastIdx .RoundNumber }} 187 {{ block "mergeCheck" $ }} {{ end }} 188 {{ end }} 189 </div> 190 </div> 191 <div class="relative ml-10 border-l-2 border-gray-200 dark:border-gray-700"> 192 {{ range $cidx, $c := .Comments }} 193 <div id="comment-{{$c.ID}}" class="flex gap-2 -ml-4 py-4 w-full mx-auto"> 194 <!-- left column: profile picture --> 195 <div class="flex-shrink-0"> 196 <img 197 src="{{ tinyAvatar $c.OwnerDid }}" 198 alt="" 199 class="rounded-full size-8 mr-1 border-2 border-gray-100 dark:border-gray-900" 200 /> 201 </div> 202 <!-- right column: name and body in two rows --> 203 <div class="flex-1 min-w-0"> 204 <!-- Row 1: Author and timestamp --> 205 <div class="text-sm text-gray-500 dark:text-gray-400 flex items-center gap-1"> 206 <span>{{ resolve $c.OwnerDid }}</span> 207 <span class="before:content-['·']"></span> 208 <a class="text-gray-500 dark:text-gray-400 hover:text-gray-500 dark:hover:text-gray-300" href="#comment-{{.ID}}">{{ template "repo/fragments/time" $c.Created }}</a> 209 </div> 210 <!-- Row 2: Body text --> 211 <div class="prose dark:prose-invert mt-1"> 212 {{ $c.Body | markdown }} 213 </div> 214 </div> 215 </div> 216 {{ end }} 217 </div> 218 {{ end }} 219 {{ if eq $lastIdx .RoundNumber }} 220 {{ block "mergeStatus" $ }} {{ end }} 221 {{ block "resubmitStatus" $ }} {{ end }} 222 {{ end }} 223 {{ if $.LoggedInUser }} 224 {{ template "repo/pulls/fragments/pullActions" 225 (dict 226 "LoggedInUser" $.LoggedInUser 227 "Pull" $.Pull 228 "RepoInfo" $.RepoInfo 229 "RoundNumber" .RoundNumber 230 "MergeCheck" $.MergeCheck 231 "ResubmitCheck" $.ResubmitCheck 232 "BranchDeleteStatus" $.BranchDeleteStatus 233 "Stack" $.Stack) }} 234 {{ else }} 235 <div class="bg-amber-50 dark:bg-amber-900 border border-amber-500 rounded drop-shadow-sm p-2 relative flex gap-2 items-center"> 236 <a href="/signup" class="btn-create py-0 hover:no-underline hover:text-white flex items-center gap-2"> 237 sign up 238 </a> 239 <span class="text-gray-500 dark:text-gray-400">or</span> 240 <a href="/login" class="underline">login</a> 241 to add to the discussion 242 </div> 243 {{ end }} 244 </div> 245 {{ end }} 246{{ end }} 247 248{{ define "newComment" }} 249 {{ $root := index . 0 }} 250 {{ $submission := index . 1 }} 251 <form 252 id="comment-form" 253 hx-post="/{{ $root.RepoInfo.FullName }}/pulls/{{ $root.Pull.PullId }}/round/{{ $submission.RoundNumber }}/comment" 254 hx-on::after-request="if(event.detail.successful) this.reset()" 255 > 256 <div class="bg-white dark:bg-gray-800 rounded drop-shadow-sm py-4 px-4 relative w-full"> 257 <div class="text-sm pb-2 text-gray-500 dark:text-gray-400"> 258 {{ template "user/fragments/picHandleLink" $root.LoggedInUser.Did }} 259 </div> 260 <textarea 261 id="comment-textarea" 262 name="body" 263 class="w-full p-2 rounded border border-gray-200 dark:border-gray-700" 264 placeholder="Add to the discussion" 265 rows="8" 266 ></textarea> 267 <div id="pull-comment"></div> 268 </div> 269 {{ template "replyActions" . }} 270 </form> 271{{ end }} 272 273{{ define "replyActions" }} 274 <div class="flex flex-wrap items-stretch justify-end gap-2 text-gray-500 dark:text-gray-400 text-sm"> 275 {{ template "cancel" . }} 276 {{ template "reply" . }} 277 </div> 278{{ end }} 279 280{{ define "cancel" }} 281 <button 282 class="btn text-red-500 dark:text-red-400 flex gap-2 items-center group" 283 hx-get="TODO" 284 hx-target="TODO" 285 hx-swap="outerHTML"> 286 {{ i "x" "size-4" }} 287 cancel 288 </button> 289{{ end }} 290 291{{ define "reply" }} 292 <button 293 id="TODO" 294 type="submit" 295 class="btn-create flex items-center gap-2 no-underline hover:no-underline"> 296 {{ i "reply" "w-4 h-4 inline group-[.htmx-request]:hidden" }} 297 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 298 reply 299 </button> 300{{ end }} 301 302{{ define "submissions" }} 303 {{ $lastIdx := sub (len .Pull.Submissions) 1 }} 304 {{ $targetBranch := .Pull.TargetBranch }} 305 {{ $repoName := .RepoInfo.FullName }} 306 {{ range $idx, $item := .Pull.Submissions }} 307 {{ with $item }} 308 <details {{ if eq $idx $lastIdx }}open{{ end }}> 309 <summary id="round-#{{ .RoundNumber }}" class="list-none cursor-pointer"> 310 <div class="flex flex-wrap gap-2 items-stretch"> 311 <!-- round number --> 312 <div class="rounded bg-white dark:bg-gray-800 drop-shadow-sm px-3 py-2 dark:text-white"> 313 <span class="flex items-center">{{ i "hash" "w-4 h-4" }}{{ .RoundNumber }}</span> 314 </div> 315 <!-- round summary --> 316 <div class="flex-1 rounded drop-shadow-sm bg-white dark:bg-gray-800 p-2 text-gray-500 dark:text-gray-400"> 317 <span class="gap-1 flex items-center"> 318 {{ $owner := resolve $.Pull.OwnerDid }} 319 {{ $re := "re" }} 320 {{ if eq .RoundNumber 0 }} 321 {{ $re = "" }} 322 {{ end }} 323 <span class="hidden md:inline">{{$re}}submitted</span> 324 by {{ template "user/fragments/picHandleLink" $.Pull.OwnerDid }} 325 <span class="select-none before:content-['\00B7']"></span> 326 <a class="text-gray-500 dark:text-gray-400 hover:text-gray-500" href="#round-#{{ .RoundNumber }}">{{ template "repo/fragments/shortTime" .Created }}</a> 327 <span class="select-none before:content-['·']"></span> 328 {{ $s := "s" }} 329 {{ if eq (len .Comments) 1 }} 330 {{ $s = "" }} 331 {{ end }} 332 {{ len .Comments }} comment{{$s}} 333 </span> 334 </div> 335 336 <a class="btn flex items-center gap-2 no-underline hover:no-underline p-2 group" 337 hx-boost="true" 338 href="/{{ $.RepoInfo.FullName }}/pulls/{{ $.Pull.PullId }}/round/{{.RoundNumber}}"> 339 {{ i "file-diff" "w-4 h-4" }} 340 <span class="hidden md:inline">diff</span> 341 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 342 </a> 343 {{ if ne $idx 0 }} 344 <a class="btn flex items-center gap-2 no-underline hover:no-underline p-2 group" 345 hx-boost="true" 346 href="/{{ $.RepoInfo.FullName }}/pulls/{{ $.Pull.PullId }}/round/{{.RoundNumber}}/interdiff"> 347 {{ i "chevrons-left-right-ellipsis" "w-4 h-4 rotate-90" }} 348 <span class="hidden md:inline">interdiff</span> 349 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 350 </a> 351 {{ end }} 352 <span id="interdiff-error-{{.RoundNumber}}"></span> 353 </div> 354 </summary> 355 356 {{ if .IsFormatPatch }} 357 {{ $patches := .AsFormatPatch }} 358 {{ $round := .RoundNumber }} 359 <details class="group py-2 md:ml-[3.5rem] text-gray-500 dark:text-gray-400 flex flex-col gap-2 relative text-sm"> 360 <summary class="py-1 list-none cursor-pointer hover:text-gray-500 hover:dark:text-gray-400"> 361 {{ $s := "s" }} 362 {{ if eq (len $patches) 1 }} 363 {{ $s = "" }} 364 {{ end }} 365 <div class="group-open:hidden flex items-center gap-2 ml-2"> 366 {{ i "chevrons-up-down" "w-4 h-4" }} expand {{ len $patches }} commit{{$s}} 367 </div> 368 <div class="hidden group-open:flex items-center gap-2 ml-2"> 369 {{ i "chevrons-down-up" "w-4 h-4" }} hide {{ len $patches }} commit{{$s}} 370 </div> 371 </summary> 372 {{ range $patches }} 373 <div id="commit-{{.SHA}}" class="py-1 px-2 relative w-full md:max-w-3/5 md:w-fit flex flex-col"> 374 <div class="flex items-center gap-2"> 375 {{ i "git-commit-horizontal" "w-4 h-4" }} 376 <div class="text-sm text-gray-500 dark:text-gray-400"> 377 <!-- attempt to resolve $fullRepo: this is possible only on non-deleted forks and branches --> 378 {{ $fullRepo := "" }} 379 {{ if and $.Pull.IsForkBased $.Pull.PullSource.Repo }} 380 {{ $fullRepo = printf "%s/%s" $owner $.Pull.PullSource.Repo.Name }} 381 {{ else if $.Pull.IsBranchBased }} 382 {{ $fullRepo = $.RepoInfo.FullName }} 383 {{ end }} 384 385 <!-- if $fullRepo was resolved, link to it, otherwise just span without a link --> 386 {{ if $fullRepo }} 387 <a href="/{{ $fullRepo }}/commit/{{ .SHA }}" class="font-mono text-gray-500 dark:text-gray-400">{{ slice .SHA 0 8 }}</a> 388 {{ else }} 389 <span class="font-mono">{{ slice .SHA 0 8 }}</span> 390 {{ end }} 391 </div> 392 <div class="flex items-center"> 393 <span>{{ .Title | description }}</span> 394 {{ if gt (len .Body) 0 }} 395 <button 396 class="py-1/2 px-1 mx-2 bg-gray-200 hover:bg-gray-400 rounded dark:bg-gray-700 dark:hover:bg-gray-600" 397 hx-on:click="document.getElementById('body-{{$round}}-{{.SHA}}').classList.toggle('hidden')" 398 > 399 {{ i "ellipsis" "w-3 h-3" }} 400 </button> 401 {{ end }} 402 </div> 403 </div> 404 {{ if gt (len .Body) 0 }} 405 <p id="body-{{$round}}-{{.SHA}}" class="hidden mt-1 text-sm pb-2"> 406 {{ nl2br .Body }} 407 </p> 408 {{ end }} 409 </div> 410 {{ end }} 411 </details> 412 {{ end }} 413 414 415 <div class="md:pl-[3.5rem] flex flex-col gap-2 mt-2 relative"> 416 {{ range $cidx, $c := .Comments }} 417 <div id="comment-{{$c.ID}}" class="bg-white dark:bg-gray-800 rounded drop-shadow-sm py-2 px-4 relative w-full"> 418 {{ if gt $cidx 0 }} 419 <div class="absolute left-8 -top-2 w-px h-2 bg-gray-300 dark:bg-gray-600"></div> 420 {{ end }} 421 <div class="text-sm text-gray-500 dark:text-gray-400 flex items-center gap-1"> 422 {{ template "user/fragments/picHandleLink" $c.OwnerDid }} 423 <span class="before:content-['·']"></span> 424 <a class="text-gray-500 dark:text-gray-400 hover:text-gray-500 dark:hover:text-gray-300" href="#comment-{{.ID}}">{{ template "repo/fragments/time" $c.Created }}</a> 425 </div> 426 <div class="prose dark:prose-invert"> 427 {{ $c.Body | markdown }} 428 </div> 429 </div> 430 {{ end }} 431 432 {{ block "pipelineStatus" (list $ .) }} {{ end }} 433 434 {{ if eq $lastIdx .RoundNumber }} 435 {{ block "mergeStatus" $ }} {{ end }} 436 {{ block "resubmitStatus" $ }} {{ end }} 437 {{ end }} 438 439 {{ if $.LoggedInUser }} 440 {{ template "repo/pulls/fragments/pullActions" 441 (dict 442 "LoggedInUser" $.LoggedInUser 443 "Pull" $.Pull 444 "RepoInfo" $.RepoInfo 445 "RoundNumber" .RoundNumber 446 "MergeCheck" $.MergeCheck 447 "ResubmitCheck" $.ResubmitCheck 448 "BranchDeleteStatus" $.BranchDeleteStatus 449 "Stack" $.Stack) }} 450 {{ else }} 451 <div class="bg-amber-50 dark:bg-amber-900 border border-amber-500 rounded drop-shadow-sm p-2 relative flex gap-2 items-center w-fit"> 452 <a href="/signup" class="btn-create py-0 hover:no-underline hover:text-white flex items-center gap-2"> 453 sign up 454 </a> 455 <span class="text-gray-500 dark:text-gray-400">or</span> 456 <a href="/login" class="underline">login</a> 457 to add to the discussion 458 </div> 459 {{ end }} 460 </div> 461 </details> 462 {{ end }} 463 {{ end }} 464{{ end }} 465 466{{ define "mergeCheck" }} 467 {{ $isOpen := .Pull.State.IsOpen }} 468 {{ if and $isOpen .MergeCheck .MergeCheck.Error }} 469 <div class="flex items-center gap-2"> 470 {{ i "triangle-alert" "w-4 h-4 text-red-500 dark:text-red-300" }} 471 {{ .MergeCheck.Error }} 472 </div> 473 {{ else if and $isOpen .MergeCheck .MergeCheck.IsConflicted }} 474 <details class="group"> 475 <summary class="flex items-center justify-between cursor-pointer list-none"> 476 <div class="flex items-center gap-2 "> 477 {{ i "triangle-alert" "w-4 h-4" }} 478 <span class="font-medium">merge conflicts detected</span> 479 </div> 480 <div> 481 <span class="group-open:hidden inline">{{ i "chevrons-up-down" "w-4 h-4" }}</span> 482 <span class="hidden group-open:inline">{{ i "chevrons-down-up" "w-4 h-4" }}</span> 483 </div> 484 </summary> 485 {{ if gt (len .MergeCheck.Conflicts) 0 }} 486 <ul class="space-y-1 mt-2"> 487 {{ range .MergeCheck.Conflicts }} 488 {{ if .Filename }} 489 <li class="flex items-center"> 490 {{ i "file-warning" "inline-flex w-4 h-4 mr-1.5 text-red-500 dark:text-red-300 flex-shrink-0" }} 491 <span class="font-mono" style="word-break: keep-all; overflow-wrap: break-word;">{{ .Filename }}</span> 492 </li> 493 {{ else if .Reason }} 494 <li class="flex items-center"> 495 {{ i "file-warning" "w-4 h-4 mr-1.5 text-red-500 dark:text-red-300" }} 496 <span>{{.Reason}}</span> 497 </li> 498 {{ end }} 499 {{ end }} 500 </ul> 501 {{ end }} 502 </details> 503 {{ else if and $isOpen .MergeCheck }} 504 <div class="flex items-center gap-2"> 505 {{ i "check" "w-4 h-4 text-green-600 dark:text-green-500" }} 506 <span>no conflicts, ready to merge</span> 507 </div> 508 {{ end }} 509{{ end }} 510 511{{ define "mergeStatus" }} 512 {{ if .Pull.State.IsClosed }} 513 <div class="bg-gray-50 dark:bg-gray-700 border border-black dark:border-gray-500 rounded drop-shadow-sm px-6 py-2 relative"> 514 <div class="flex items-center gap-2 text-black dark:text-white"> 515 {{ i "ban" "w-4 h-4" }} 516 <span class="font-medium">closed without merging</span 517 > 518 </div> 519 </div> 520 {{ else if .Pull.State.IsMerged }} 521 <div class="bg-purple-50 dark:bg-purple-900 border border-purple-500 rounded drop-shadow-sm px-6 py-2 relative"> 522 <div class="flex items-center gap-2 text-purple-500 dark:text-purple-300"> 523 {{ i "git-merge" "w-4 h-4" }} 524 <span class="font-medium">pull request successfully merged</span 525 > 526 </div> 527 </div> 528 {{ else if .Pull.State.IsDeleted }} 529 <div class="bg-red-50 dark:bg-red-900 border border-red-500 rounded drop-shadow-sm px-6 py-2 relative"> 530 <div class="flex items-center gap-2 text-red-500 dark:text-red-300"> 531 {{ i "git-pull-request-closed" "w-4 h-4" }} 532 <span class="font-medium">This pull has been deleted (possibly by jj abandon or jj squash)</span> 533 </div> 534 </div> 535 {{ end }} 536{{ end }} 537 538{{ define "resubmitStatus" }} 539 {{ if .ResubmitCheck.Yes }} 540 <div class="bg-amber-50 dark:bg-amber-900 border border-amber-500 rounded drop-shadow-sm px-6 py-2 relative"> 541 <div class="flex items-center gap-2 text-amber-500 dark:text-amber-300"> 542 {{ i "triangle-alert" "w-4 h-4" }} 543 <span class="font-medium">this branch has been updated, consider resubmitting</span> 544 </div> 545 </div> 546 {{ end }} 547{{ end }} 548 549{{ define "pipelineStatus" }} 550 {{ $root := index . 0 }} 551 {{ $submission := index . 1 }} 552 {{ $pipeline := index $root.Pipelines $submission.SourceRev }} 553 {{ with $pipeline }} 554 {{ $id := .Id }} 555 {{ if .Statuses }} 556 <details> 557 <summary class="cursor-pointer list-none">{{ template "repo/pipelines/fragments/pipelineSymbol" (dict "Pipeline" $pipeline "ShortSummary" false) }}</summary> 558 <div class="my-2 grid grid-cols-1 bg-white dark:bg-gray-800 rounded border border-gray-200 dark:border-gray-700 divide-y divide-gray-200 dark:divide-gray-700"> 559 {{ range $name, $all := .Statuses }} 560 <a href="/{{ $root.RepoInfo.FullName }}/pipelines/{{ $id }}/workflow/{{ $name }}" class="no-underline hover:no-underline hover:bg-gray-100/25 hover:dark:bg-gray-700/25"> 561 <div 562 class="flex gap-2 items-center justify-between p-2"> 563 {{ $lastStatus := $all.Latest }} 564 {{ $kind := $lastStatus.Status.String }} 565 566 <div id="left" class="flex items-center gap-2 flex-shrink-0"> 567 {{ template "repo/pipelines/fragments/workflowSymbol" $all }} 568 {{ $name }} 569 </div> 570 <div id="right" class="flex items-center gap-2 flex-shrink-0"> 571 <span class="font-bold">{{ $kind }}</span> 572 {{ if .TimeTaken }} 573 {{ template "repo/fragments/duration" .TimeTaken }} 574 {{ else }} 575 {{ template "repo/fragments/shortTimeAgo" $lastStatus.Created }} 576 {{ end }} 577 </div> 578 </div> 579 </a> 580 {{ end }} 581 </div> 582 </details> 583 {{ end }} 584 {{ end }} 585{{ end }}