SPB Git

Repository Public MIT Selected

insights.njk 4.4 KB 68 lines jinja

1{#2  ─────────────────────────────────────────────3   SPB Git — Personal Git Platform4  ─────────────────────────────────────────────5   Author  : Simon-Pierre Boucher6   Contact : contact@spboucher.ai7   File    : src/web/views/insights.njk8   Purpose : Repository insights — ruled figures, commit calendar, declared dependencies, contributors, most changed paths9   License : MIT © Simon-Pierre Boucher10  ─────────────────────────────────────────────11#}{% extends "layout.njk" %}12{% import "components/ui.njk" as ui %}13{% block content %}14{% include "partials/repo-header.njk" %}1516{{ ui.statStrip([17  { value: insights.commitsAllTime | num, label: 'commits, all time', title: 'Commits reachable from ' + overview.defaultBranch },18  { value: insights.calendar.total | num, label: 'commits, last 52 weeks' },19  { value: insights.calendar.activeDays | num, label: 'active days (52 w)' },20  { value: insights.calendar.longest | num, label: 'longest streak, days' },21  { value: insights.fileCount | num, label: 'files at HEAD' },22  { value: insights.totalBytes | bytes, label: 'tracked bytes' }23], 'stat-strip-repo') }}2425<section class="section" aria-labelledby="cal-h">26  {% call ui.sectionHead('cal-h', '01', 'Calendar', 'Commit calendar') %}27  <a class="link-arrow" href="/about/metrics">Definitions {{ ui.icon('arrow-right', 14) }}</a>28  {% endcall %}29  <figure class="figure-block">30    <div class="heatmap-scroll" tabindex="0" aria-label="Commit calendar, scroll horizontally">{{ insights.calendar.svg | safe }}</div>31    <figcaption>32      <span>Fig. 1 — {{ insights.calendar.total | num }} commits in the last 52 weeks{% if insights.firstCommit %} · first commit {{ insights.firstCommit | datefull }}{% endif %}{% if insights.calendar.busiest %} · busiest {{ insights.calendar.busiest.date }} ({{ insights.calendar.busiest.count }}){% endif %}</span>33      <span class="heatmap-legend" aria-hidden="true">Less<i class="heatmap-cell-demo" data-level="0"></i><i class="heatmap-cell-demo" data-level="1"></i><i class="heatmap-cell-demo" data-level="2"></i><i class="heatmap-cell-demo" data-level="3"></i><i class="heatmap-cell-demo" data-level="4"></i>More</span>34    </figcaption>35  </figure>36</section>3738<div class="split-columns">39  <section class="section" aria-labelledby="dep-h">40    {{ ui.sectionHead('dep-h', '02', 'Dependencies', 'Declared dependencies', 'Parsed from manifests at HEAD — no install, no network.') }}41    {% if insights.manifests.length %}42    {% for m in insights.manifests %}43    <div class="card manifest-card">44      <div class="card-head"><h3><code>{{ m.path }}</code></h3><span class="card-head-note">{{ m.ecosystem }} · {{ m.deps.length }}</span></div>45      <div class="chip-row manifest-deps">46        {% for d in m.deps %}<a class="chip chip-{{ 'topic' if d.kind == 'runtime' else 'neutral' }}" href="{{ m.registry }}{{ d.name }}" rel="noopener nofollow" title="{{ d.kind }} {{ d.version }}">{{ d.name }}{% if d.version %} <span class="chip-ver">{{ d.version }}</span>{% endif %}</a>{% endfor %}47      </div>48    </div>49    {% endfor %}50    {% else %}{{ ui.emptyState('No dependency manifest found', 'package.json, requirements.txt, pyproject.toml, Cargo.toml, go.mod and Package.swift are recognised.', '', 'layers') }}{% endif %}51  </section>52  <aside class="side-stack">53    <section aria-labelledby="auth-h">54      <h2 id="auth-h" class="label-head">Contributors</h2>55      <ul class="rank-list">56        {% for a in insights.authors %}<li><span class="commit-avatar">{{ a.email | identicon(18) }}</span><span class="rank-name">{{ a.name }}</span><span class="rank-val">{{ a.commits | num }}</span></li>{% else %}<li class="activity-empty">No commits.</li>{% endfor %}57      </ul>58    </section>59    <section aria-labelledby="hot-h">60      <h2 id="hot-h" class="label-head">Most changed paths <span class="label-note">last 400 commits</span></h2>61      <ul class="rank-list">62        {% for p in insights.hotPaths %}<li><a class="rank-name rank-path" href="/{{ overview.name }}/commits/{{ currentRef }}?path={{ p.path | urlencode }}" title="{{ p.path }}">{{ p.path }}</a><span class="rank-val">{{ p.changes }}</span></li>{% endfor %}63      </ul>64    </section>65  </aside>66</div>67{% endblock %}68
Files main
Menu

Theme