this repo has no description
1{{ define "title" }}
2 {{ .Pull.Title }} · pull #{{ .Pull.PullId }} · {{ .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 }}