| d23464c0 Andy McCall ↶ |
1 |
{% macro tabs(repo, tab) %} |
| 756fe44a Andy McCall ↶ |
2 |
<nav class="tabs" aria-label="Repository"> |
| d23464c0 Andy McCall ↶ |
3 |
<div class="tabs-in"> |
| 7b26e611 Andy McCall ↶ |
4 |
<span class="crumb"><a href="/{{ repo.owner }}">{{ repo.owner }}</a> / <a href="{{ repo.url }}"><strong>{{ repo.name }}</strong></a>{% if repo.archived %} <span class="tag warn" title="This repository is archived: read-only">archived</span>{% endif %} <span class="vis vis-{{ repo.visibility }}" title="{% if repo.visibility == "public" %}Anyone can see this repository{% else if repo.visibility == "internal" %}Anyone signed in to this hub can see this repository{% else %}Only people given access can see this repository{% endif %}"><span aria-hidden="true">{% if repo.visibility == "public" %}◯{% else if repo.visibility == "internal" %}◐{% else %}●{% endif %}</span> {{ repo.visibility }}</span>{% if let Some(b) = repo.stored_in %} <span class="store store-{{ b.kind }}" tabindex="0" aria-label="Kept in its owner's {{ b.provider }}"><svg viewBox="0 0 16 16" width="16" height="16" aria-hidden="true" focusable="false">{% if b.kind == "gcs" %}<path d="M4.2 1.5h7.6L15.6 8l-3.8 6.5H4.2L.4 8z" fill="#4285f4"/><rect x="4.6" y="5" width="6.8" height="2" rx=".6" fill="#fff"/><rect x="4.6" y="9" width="6.8" height="2" rx=".6" fill="#fff"/>{% else if b.kind == "s3" %}<path d="M1.8 3.6 3.6 13.2c.2 1 2.2 1.6 4.4 1.6s4.2-.6 4.4-1.6l1.8-9.6z" fill="#7aa116"/><ellipse cx="8" cy="3.6" rx="6.2" ry="2.1" fill="#a4cc4c"/>{% else %}<rect x="1.5" y="2" width="13" height="12" rx="1.6" fill="#0078d4"/><rect x="4" y="5" width="8" height="1.6" fill="#fff"/><rect x="4" y="7.7" width="8" height="1.6" fill="#fff"/><rect x="4" y="10.4" width="5" height="1.6" fill="#fff"/>{% endif %}</svg><span class="store-card" role="tooltip"><strong>{{ b.provider }}</strong>{% if repo.can(crate::auth::Access::Admin) %}<dl><dt>{% if b.kind == "azure" %}Account / container{% else %}Bucket{% endif %}</dt><dd><code>{{ b.place }}</code></dd>{% if !b.prefix.is_empty() %}<dt>Prefix</dt><dd><code>{{ b.prefix }}</code></dd>{% endif %}{% if let Some(r) = b.region %}<dt>Region</dt><dd>{{ r }}</dd>{% endif %}<dt>URL</dt><dd><code>{{ b.url }}</code></dd></dl><a href="{{ repo.url }}/settings#storage">Storage settings and the last check</a>{% else %}<span class="mute">This repository's data is kept in its owner's own {{ b.provider }}, not on this server's disk.</span>{% endif %}</span></span>{% endif %}</span> |
| 756fe44a Andy McCall ↶ |
5 |
<a href="{{ repo.url }}"{% if tab == "code" %} class="on" aria-current="page"{% endif %}>Code</a> |
| 6 |
<a href="{{ repo.url }}/changes/{{ repo.default_bookmark }}"{% if tab == "changes" %} class="on" aria-current="page"{% endif %}>Changes</a> |
| 7 |
<a href="{{ repo.url }}/proposals"{% if tab == "proposals" %} class="on" aria-current="page"{% endif %}>Proposals{% if repo.open_proposals > 0 %} <span class="count-chip">{{ repo.open_proposals }}</span>{% endif %}</a> |
| 8 |
<a href="{{ repo.url }}/issues"{% if tab == "issues" %} class="on" aria-current="page"{% endif %}>Issues{% if repo.open_issues > 0 %} <span class="count-chip">{{ repo.open_issues }}</span>{% endif %}</a> |
| a024e800 Andy McCall ↶ |
9 |
<a href="/projects/{{ repo.owner }}" title="{{ repo.owner }}'s project boards">Projects</a> |
| 66fd9d6b Andy McCall ↶ |
10 |
{% if repo.wiki || repo.can(crate::auth::Access::Write) %}<a href="{{ repo.url }}/wiki"{% if tab == "wiki" %} class="on" aria-current="page"{% endif %}>Wiki</a>{% endif %} |
| 756fe44a Andy McCall ↶ |
11 |
<a href="{{ repo.url }}/flow"{% if tab == "flow" %} class="on" aria-current="page"{% endif %}>Flow</a> |
| 36e5a9c1 Andy McCall ↶ |
12 |
{% if repo.tests %}<a href="{{ repo.url }}/tests"{% if tab == "tests" %} class="on" aria-current="page"{% endif %}>Tests</a>{% endif %} |
| 554ccacf Andy McCall ↶ |
13 |
{% if repo.coverage %}<a href="{{ repo.url }}/coverage"{% if tab == "coverage" %} class="on" aria-current="page"{% endif %}>Coverage</a>{% endif %} |
| 756fe44a Andy McCall ↶ |
14 |
<a href="{{ repo.url }}/bookmarks"{% if tab == "bookmarks" %} class="on" aria-current="page"{% endif %}>Bookmarks</a> |
| 15 |
<a href="{{ repo.url }}/releases"{% if tab == "releases" %} class="on" aria-current="page"{% endif %}>Releases</a> |
| 16 |
<a href="{{ repo.url }}/tags"{% if tab == "tags" %} class="on" aria-current="page"{% endif %}>Tags</a> |
| 17 |
<a href="{{ repo.url }}/conflicts"{% if tab == "conflicts" %} class="on" aria-current="page"{% endif %}>Conflicts</a> |
| 18 |
<a href="{{ repo.url }}/trust"{% if tab == "trust" %} class="on" aria-current="page"{% endif %}>Trust</a> |
| 19 |
<a href="{{ repo.url }}/pushes"{% if tab == "pushes" %} class="on" aria-current="page"{% endif %}>Pushes</a> |
| 20 |
{% if repo.can_maintain() %}<a href="{{ repo.url }}/settings"{% if tab == "settings" %} class="on" aria-current="page"{% endif %}>Settings</a>{% endif %} |
| d23464c0 Andy McCall ↶ |
21 |
</div> |
| 756fe44a Andy McCall ↶ |
22 |
</nav> |
| d23464c0 Andy McCall ↶ |
23 |
{% endmacro %} |
| 24 |
|
| 25 |
{% macro sig(s) %}<span class="sig {{ s.class() }}" title="{{ s.title() }}">{{ s.glyph() }}</span>{% endmacro %} |
| 26 |
|
| 27 |
{% macro labels(c) %}{% for l in c.labels %}<span class="lbl {% if l.kind == crate::repos::view::RefKind::Tag %}lbl-tag{% else %}lbl-bm{% endif %}">{{ l.name }}</span>{% endfor %}{% endmacro %} |
| 28 |
|
| 29 |
{% macro change_row(repo, c) %} |
| 30 |
<div class="chg"> |
| 31 |
<div class="chg-main"> |
| 32 |
<a class="title" href="{{ repo.url }}/change/{{ c.hash }}">{{ c.title }}</a> |
| 33 |
{% call labels(c) %} |
| 34 |
{% if c.resolution %}<span class="tag">resolution</span>{% endif %} |
| 35 |
{% if c.head %}<span class="tag head">head</span>{% endif %} |
| 8933faff Andy McCall ↶ |
36 |
<div class="meta"><span class="who">{% if let Some(a) = c.author.account %}<a href="/{{ a }}">{{ c.author.name }}</a>{% else %}{{ c.author.name }}{% endif %}{% if let Some(v) = c.via %} <span class="mute">via {{ v.name }}</span> <span class="tag{% if v.revoked %} bad{% endif %}" title="{{ v.title() }}">agent</span>{% endif %}</span> · <time title="{{ c.when_ms|when }}">{{ c.when_ms|ago }}</time></div> |
| d23464c0 Andy McCall ↶ |
37 |
</div> |
| 38 |
<div class="chg-side"> |
| 39 |
{% call sig(c.signature) %} |
| 40 |
<a class="hash px" href="{{ repo.url }}/change/{{ c.hash }}" title="{{ c.hash }}">{{ c.short }}</a> |
| 41 |
</div> |
| 42 |
</div> |
| 43 |
{% endmacro %} |
| 44 |
|
| 9df855f2 Andy McCall ↶ |
45 |
{% macro line_text(l) %}<pre>{% if l.segments.is_empty() %}{{ l.text }}{% else %}{% for g in l.segments %}{% if g.changed %}<span class="wx">{{ g.text }}</span>{% else %}{{ g.text }}{% endif %}{% endfor %}{% endif %}</pre>{% endmacro %} |
| 46 |
|
| 47 |
{% macro diff_bar(ignore_ws, keep) %} |
| 48 |
<div class="diff-bar"> |
| 49 |
<span class="modes" data-diff-modes hidden><a href="#" data-diff-mode="unified">unified</a><a href="#" data-diff-mode="split">split</a></span> |
| 50 |
<a class="small" href="?{{ keep }}w={% if ignore_ws %}0{% else %}1{% endif %}">{% if ignore_ws %}show whitespace changes{% else %}hide whitespace changes{% endif %}</a> |
| 51 |
<a class="small" href="#" data-diff-collapse hidden>collapse all</a> |
| 52 |
</div> |
| 53 |
{% endmacro %} |
| 54 |
|
| 55 |
{% macro diff(files, ignore_ws, keep) %} |
| 56 |
{% if !files.is_empty() %}{% call diff_bar(ignore_ws, keep) %}{% endif %} |
| d23464c0 Andy McCall ↶ |
57 |
{% for f in files %} |
| 9df855f2 Andy McCall ↶ |
58 |
<details class="file-diff" id="{{ f.anchor }}"{% if f.lines.len() <= 400 %} open{% endif %}> |
| 59 |
<summary> |
| d23464c0 Andy McCall ↶ |
60 |
<span class="kind kind-{{ f.kind }}">{{ f.kind }}</span> |
| 61 |
<strong>{% if let Some(from) = f.from %}{{ from }} → {% endif %}{{ f.path }}</strong> |
| 62 |
<span class="counts"><span class="add">+{{ f.added }}</span> <span class="del">−{{ f.removed }}</span></span> |
| 9df855f2 Andy McCall ↶ |
63 |
</summary> |
| d23464c0 Andy McCall ↶ |
64 |
{% if f.lines.is_empty() %}<p class="empty">No line changes.</p>{% else %} |
| 65 |
<table class="code diff"> |
| 66 |
{% for l in f.lines %} |
| 67 |
<tr class="{{ l.kind.class() }}"> |
| 68 |
<td class="n">{% if let Some(n) = l.old_no %}{{ n }}{% endif %}</td> |
| 69 |
<td class="n">{% if let Some(n) = l.new_no %}{{ n }}{% endif %}</td> |
| 70 |
<td class="s">{{ l.kind.sign() }}</td> |
| 9df855f2 Andy McCall ↶ |
71 |
<td class="t">{% call line_text(l) %}</td> |
| d23464c0 Andy McCall ↶ |
72 |
</tr> |
| 73 |
{% endfor %} |
| 74 |
</table> |
| 75 |
{% endif %} |
| 9df855f2 Andy McCall ↶ |
76 |
</details> |
| d23464c0 Andy McCall ↶ |
77 |
{% endfor %} |
| 78 |
{% endmacro %} |