This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

core / appview / pages / templates / user / overview.html
11 kB 311 lines
1{{ define "title" }}{{ resolve .Card.UserDid }}{{ end }} 2 3{{ define "profileContent" }} 4 <div id="all-repos" class="md:col-span-4 order-2 md:order-2"> 5 <div class="grid grid-cols-1 gap-4"> 6 {{ block "ownRepos" . }}{{ end }} 7 {{ block "collaboratingRepos" . }}{{ end }} 8 </div> 9 </div> 10 <div class="md:col-span-4 order-3 md:order-3"> 11 {{ block "profileTimeline" . }}{{ end }} 12 </div> 13{{ end }} 14 15{{ define "profileTimeline" }} 16 <p class="text-sm font-bold px-2 pb-4 dark:text-white">ACTIVITY</p> 17 <div class="flex flex-col gap-4 relative"> 18 {{ if .ProfileTimeline.IsEmpty }} 19 <div class="text-base text-gray-500 flex items-center justify-center italic p-12 border border-gray-200 dark:border-gray-700 rounded"> 20 <span class="flex items-center gap-2"> 21 This user does not have any activity yet. 22 </span> 23 </div> 24 {{ end }} 25 26 {{ with .ProfileTimeline }} 27 {{ range $idx, $byMonth := .ByMonth }} 28 {{ with $byMonth }} 29 {{ if not .IsEmpty }} 30 <div class="border border-gray-200 dark:border-gray-700 rounded-sm py-4 px-6"> 31 <p class="text-sm font-mono mb-2 text-gray-500 dark:text-gray-400"> 32 {{ if eq $idx 0 }} 33 this month 34 {{ else }} 35 {{$idx}} month{{if ne $idx 1}}s{{end}} ago 36 {{ end }} 37 </p> 38 39 <div class="flex flex-col gap-1"> 40 {{ block "commits" .Commits }} {{ end }} 41 {{ block "repoEvents" .RepoEvents }} {{ end }} 42 {{ block "issueEvents" .IssueEvents }} {{ end }} 43 {{ block "pullEvents" .PullEvents }} {{ end }} 44 </div> 45 </div> 46 {{ end }} 47 {{ end }} 48 {{ end }} 49 {{ end }} 50 </div> 51{{ end }} 52 53{{ define "commits" }} 54 {{ if . }} 55 <div class="flex flex-wrap items-center gap-1"> 56 {{ i "git-commit-horizontal" "size-5" }} 57 created {{ . }} commits 58 </div> 59 {{ end }} 60{{ end }} 61 62{{ define "repoEvents" }} 63 {{ if gt (len .) 0 }} 64 <details> 65 <summary class="list-none cursor-pointer hover:text-gray-500 hover:dark:text-gray-400"> 66 <div class="flex flex-wrap items-center gap-2"> 67 {{ i "book-plus" "w-4 h-4" }} 68 created {{ len . }} {{if eq (len .) 1 }}repository{{else}}repositories{{end}} 69 </div> 70 </summary> 71 <div class="py-2 text-sm flex flex-col gap-3 mb-2"> 72 {{ range . }} 73 <div class="flex flex-wrap items-center justify-between gap-2"> 74 <span class="flex items-center gap-2"> 75 <span class="text-gray-500 dark:text-gray-400"> 76 {{ if .Source }} 77 {{ i "git-fork" "w-4 h-4" }} 78 {{ else }} 79 {{ i "book-plus" "w-4 h-4" }} 80 {{ end }} 81 </span> 82 <a href="/{{ resolve .Repo.Did }}/{{ .Repo.Name }}" class="no-underline hover:underline"> 83 {{- .Repo.Name -}} 84 </a> 85 </span> 86 87 {{ with .Repo.RepoStats }} 88 {{ with .Language }} 89 <div class="flex gap-2 items-center text-xs font-mono text-gray-400 "> 90 {{ template "repo/fragments/colorBall" (dict "color" (langColor .)) }} 91 <span>{{ . }}</span> 92 </div> 93 {{end }} 94 {{end }} 95 </div> 96 {{ end }} 97 </div> 98 </details> 99 {{ end }} 100{{ end }} 101 102{{ define "issueEvents" }} 103 {{ $items := .Items }} 104 {{ $stats := .Stats }} 105 106 {{ if gt (len $items) 0 }} 107 <details> 108 <summary class="list-none cursor-pointer hover:text-gray-500 hover:dark:text-gray-400"> 109 <div class="flex flex-wrap items-center gap-2"> 110 {{ i "circle-dot" "w-4 h-4" }} 111 112 <div> 113 created {{ len $items }} {{if eq (len $items) 1 }}issue{{else}}issues{{end}} 114 </div> 115 116 {{ if gt $stats.Open 0 }} 117 <span class="px-2 py-1/2 text-sm rounded text-white bg-green-600 dark:bg-green-700"> 118 {{$stats.Open}} open 119 </span> 120 {{ end }} 121 122 {{ if gt $stats.Closed 0 }} 123 <span class="px-2 py-1/2 text-sm rounded text-white bg-gray-800 dark:bg-gray-700"> 124 {{$stats.Closed}} closed 125 </span> 126 {{ end }} 127 128 </div> 129 </summary> 130 <div class="py-2 text-sm flex flex-col gap-3 mb-2"> 131 {{ range $items }} 132 {{ $repoOwner := resolve .Repo.Did }} 133 {{ $repoName := .Repo.Name }} 134 {{ $repoUrl := printf "%s/%s" $repoOwner $repoName }} 135 136 <div class="flex gap-2 text-gray-600 dark:text-gray-300"> 137 {{ if .Open }} 138 <span class="text-green-600 dark:text-green-500"> 139 {{ i "circle-dot" "w-4 h-4" }} 140 </span> 141 {{ else }} 142 <span class="text-gray-500 dark:text-gray-400"> 143 {{ i "ban" "w-4 h-4" }} 144 </span> 145 {{ end }} 146 <div class="flex-none min-w-8 text-right"> 147 <span class="text-gray-500 dark:text-gray-400">#{{ .IssueId }}</span> 148 </div> 149 <div class="break-words max-w-full"> 150 <a href="/{{$repoUrl}}/issues/{{ .IssueId }}" class="no-underline hover:underline"> 151 {{ .Title -}} 152 </a> 153 on 154 <a href="/{{$repoUrl}}" class="no-underline hover:underline whitespace-nowrap"> 155 {{$repoUrl}} 156 </a> 157 </div> 158 </div> 159 {{ end }} 160 </div> 161 </details> 162 {{ end }} 163{{ end }} 164 165{{ define "pullEvents" }} 166 {{ $items := .Items }} 167 {{ $stats := .Stats }} 168 {{ if gt (len $items) 0 }} 169 <details> 170 <summary class="list-none cursor-pointer hover:text-gray-500 hover:dark:text-gray-400"> 171 <div class="flex flex-wrap items-center gap-2"> 172 {{ i "git-pull-request" "w-4 h-4" }} 173 174 <div> 175 created {{ len $items }} {{if eq (len $items) 1 }}pull request{{else}}pull requests{{end}} 176 </div> 177 178 {{ if gt $stats.Open 0 }} 179 <span class="px-2 py-1/2 text-sm rounded text-white bg-green-600 dark:bg-green-700"> 180 {{$stats.Open}} open 181 </span> 182 {{ end }} 183 184 {{ if gt $stats.Merged 0 }} 185 <span class="px-2 py-1/2 text-sm rounded text-white bg-purple-600 dark:bg-purple-700"> 186 {{$stats.Merged}} merged 187 </span> 188 {{ end }} 189 190 191 {{ if gt $stats.Closed 0 }} 192 <span class="px-2 py-1/2 text-sm rounded text-white bg-gray-800 dark:bg-gray-700"> 193 {{$stats.Closed}} closed 194 </span> 195 {{ end }} 196 197 </div> 198 </summary> 199 <div class="py-2 text-sm flex flex-col gap-3 mb-2"> 200 {{ range $items }} 201 {{ $repoOwner := resolve .Repo.Did }} 202 {{ $repoName := .Repo.Name }} 203 {{ $repoUrl := printf "%s/%s" $repoOwner $repoName }} 204 205 <div class="flex gap-2 text-gray-600 dark:text-gray-300"> 206 {{ if .State.IsOpen }} 207 <span class="text-green-600 dark:text-green-500"> 208 {{ i "git-pull-request" "w-4 h-4" }} 209 </span> 210 {{ else if .State.IsMerged }} 211 <span class="text-purple-600 dark:text-purple-500"> 212 {{ i "git-merge" "w-4 h-4" }} 213 </span> 214 {{ else }} 215 <span class="text-gray-600 dark:text-gray-300"> 216 {{ i "git-pull-request-closed" "w-4 h-4" }} 217 </span> 218 {{ end }} 219 <div class="flex-none min-w-8 text-right"> 220 <span class="text-gray-500 dark:text-gray-400">#{{ .PullId }}</span> 221 </div> 222 <div class="break-words max-w-full"> 223 <a href="/{{$repoUrl}}/pulls/{{ .PullId }}" class="no-underline hover:underline"> 224 {{ .Title -}} 225 </a> 226 on 227 <a href="/{{$repoUrl}}" class="no-underline hover:underline whitespace-nowrap"> 228 {{$repoUrl}} 229 </a> 230 </div> 231 </div> 232 {{ end }} 233 </div> 234 </details> 235 {{ end }} 236{{ end }} 237 238{{ define "ownRepos" }} 239 <div> 240 <div class="text-sm font-bold px-2 pb-4 dark:text-white flex items-center gap-2"> 241 <a href="/{{ resolve $.Card.UserDid }}?tab=repos" 242 class="flex text-black dark:text-white items-center gap-2 no-underline hover:no-underline group"> 243 <span>PINNED REPOS</span> 244 </a> 245 {{ if and .LoggedInUser (eq .LoggedInUser.Did .Card.UserDid) }} 246 <button 247 hx-get="profile/edit-pins" 248 hx-target="#all-repos" 249 class="py-0 font-normal text-sm flex gap-2 items-center group"> 250 {{ i "pencil" "w-3 h-3" }} 251 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 252 </button> 253 {{ end }} 254 </div> 255 <div id="repos" class="grid grid-cols-1 gap-4 items-stretch"> 256 {{ range .Repos }} 257 <div class="border border-gray-200 dark:border-gray-700 rounded-sm"> 258 {{ if .RepoDid }} 259 {{ template "user/fragments/repoCard" (list $ . false) }} 260 {{ else }} 261 <div class="py-4 px-6 gap-1 flex flex-col drop-shadow-sm rounded bg-gray-50 dark:bg-gray-900 min-h-32 opacity-60"> 262 <div class="font-medium dark:text-white flex items-center"> 263 {{ i "book-marked" "w-4 h-4 mr-1.5 shrink-0" }} 264 <span class="truncate min-w-0">{{ resolve .Did }}/{{ .Name }}</span> 265 </div> 266 <div class="text-gray-500 dark:text-gray-400 text-sm italic"> 267 This repo is hosted on a legacy knot that ought to be upgraded. 268 </div> 269 </div> 270 {{ end }} 271 </div> 272 {{ else }} 273 <div class="text-base text-gray-500 flex items-center justify-center italic p-12 border border-gray-200 dark:border-gray-700 rounded"> 274 <span class="flex items-center gap-2"> 275 This user does not have any pinned repos. 276 </span> 277 </div> 278 {{ end }} 279 </div> 280 </div> 281{{ end }} 282 283{{ define "collaboratingRepos" }} 284 {{ if gt (len .CollaboratingRepos) 0 }} 285 <div> 286 <p class="text-sm font-bold px-2 pb-4 dark:text-white">COLLABORATING ON</p> 287 <div id="collaborating" class="grid grid-cols-1 gap-4"> 288 {{ range .CollaboratingRepos }} 289 <div class="border border-gray-200 dark:border-gray-700 rounded-sm"> 290 {{ if .RepoDid }} 291 {{ template "user/fragments/repoCard" (list $ . true) }} 292 {{ else }} 293 <div class="py-4 px-6 gap-1 flex flex-col drop-shadow-sm rounded bg-gray-50 dark:bg-gray-900 min-h-32 opacity-60"> 294 <div class="font-medium dark:text-white flex items-center"> 295 {{ i "book-marked" "w-4 h-4 mr-1.5 shrink-0" }} 296 <span class="truncate min-w-0">{{ resolve .Did }}/{{ .Name }}</span> 297 </div> 298 <div class="text-gray-500 dark:text-gray-400 text-sm italic"> 299 This repo is hosted on a legacy knot that ought to be upgraded. 300 </div> 301 </div> 302 {{ end }} 303 </div> 304 {{ else }} 305 <p class="px-6 dark:text-white">This user is not collaborating.</p> 306 {{ end }} 307 </div> 308 </div> 309 {{ end }} 310{{ end }} 311