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-2"> 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 hover:text-gray-500"> 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 <div> 141 {{ if eq 1 (len $patches) }} 142 <!-- only one commit, just inline the message into the round header --> 143 {{ $commit := index $patches 0 }} 144 <span>{{ $commit.Title | description }}</span> 145 {{ if gt (len $commit.Body) 0 }} 146 <p id="body-{{$round}}-{{$commit.SHA}}" class="mt-1 pb-2"> 147 {{ nl2br $commit.Body }} 148 </p> 149 {{ end }} 150 {{ else }} 151 <span>Commits:</span> 152 {{ range $patches }} 153 <div id="commit-{{.SHA}}" class="py-1 px-2 relative w-full md:max-w-3/5 md:w-fit flex flex-col"> 154 <div class="flex items-center gap-2"> 155 {{ i "git-commit-horizontal" "w-4 h-4 flex-shrink-0" }} 156 <div class="flex items-center"> 157 <span>{{ .Title | description }}</span> 158 {{ if gt (len .Body) 0 }} 159 <button 160 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" 161 hx-on:click="document.getElementById('body-{{$round}}-{{.SHA}}').classList.toggle('hidden')" 162 > 163 {{ i "ellipsis" "w-3 h-3" }} 164 </button> 165 {{ end }} 166 </div> 167 </div> 168 {{ if gt (len .Body) 0 }} 169 <p id="body-{{$round}}-{{.SHA}}" class="hidden mt-1 text-sm pb-2"> 170 {{ nl2br .Body }} 171 </p> 172 {{ end }} 173 </div> 174 {{ end }} 175 {{ end }} 176 </div> 177 <div> 178 {{ block "pipelineStatus" (list $ .) }} {{ end }} 179 </div> 180 </div> 181 </div> 182 <div class="relative ml-10 border-l-2 border-gray-200 dark:border-gray-700"> 183 {{ range $cidx, $c := .Comments }} 184 <div id="comment-{{$c.ID}}" class="flex gap-2 -ml-4 py-4 w-full mx-auto"> 185 <!-- left column: profile picture --> 186 <div class="flex-shrink-0"> 187 <img 188 src="{{ tinyAvatar $c.OwnerDid }}" 189 alt="" 190 class="rounded-full size-8 mr-1 border-2 border-gray-100 dark:border-gray-900" 191 /> 192 </div> 193 <!-- right column: name and body in two rows --> 194 <div class="flex-1 min-w-0"> 195 <!-- Row 1: Author and timestamp --> 196 <div class="text-sm text-gray-500 dark:text-gray-400 flex items-center gap-1"> 197 <span>{{ resolve $c.OwnerDid }}</span> 198 <span class="before:content-['·']"></span> 199 <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> 200 </div> 201 <!-- Row 2: Body text --> 202 <div class="prose dark:prose-invert mt-1"> 203 {{ $c.Body | markdown }} 204 </div> 205 </div> 206 </div> 207 {{ end }} 208 </div> 209 {{ end }} 210 {{ if eq $lastIdx .RoundNumber }} 211 {{ block "mergeStatus" $ }} {{ end }} 212 {{ block "resubmitStatus" $ }} {{ end }} 213 {{ end }} 214 {{ if $.LoggedInUser }} 215 {{ template "repo/pulls/fragments/pullActions" 216 (dict 217 "LoggedInUser" $.LoggedInUser 218 "Pull" $.Pull 219 "RepoInfo" $.RepoInfo 220 "RoundNumber" .RoundNumber 221 "MergeCheck" $.MergeCheck 222 "ResubmitCheck" $.ResubmitCheck 223 "BranchDeleteStatus" $.BranchDeleteStatus 224 "Stack" $.Stack) }} 225 {{ else }} 226 <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"> 227 <a href="/signup" class="btn-create py-0 hover:no-underline hover:text-white flex items-center gap-2"> 228 sign up 229 </a> 230 <span class="text-gray-500 dark:text-gray-400">or</span> 231 <a href="/login" class="underline">login</a> 232 to add to the discussion 233 </div> 234 {{ end }} 235 </div> 236 {{ end }} 237{{ end }} 238 239{{ define "newComment" }} 240 {{ $root := index . 0 }} 241 {{ $submission := index . 1 }} 242 <form 243 id="comment-form" 244 hx-post="/{{ $root.RepoInfo.FullName }}/pulls/{{ $root.Pull.PullId }}/round/{{ $submission.RoundNumber }}/comment" 245 hx-on::after-request="if(event.detail.successful) this.reset()" 246 > 247 <div class="bg-white dark:bg-gray-800 rounded drop-shadow-sm py-4 px-4 relative w-full"> 248 <div class="text-sm pb-2 text-gray-500 dark:text-gray-400"> 249 {{ template "user/fragments/picHandleLink" $root.LoggedInUser.Did }} 250 </div> 251 <textarea 252 id="comment-textarea" 253 name="body" 254 class="w-full p-2 rounded border border-gray-200 dark:border-gray-700" 255 placeholder="Add to the discussion" 256 rows="8" 257 ></textarea> 258 <div id="pull-comment"></div> 259 </div> 260 {{ template "replyActions" . }} 261 </form> 262{{ end }} 263 264{{ define "replyActions" }} 265 <div class="flex flex-wrap items-stretch justify-end gap-2 text-gray-500 dark:text-gray-400 text-sm"> 266 {{ template "cancel" . }} 267 {{ template "reply" . }} 268 </div> 269{{ end }} 270 271{{ define "cancel" }} 272 <button 273 class="btn text-red-500 dark:text-red-400 flex gap-2 items-center group" 274 hx-get="TODO" 275 hx-target="TODO" 276 hx-swap="outerHTML"> 277 {{ i "x" "size-4" }} 278 cancel 279 </button> 280{{ end }} 281 282{{ define "reply" }} 283 <button 284 id="TODO" 285 type="submit" 286 class="btn-create flex items-center gap-2 no-underline hover:no-underline"> 287 {{ i "reply" "w-4 h-4 inline group-[.htmx-request]:hidden" }} 288 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 289 reply 290 </button> 291{{ end }} 292 293{{ define "submissions" }} 294 {{ $lastIdx := sub (len .Pull.Submissions) 1 }} 295 {{ $targetBranch := .Pull.TargetBranch }} 296 {{ $repoName := .RepoInfo.FullName }} 297 {{ range $idx, $item := .Pull.Submissions }} 298 {{ with $item }} 299 <details {{ if eq $idx $lastIdx }}open{{ end }}> 300 <summary id="round-#{{ .RoundNumber }}" class="list-none cursor-pointer"> 301 <div class="flex flex-wrap gap-2 items-stretch"> 302 <!-- round number --> 303 <div class="rounded bg-white dark:bg-gray-800 drop-shadow-sm px-3 py-2 dark:text-white"> 304 <span class="flex items-center">{{ i "hash" "w-4 h-4" }}{{ .RoundNumber }}</span> 305 </div> 306 <!-- round summary --> 307 <div class="flex-1 rounded drop-shadow-sm bg-white dark:bg-gray-800 p-2 text-gray-500 dark:text-gray-400"> 308 <span class="gap-1 flex items-center"> 309 {{ $owner := resolve $.Pull.OwnerDid }} 310 {{ $re := "re" }} 311 {{ if eq .RoundNumber 0 }} 312 {{ $re = "" }} 313 {{ end }} 314 <span class="hidden md:inline">{{$re}}submitted</span> 315 by {{ template "user/fragments/picHandleLink" $.Pull.OwnerDid }} 316 <span class="select-none before:content-['\00B7']"></span> 317 <a class="text-gray-500 dark:text-gray-400 hover:text-gray-500" href="#round-#{{ .RoundNumber }}">{{ template "repo/fragments/shortTime" .Created }}</a> 318 <span class="select-none before:content-['·']"></span> 319 {{ $s := "s" }} 320 {{ if eq (len .Comments) 1 }} 321 {{ $s = "" }} 322 {{ end }} 323 {{ len .Comments }} comment{{$s}} 324 </span> 325 </div> 326 327 <a class="btn flex items-center gap-2 no-underline hover:no-underline p-2 group" 328 hx-boost="true" 329 href="/{{ $.RepoInfo.FullName }}/pulls/{{ $.Pull.PullId }}/round/{{.RoundNumber}}"> 330 {{ i "file-diff" "w-4 h-4" }} 331 <span class="hidden md:inline">diff</span> 332 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 333 </a> 334 {{ if ne $idx 0 }} 335 <a class="btn flex items-center gap-2 no-underline hover:no-underline p-2 group" 336 hx-boost="true" 337 href="/{{ $.RepoInfo.FullName }}/pulls/{{ $.Pull.PullId }}/round/{{.RoundNumber}}/interdiff"> 338 {{ i "chevrons-left-right-ellipsis" "w-4 h-4 rotate-90" }} 339 <span class="hidden md:inline">interdiff</span> 340 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 341 </a> 342 {{ end }} 343 <span id="interdiff-error-{{.RoundNumber}}"></span> 344 </div> 345 </summary> 346 347 {{ if .IsFormatPatch }} 348 {{ $patches := .AsFormatPatch }} 349 {{ $round := .RoundNumber }} 350 <details class="group py-2 md:ml-[3.5rem] text-gray-500 dark:text-gray-400 flex flex-col gap-2 relative text-sm"> 351 <summary class="py-1 list-none cursor-pointer hover:text-gray-500 hover:dark:text-gray-400"> 352 {{ $s := "s" }} 353 {{ if eq (len $patches) 1 }} 354 {{ $s = "" }} 355 {{ end }} 356 <div class="group-open:hidden flex items-center gap-2 ml-2"> 357 {{ i "chevrons-up-down" "w-4 h-4" }} expand {{ len $patches }} commit{{$s}} 358 </div> 359 <div class="hidden group-open:flex items-center gap-2 ml-2"> 360 {{ i "chevrons-down-up" "w-4 h-4" }} hide {{ len $patches }} commit{{$s}} 361 </div> 362 </summary> 363 {{ range $patches }} 364 <div id="commit-{{.SHA}}" class="py-1 px-2 relative w-full md:max-w-3/5 md:w-fit flex flex-col"> 365 <div class="flex items-center gap-2"> 366 {{ i "git-commit-horizontal" "w-4 h-4" }} 367 <div class="text-sm text-gray-500 dark:text-gray-400"> 368 <!-- attempt to resolve $fullRepo: this is possible only on non-deleted forks and branches --> 369 {{ $fullRepo := "" }} 370 {{ if and $.Pull.IsForkBased $.Pull.PullSource.Repo }} 371 {{ $fullRepo = printf "%s/%s" $owner $.Pull.PullSource.Repo.Name }} 372 {{ else if $.Pull.IsBranchBased }} 373 {{ $fullRepo = $.RepoInfo.FullName }} 374 {{ end }} 375 376 <!-- if $fullRepo was resolved, link to it, otherwise just span without a link --> 377 {{ if $fullRepo }} 378 <a href="/{{ $fullRepo }}/commit/{{ .SHA }}" class="font-mono text-gray-500 dark:text-gray-400">{{ slice .SHA 0 8 }}</a> 379 {{ else }} 380 <span class="font-mono">{{ slice .SHA 0 8 }}</span> 381 {{ end }} 382 </div> 383 <div class="flex items-center"> 384 <span>{{ .Title | description }}</span> 385 {{ if gt (len .Body) 0 }} 386 <button 387 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" 388 hx-on:click="document.getElementById('body-{{$round}}-{{.SHA}}').classList.toggle('hidden')" 389 > 390 {{ i "ellipsis" "w-3 h-3" }} 391 </button> 392 {{ end }} 393 </div> 394 </div> 395 {{ if gt (len .Body) 0 }} 396 <p id="body-{{$round}}-{{.SHA}}" class="hidden mt-1 text-sm pb-2"> 397 {{ nl2br .Body }} 398 </p> 399 {{ end }} 400 </div> 401 {{ end }} 402 </details> 403 {{ end }} 404 405 406 <div class="md:pl-[3.5rem] flex flex-col gap-2 mt-2 relative"> 407 {{ range $cidx, $c := .Comments }} 408 <div id="comment-{{$c.ID}}" class="bg-white dark:bg-gray-800 rounded drop-shadow-sm py-2 px-4 relative w-full"> 409 {{ if gt $cidx 0 }} 410 <div class="absolute left-8 -top-2 w-px h-2 bg-gray-300 dark:bg-gray-600"></div> 411 {{ end }} 412 <div class="text-sm text-gray-500 dark:text-gray-400 flex items-center gap-1"> 413 {{ template "user/fragments/picHandleLink" $c.OwnerDid }} 414 <span class="before:content-['·']"></span> 415 <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> 416 </div> 417 <div class="prose dark:prose-invert"> 418 {{ $c.Body | markdown }} 419 </div> 420 </div> 421 {{ end }} 422 423 {{ block "pipelineStatus" (list $ .) }} {{ end }} 424 425 {{ if eq $lastIdx .RoundNumber }} 426 {{ block "mergeStatus" $ }} {{ end }} 427 {{ block "resubmitStatus" $ }} {{ end }} 428 {{ end }} 429 430 {{ if $.LoggedInUser }} 431 {{ template "repo/pulls/fragments/pullActions" 432 (dict 433 "LoggedInUser" $.LoggedInUser 434 "Pull" $.Pull 435 "RepoInfo" $.RepoInfo 436 "RoundNumber" .RoundNumber 437 "MergeCheck" $.MergeCheck 438 "ResubmitCheck" $.ResubmitCheck 439 "BranchDeleteStatus" $.BranchDeleteStatus 440 "Stack" $.Stack) }} 441 {{ else }} 442 <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"> 443 <a href="/signup" class="btn-create py-0 hover:no-underline hover:text-white flex items-center gap-2"> 444 sign up 445 </a> 446 <span class="text-gray-500 dark:text-gray-400">or</span> 447 <a href="/login" class="underline">login</a> 448 to add to the discussion 449 </div> 450 {{ end }} 451 </div> 452 </details> 453 {{ end }} 454 {{ end }} 455{{ end }} 456 457{{ define "mergeStatus" }} 458 {{ if .Pull.State.IsClosed }} 459 <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"> 460 <div class="flex items-center gap-2 text-black dark:text-white"> 461 {{ i "ban" "w-4 h-4" }} 462 <span class="font-medium">closed without merging</span 463 > 464 </div> 465 </div> 466 {{ else if .Pull.State.IsMerged }} 467 <div class="bg-purple-50 dark:bg-purple-900 border border-purple-500 rounded drop-shadow-sm px-6 py-2 relative"> 468 <div class="flex items-center gap-2 text-purple-500 dark:text-purple-300"> 469 {{ i "git-merge" "w-4 h-4" }} 470 <span class="font-medium">pull request successfully merged</span 471 > 472 </div> 473 </div> 474 {{ else if .Pull.State.IsDeleted }} 475 <div class="bg-red-50 dark:bg-red-900 border border-red-500 rounded drop-shadow-sm px-6 py-2 relative"> 476 <div class="flex items-center gap-2 text-red-500 dark:text-red-300"> 477 {{ i "git-pull-request-closed" "w-4 h-4" }} 478 <span class="font-medium">This pull has been deleted (possibly by jj abandon or jj squash)</span> 479 </div> 480 </div> 481 {{ else if and .MergeCheck .MergeCheck.Error }} 482 <div class="bg-red-50 dark:bg-red-900 border border-red-500 rounded drop-shadow-sm px-6 py-2 relative"> 483 <div class="flex items-center gap-2 text-red-500 dark:text-red-300"> 484 {{ i "triangle-alert" "w-4 h-4" }} 485 <span class="font-medium">{{ .MergeCheck.Error }}</span> 486 </div> 487 </div> 488 {{ else if and .MergeCheck .MergeCheck.IsConflicted }} 489 <div class="bg-red-50 dark:bg-red-900 border border-red-500 rounded drop-shadow-sm px-6 py-2 relative"> 490 <details class="text-red-500 dark:text-red-300 group"> 491 <summary class="flex items-center justify-between cursor-pointer list-none"> 492 <div class="flex items-center gap-2 "> 493 {{ i "triangle-alert" "w-4 h-4" }} 494 <span class="font-medium">merge conflicts detected</span> 495 </div> 496 <div> 497 <span class="group-open:hidden inline">{{ i "chevrons-up-down" "w-4 h-4" }}</span> 498 <span class="hidden group-open:inline">{{ i "chevrons-down-up" "w-4 h-4" }}</span> 499 </div> 500 </summary> 501 {{ if gt (len .MergeCheck.Conflicts) 0 }} 502 <ul class="space-y-1 mt-2"> 503 {{ range .MergeCheck.Conflicts }} 504 {{ if .Filename }} 505 <li class="flex items-center"> 506 {{ i "file-warning" "inline-flex w-4 h-4 mr-1.5 text-red-500 dark:text-red-300 flex-shrink-0" }} 507 <span class="font-mono" style="word-break: keep-all; overflow-wrap: break-word;">{{ .Filename }}</span> 508 </li> 509 {{ else if .Reason }} 510 <li class="flex items-center"> 511 {{ i "file-warning" "w-4 h-4 mr-1.5 text-red-500 dark:text-red-300" }} 512 <span>{{.Reason}}</span> 513 </li> 514 {{ end }} 515 {{ end }} 516 </ul> 517 {{ end }} 518 </details> 519 </div> 520 {{ else if .MergeCheck }} 521 <div class="bg-green-50 dark:bg-green-900 border border-green-500 rounded drop-shadow-sm px-6 py-2 relative"> 522 <div class="flex items-center gap-2 text-green-500 dark:text-green-300"> 523 {{ i "circle-check-big" "w-4 h-4" }} 524 <span class="font-medium">no conflicts, ready to merge</span> 525 </div> 526 </div> 527 {{ end }} 528{{ end }} 529 530{{ define "resubmitStatus" }} 531 {{ if .ResubmitCheck.Yes }} 532 <div class="bg-amber-50 dark:bg-amber-900 border border-amber-500 rounded drop-shadow-sm px-6 py-2 relative"> 533 <div class="flex items-center gap-2 text-amber-500 dark:text-amber-300"> 534 {{ i "triangle-alert" "w-4 h-4" }} 535 <span class="font-medium">this branch has been updated, consider resubmitting</span> 536 </div> 537 </div> 538 {{ end }} 539{{ end }} 540 541{{ define "pipelineStatus" }} 542 {{ $root := index . 0 }} 543 {{ $submission := index . 1 }} 544 {{ $pipeline := index $root.Pipelines $submission.SourceRev }} 545 {{ with $pipeline }} 546 {{ $id := .Id }} 547 {{ if .Statuses }} 548 <span>Workflows:</span> 549 <div class=" 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"> 550 {{ range $name, $all := .Statuses }} 551 <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"> 552 <div 553 class="flex gap-2 items-center justify-between p-2"> 554 {{ $lastStatus := $all.Latest }} 555 {{ $kind := $lastStatus.Status.String }} 556 557 <div id="left" class="flex items-center gap-2 flex-shrink-0"> 558 {{ template "repo/pipelines/fragments/workflowSymbol" $all }} 559 {{ $name }} 560 </div> 561 <div id="right" class="flex items-center gap-2 flex-shrink-0"> 562 <span class="font-bold">{{ $kind }}</span> 563 {{ if .TimeTaken }} 564 {{ template "repo/fragments/duration" .TimeTaken }} 565 {{ else }} 566 {{ template "repo/fragments/shortTimeAgo" $lastStatus.Created }} 567 {{ end }} 568 </div> 569 </div> 570 </a> 571 {{ end }} 572 </div> 573 {{ end }} 574 {{ end }} 575{{ end }}