this repo has no description
1{{ define "title" }}
2 {{ .Pull.Title }} · pull #{{ .Pull.PullId }} · {{ .RepoInfo.FullName }}
3{{ end }}
4
5{{ define "repoContent" }}
6 {{ template "repo/pulls/fragments/pullHeader" . }}
7{{ end }}
8
9{{ define "repoAfter" }}
10 <section id="submissions" class="mt-4">
11 <div class="flex flex-col gap-4">
12 {{ block "submissions" . }} {{ end }}
13 </div>
14 </section>
15
16 <div id="pull-close"></div>
17 <div id="pull-reopen"></div>
18{{ end }}
19
20{{ define "submissions" }}
21 {{ $lastIdx := sub (len .Pull.Submissions) 1 }}
22 {{ $targetBranch := .Pull.TargetBranch }}
23 {{ $repoName := .RepoInfo.FullName }}
24 {{ range $idx, $item := .Pull.Submissions }}
25 {{ with $item }}
26 <details {{ if eq $idx $lastIdx }}open{{ end }}>
27 <summary id="round-#{{ .RoundNumber }}" class="list-none cursor-pointer">
28 <div class="flex flex-wrap gap-2 items-center">
29 <!-- round number -->
30 <div class="rounded bg-white dark:bg-gray-800 drop-shadow-sm px-3 py-2 dark:text-white">
31 <span class="flex items-center">{{ i "hash" "w-4 h-4" }}{{ .RoundNumber }}</span>
32 </div>
33 <!-- round summary -->
34 <div class="rounded drop-shadow-sm bg-white dark:bg-gray-800 p-2 text-gray-500 dark:text-gray-400">
35 <span>
36 {{ $owner := index $.DidHandleMap $.Pull.OwnerDid }}
37 {{ $re := "re" }}
38 {{ if eq .RoundNumber 0 }}
39 {{ $re = "" }}
40 {{ end }}
41 <span class="hidden md:inline">{{$re}}submitted</span>
42 by <a href="/{{ $owner }}">{{ $owner }}</a>
43 <span class="select-none before:content-['\00B7']"></span>
44 <a class="text-gray-500 dark:text-gray-400 hover:text-gray-500" href="#round-#{{ .RoundNumber }}"><time>{{ .Created | shortTimeFmt }}</time></a>
45 <span class="select-none before:content-['·']"></span>
46 {{ $s := "s" }}
47 {{ if eq (len .Comments) 1 }}
48 {{ $s = "" }}
49 {{ end }}
50 {{ len .Comments }} comment{{$s}}
51 </span>
52 </div>
53
54 <a class="btn flex items-center gap-2 no-underline hover:no-underline p-2 group"
55 hx-boost="true"
56 href="/{{ $.RepoInfo.FullName }}/pulls/{{ $.Pull.PullId }}/round/{{.RoundNumber}}">
57 {{ i "file-diff" "w-4 h-4" }}
58 <span class="hidden md:inline">diff</span>
59 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }}
60 </a>
61 {{ if not (eq .RoundNumber 0) }}
62 <a class="btn flex items-center gap-2 no-underline hover:no-underline p-2 group"
63 hx-boost="true"
64 href="/{{ $.RepoInfo.FullName }}/pulls/{{ $.Pull.PullId }}/round/{{.RoundNumber}}/interdiff">
65 {{ i "chevrons-left-right-ellipsis" "w-4 h-4 rotate-90" }}
66 <span class="hidden md:inline">interdiff</span>
67 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }}
68 </a>
69 <span id="interdiff-error-{{.RoundNumber}}"></span>
70 {{ end }}
71 </div>
72 </summary>
73
74 {{ if .IsFormatPatch }}
75 {{ $patches := .AsFormatPatch }}
76 {{ $round := .RoundNumber }}
77 <details class="group py-2 md:ml-[3.5rem] text-gray-500 dark:text-gray-400 flex flex-col gap-2 relative text-sm">
78 <summary class="py-1 list-none cursor-pointer hover:text-gray-500 hover:dark:text-gray-400">
79 {{ $s := "s" }}
80 {{ if eq (len $patches) 1 }}
81 {{ $s = "" }}
82 {{ end }}
83 <div class="group-open:hidden flex items-center gap-2 ml-2">
84 {{ i "chevrons-up-down" "w-4 h-4" }} expand {{ len $patches }} commit{{$s}}
85 </div>
86 <div class="hidden group-open:flex items-center gap-2 ml-2">
87 {{ i "chevrons-down-up" "w-4 h-4" }} hide {{ len $patches }} commit{{$s}}
88 </div>
89 </summary>
90 {{ range $patches }}
91 <div id="commit-{{.SHA}}" class="py-1 px-2 relative w-full md:max-w-3/5 md:w-fit flex flex-col">
92 <div class="flex items-center gap-2">
93 {{ i "git-commit-horizontal" "w-4 h-4" }}
94 <div class="text-sm text-gray-500 dark:text-gray-400">
95 <!-- attempt to resolve $fullRepo: this is possible only on non-deleted forks and branches -->
96 {{ $fullRepo := "" }}
97 {{ if and $.Pull.IsForkBased $.Pull.PullSource.Repo }}
98 {{ $fullRepo = printf "%s/%s" $owner $.Pull.PullSource.Repo.Name }}
99 {{ else if $.Pull.IsBranchBased }}
100 {{ $fullRepo = $.RepoInfo.FullName }}
101 {{ end }}
102
103 <!-- if $fullRepo was resolved, link to it, otherwise just span without a link -->
104 {{ if $fullRepo }}
105 <a href="/{{ $fullRepo }}/commit/{{ .SHA }}" class="font-mono text-gray-500 dark:text-gray-400">{{ slice .SHA 0 8 }}</a>
106 {{ else }}
107 <span class="font-mono">{{ slice .SHA 0 8 }}</span>
108 {{ end }}
109 </div>
110 <div class="flex items-center">
111 <span>{{ .Title }}</span>
112 {{ if gt (len .Body) 0 }}
113 <button
114 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"
115 hx-on:click="document.getElementById('body-{{$round}}-{{.SHA}}').classList.toggle('hidden')"
116 >
117 {{ i "ellipsis" "w-3 h-3" }}
118 </button>
119 {{ end }}
120 </div>
121 </div>
122 {{ if gt (len .Body) 0 }}
123 <p id="body-{{$round}}-{{.SHA}}" class="hidden mt-1 text-sm pb-2">
124 {{ nl2br .Body }}
125 </p>
126 {{ end }}
127 </div>
128 {{ end }}
129 </details>
130 {{ end }}
131
132
133 <div class="md:pl-[3.5rem] flex flex-col gap-2 mt-2 relative">
134 {{ range $cidx, $c := .Comments }}
135 <div id="comment-{{$c.ID}}" class="bg-white dark:bg-gray-800 rounded drop-shadow-sm py-2 px-4 relative w-full md:max-w-3/5 md:w-fit">
136 {{ if gt $cidx 0 }}
137 <div class="absolute left-8 -top-2 w-px h-2 bg-gray-300 dark:bg-gray-600"></div>
138 {{ end }}
139 <div class="text-sm text-gray-500 dark:text-gray-400">
140 {{ $owner := index $.DidHandleMap $c.OwnerDid }}
141 <a href="/{{$owner}}">{{$owner}}</a>
142 <span class="before:content-['·']"></span>
143 <a class="text-gray-500 dark:text-gray-400 hover:text-gray-500 dark:hover:text-gray-300" href="#comment-{{.ID}}"><time>{{ $c.Created | shortTimeFmt }}</time></a>
144 </div>
145 <div class="prose dark:prose-invert">
146 {{ $c.Body | markdown }}
147 </div>
148 </div>
149 {{ end }}
150
151 {{ if eq $lastIdx .RoundNumber }}
152 {{ block "mergeStatus" $ }} {{ end }}
153 {{ block "resubmitStatus" $ }} {{ end }}
154 {{ end }}
155
156 {{ if $.LoggedInUser }}
157 {{ template "repo/pulls/fragments/pullActions" (dict "LoggedInUser" $.LoggedInUser "Pull" $.Pull "RepoInfo" $.RepoInfo "RoundNumber" .RoundNumber "MergeCheck" $.MergeCheck "ResubmitCheck" $.ResubmitCheck) }}
158 {{ else }}
159 <div class="bg-white dark:bg-gray-800 rounded drop-shadow-sm px-6 py-4 w-fit dark:text-white">
160 <div class="absolute left-8 -top-2 w-px h-2 bg-gray-300 dark:bg-gray-600"></div>
161 <a href="/login" class="underline">login</a> to join the discussion
162 </div>
163 {{ end }}
164 </div>
165 </details>
166 <hr class="md:hidden border-t border-gray-300 dark:border-gray-600"/>
167 {{ end }}
168 {{ end }}
169{{ end }}
170
171{{ define "mergeStatus" }}
172 {{ if .Pull.State.IsClosed }}
173 <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 w-fit">
174 <div class="flex items-center gap-2 text-black dark:text-white">
175 {{ i "ban" "w-4 h-4" }}
176 <span class="font-medium">closed without merging</span
177 >
178 </div>
179 </div>
180 {{ else if .Pull.State.IsMerged }}
181 <div class="bg-purple-50 dark:bg-purple-900 border border-purple-500 rounded drop-shadow-sm px-6 py-2 relative w-fit">
182 <div class="flex items-center gap-2 text-purple-500 dark:text-purple-300">
183 {{ i "git-merge" "w-4 h-4" }}
184 <span class="font-medium">pull request successfully merged</span
185 >
186 </div>
187 </div>
188 {{ else if and .MergeCheck .MergeCheck.Error }}
189 <div class="bg-red-50 dark:bg-red-900 border border-red-500 rounded drop-shadow-sm px-6 py-2 relative w-fit">
190 <div class="flex items-center gap-2 text-red-500 dark:text-red-300">
191 {{ i "triangle-alert" "w-4 h-4" }}
192 <span class="font-medium">{{ .MergeCheck.Error }}</span>
193 </div>
194 </div>
195 {{ else if and .MergeCheck .MergeCheck.IsConflicted }}
196 <div class="bg-red-50 dark:bg-red-900 border border-red-500 rounded drop-shadow-sm px-6 py-2 relative w-fit">
197 <div class="flex flex-col gap-2 text-red-500 dark:text-red-300">
198 <div class="flex items-center gap-2">
199 {{ i "triangle-alert" "w-4 h-4" }}
200 <span class="font-medium">merge conflicts detected</span>
201 </div>
202 <ul class="space-y-1">
203 {{ range .MergeCheck.Conflicts }}
204 {{ if .Filename }}
205 <li class="flex items-center">
206 {{ i "file-warning" "w-4 h-4 mr-1.5 text-red-500 dark:text-red-300" }}
207 <span class="font-mono">{{ slice .Filename 0 (sub (len .Filename) 2) }}</span>
208 </li>
209 {{ end }}
210 {{ end }}
211 </ul>
212 </div>
213 </div>
214 {{ else if .MergeCheck }}
215 <div class="bg-green-50 dark:bg-green-900 border border-green-500 rounded drop-shadow-sm px-6 py-2 relative w-fit">
216 <div class="flex items-center gap-2 text-green-500 dark:text-green-300">
217 {{ i "circle-check-big" "w-4 h-4" }}
218 <span class="font-medium">no conflicts, ready to merge</span>
219 </div>
220 </div>
221 {{ end }}
222{{ end }}
223
224{{ define "resubmitStatus" }}
225 {{ if .ResubmitCheck.Yes }}
226 <div class="bg-amber-50 dark:bg-amber-900 border border-amber-500 rounded drop-shadow-sm px-6 py-2 relative w-fit">
227 <div class="flex items-center gap-2 text-amber-500 dark:text-amber-300">
228 {{ i "triangle-alert" "w-4 h-4" }}
229 <span class="font-medium">this branch has been updated, consider resubmitting</span>
230 </div>
231 </div>
232 {{ end }}
233{{ end }}
234
235{{ define "commits" }}
236{{ end }}