activity.html
·
107 строк
·
4.6 KB
| 1 | {{define "content"}} |
| 2 | <div class="container"> |
| 3 | {{template "repo_header" .}} |
| 4 | |
| 5 | <!-- Pulse Statistics --> |
| 6 | {{if .Stats}} |
| 7 | <div class="grid-4 mb-4"> |
| 8 | <div class="card p-3"> |
| 9 | <div class="flex items-center justify-between text-muted text-xs font-semibold uppercase mb-1"> |
| 10 | <span>{{t .Lang "activity.commits"}}</span> |
| 11 | {{icon "git-commit" "size-4"}} |
| 12 | </div> |
| 13 | <div class="text-xl font-bold font-mono">{{.Stats.CommitCount}}</div> |
| 14 | <div class="text-xs text-muted mt-1">{{t .Lang "activity.on_default_branch"}}</div> |
| 15 | </div> |
| 16 | |
| 17 | <div class="card p-3"> |
| 18 | <div class="flex items-center justify-between text-muted text-xs font-semibold uppercase mb-1"> |
| 19 | <span>{{t .Lang "repo.tab.pulls"}}</span> |
| 20 | {{icon "git-pull-request" "size-4"}} |
| 21 | </div> |
| 22 | <div class="flex items-baseline gap-2 font-mono"> |
| 23 | <span class="text-xl font-bold" style="color:hsl(var(--primary));">{{.Stats.OpenPRs}}</span> |
| 24 | <span class="text-xs text-muted">/ {{.Stats.MergedPRs}} {{t .Lang "pulls.status.merged"}}</span> |
| 25 | </div> |
| 26 | <div class="text-xs text-muted mt-1">{{t .Lang "activity.pull_requests"}}</div> |
| 27 | </div> |
| 28 | |
| 29 | <div class="card p-3"> |
| 30 | <div class="flex items-center justify-between text-muted text-xs font-semibold uppercase mb-1"> |
| 31 | <span>{{t .Lang "repo.tab.issues"}}</span> |
| 32 | {{icon "issue" "size-4"}} |
| 33 | </div> |
| 34 | <div class="flex items-baseline gap-2 font-mono"> |
| 35 | <span class="text-xl font-bold" style="color:hsl(var(--primary));">{{.Stats.OpenIssues}}</span> |
| 36 | <span class="text-xs text-muted">/ {{.Stats.ClosedIssues}} {{t .Lang "issue.status.closed"}}</span> |
| 37 | </div> |
| 38 | <div class="text-xs text-muted mt-1">{{t .Lang "activity.issues"}}</div> |
| 39 | </div> |
| 40 | |
| 41 | <div class="card p-3"> |
| 42 | <div class="flex items-center justify-between text-muted text-xs font-semibold uppercase mb-1"> |
| 43 | <span>{{t .Lang "repo.tab.releases"}}</span> |
| 44 | {{icon "tag" "size-4"}} |
| 45 | </div> |
| 46 | <div class="text-xl font-bold font-mono">{{.Stats.ReleaseCount}}</div> |
| 47 | <div class="text-xs text-muted mt-1">{{t .Lang "activity.published_releases"}}</div> |
| 48 | </div> |
| 49 | </div> |
| 50 | {{end}} |
| 51 | |
| 52 | <!-- Activity Timeline --> |
| 53 | <div class="card"> |
| 54 | <div class="card-header flex items-center justify-between"> |
| 55 | <span class="font-semibold text-sm flex items-center gap-2"> |
| 56 | {{icon "activity" "size-4"}} |
| 57 | <span>{{t .Lang "activity.recent_feed"}}</span> |
| 58 | </span> |
| 59 | </div> |
| 60 | |
| 61 | {{if .Items}} |
| 62 | <div class="dense-list"> |
| 63 | {{range .Items}} |
| 64 | <div class="dense-row" style="min-height:3rem;padding:0.6rem 0.85rem;"> |
| 65 | <div class="flex items-center gap-3 min-w-0"> |
| 66 | <span class="text-muted flex-shrink-0" style="display:inline-flex;align-items:center;"> |
| 67 | {{if eq .Type "commit"}} |
| 68 | <span style="color:hsl(var(--primary));">{{icon "git-commit" "size-4"}}</span> |
| 69 | {{else if eq .Type "pull"}} |
| 70 | <span style="color:hsl(var(--primary));">{{icon "git-pull-request" "size-4"}}</span> |
| 71 | {{else if eq .Type "issue"}} |
| 72 | <span style="color:hsl(var(--primary));">{{icon "issue" "size-4"}}</span> |
| 73 | {{else if eq .Type "release"}} |
| 74 | <span style="color:hsl(var(--warning-fg, 38 92% 50%));">{{icon "tag" "size-4"}}</span> |
| 75 | {{else}} |
| 76 | {{icon "activity" "size-4"}} |
| 77 | {{end}} |
| 78 | </span> |
| 79 | |
| 80 | <div class="flex flex-col min-w-0"> |
| 81 | <div class="flex items-center gap-2 flex-wrap min-w-0"> |
| 82 | <a href="{{.Link}}" class="font-semibold text-sm truncate">{{.Title}}</a> |
| 83 | {{if .Subtitle}} |
| 84 | <span class="font-mono text-xs text-muted">{{.Subtitle}}</span> |
| 85 | {{end}} |
| 86 | {{if .Badge}} |
| 87 | <span class="badge badge-outline text-xs" style="padding:0.05rem 0.35rem;">{{activityBadge $.Lang .Type .Badge}}</span> |
| 88 | {{end}} |
| 89 | </div> |
| 90 | <div class="text-xs text-muted flex items-center gap-1.5 mt-0.5"> |
| 91 | {{if .AuthorUsername}} |
| 92 | <span>@{{.AuthorUsername}}</span> |
| 93 | <span>·</span> |
| 94 | {{end}} |
| 95 | <span>{{timeAgo .CreatedAt $.Lang}}</span> |
| 96 | </div> |
| 97 | </div> |
| 98 | </div> |
| 99 | </div> |
| 100 | {{end}} |
| 101 | </div> |
| 102 | {{else}} |
| 103 | <div class="card-body text-xs text-muted">{{t .Lang "activity.empty"}}</div> |
| 104 | {{end}} |
| 105 | </div> |
| 106 | </div> |
| 107 | {{end}} |