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