This repository has no description
1{{ define "title" }}pulls · {{ .RepoInfo.FullName }}{{ end }}
2
3{{ define "extrameta" }}
4 {{ $title := "pulls"}}
5 {{ $url := printf "https://tangled.org/%s/pulls" .RepoInfo.FullName }}
6
7 {{ template "repo/fragments/og" (dict "RepoInfo" .RepoInfo "Title" $title "Url" $url) }}
8{{ end }}
9
10{{ define "repoContent" }}
11 {{ $active := .FilterState }}
12 {{ $open :=
13 (dict
14 "Key" "open"
15 "Value" "open"
16 "Icon" "git-pull-request"
17 "Meta" (string .RepoInfo.Stats.PullCount.Open)) }}
18 {{ $merged :=
19 (dict
20 "Key" "merged"
21 "Value" "merged"
22 "Icon" "git-merge"
23 "Meta" (string .RepoInfo.Stats.PullCount.Merged)) }}
24 {{ $closed :=
25 (dict
26 "Key" "closed"
27 "Value" "closed"
28 "Icon" "ban"
29 "Meta" (string .RepoInfo.Stats.PullCount.Closed)) }}
30 {{ $values := list $open $merged $closed }}
31 <div class="grid gap-2 grid-cols-[auto_1fr_auto] grid-row-2">
32 <form id="search-form" class="flex relative col-span-3 sm:col-span-1 sm:col-start-2" method="GET">
33 <div class="flex-1 flex relative">
34 <input
35 id="search-q"
36 class="flex-1 py-1 pl-2 pr-10 mr-[-1px] rounded-r-none peer"
37 type="text"
38 name="q"
39 value="{{ .FilterQuery }}"
40 placeholder="search pulls..."
41 >
42 <a
43 {{ if $active }}href="?q=state:{{ $active }}"{{ else }}href="?"{{ end }}
44 class="absolute right-3 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 hidden peer-[:not(:placeholder-shown)]:block"
45 >
46 {{ i "x" "w-4 h-4" }}
47 </a>
48 </div>
49 <button
50 type="submit"
51 class="p-2 text-gray-400 border rounded-r border-gray-300 dark:border-gray-600"
52 >
53 {{ i "search" "w-4 h-4" }}
54 </button>
55 </form>
56 <div class="sm:row-start-1">
57 {{ template "fragments/tabSelector" (dict "Name" "state" "Values" $values "Active" $active "Include" "#search-q" "Form" "search-form") }}
58 </div>
59 <a
60 href="/{{ .RepoInfo.FullName }}/pulls/new"
61 class="col-start-3 btn-create text-sm flex items-center gap-2 no-underline hover:no-underline hover:text-white"
62 >
63 {{ i "git-pull-request-create" "w-4 h-4" }}
64 <span>new</span>
65 </a>
66 </div>
67 <div class="error" id="pulls"></div>
68{{ end }}
69
70{{ define "repoAfter" }}
71 <div class="flex flex-col gap-2 mt-2">
72 {{ range $stack := .Stacks }}
73 {{ $topPR := index $stack 0 }}
74 <div class="rounded bg-white dark:bg-gray-800">
75 <div class="px-6 py-4 z-5">
76 <div class="pb-2">
77 <a href="/{{ $.RepoInfo.FullName }}/pulls/{{ $topPR.PullId }}" class="dark:text-white">
78 {{ $topPR.Title | description }}
79 <span class="text-gray-500 dark:text-gray-400">#{{ $topPR.PullId }}</span>
80 </a>
81 </div>
82 <div class="text-sm text-gray-500 dark:text-gray-400 flex flex-wrap items-center gap-1">
83 {{ template "repo/pulls/fragments/pullState" $topPR.State }}
84 <span class="ml-1">
85 {{ template "user/fragments/picHandleLink" $topPR.OwnerDid }}
86 </span>
87
88 <span class="before:content-['·']">
89 {{ template "repo/fragments/time" $topPR.Created }}
90 </span>
91
92 <span class="before:content-['·']">
93 {{ $commentCount := $topPR.TotalComments }}
94 {{ $commentCount }} comment{{ if ne $commentCount 1 }}s{{ end }}
95 </span>
96
97 <span class="before:content-['·']">
98 round
99 <span class="font-mono">
100 #{{ $topPR.LastRoundNumber }}
101 </span>
102 </span>
103
104 {{ $pipeline := index $.Pipelines $topPR.LatestSha }}
105 {{ if and $pipeline $pipeline.Id }}
106 <span class="before:content-['·']"></span>
107 {{ template "repo/pipelines/fragments/pipelineSymbol" (dict "Pipeline" $pipeline "ShortSummary" true) }}
108 {{ end }}
109
110 {{ $state := $topPR.Labels }}
111 {{ range $k, $d := $.LabelDefs }}
112 {{ range $v, $s := $state.GetValSet $d.AtUri.String }}
113 {{ template "labels/fragments/label" (dict "def" $d "val" $v "withPrefix" true) }}
114 {{ end }}
115 {{ end }}
116 </div>
117 </div>
118 {{ if gt (len $stack) 1 }}
119 <details class="group">
120 <summary class="px-6 pb-4 text-xs list-none cursor-pointer hover:text-gray-500 hover:dark:text-gray-400">
121 <span class="flex items-center gap-2">
122 <span class="group-open:hidden">
123 {{ i "chevrons-up-down" "size-3" }}
124 </span>
125 <span class="hidden group-open:flex">
126 {{ i "chevrons-down-up" "size-3" }}
127 </span>
128 {{ $rest := sub (len $stack) 1 }}
129 expand {{ $rest }} pull{{if ne $rest 1 }}s{{end}} in this stack
130 </span>
131 </summary>
132 {{ template "stackedPullList" (list (slice $stack 1) $) }}
133 </details>
134 {{ end }}
135 </div>
136 {{ end }}
137 </div>
138 {{if gt .PullCount .Page.Limit }}
139 {{ template "fragments/pagination" (dict
140 "Page" .Page
141 "TotalCount" .PullCount
142 "BasePath" (printf "/%s/pulls" .RepoInfo.FullName)
143 "QueryParams" (queryParams "q" .FilterQuery)
144 ) }}
145 {{ end }}
146{{ end }}
147
148{{ define "stackedPullList" }}
149 {{ $list := index . 0 }}
150 {{ $root := index . 1 }}
151 <div class="grid grid-cols-1 rounded-b border-b border-t border-gray-200 dark:border-gray-900 divide-y divide-gray-200 dark:divide-gray-900">
152 {{ range $pull := $list }}
153 {{ $pipeline := index $root.Pipelines $pull.LatestSha }}
154 <a href="/{{ $root.RepoInfo.FullName }}/pulls/{{ $pull.PullId }}" class="no-underline hover:no-underline hover:bg-gray-100/25 hover:dark:bg-gray-700/25">
155 <div class="flex gap-2 items-center px-6">
156 <div class="flex-grow min-w-0 w-full py-2">
157 {{ template "repo/pulls/fragments/summarizedPullHeader" (list $pull $pipeline) }}
158 </div>
159 </div>
160 </a>
161 {{ end }}
162 </div>
163{{ end }}