@@ -1,7 +1,11 @@
1 1 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{% extends "base.html" %}
2 2 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{% block title %}{{ project.name }} — Fossilrepo{% endblock %}
3 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
4 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {% block extra_head %}
5 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <script src="https://cdn.jsdelivr.net/npm/[email protected] /dist/chart.umd.min.js"></script>
6 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {% endblock %}
3 7 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
4 8 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{% block content %}
5 9 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
<div class="flex items-center justify-between mb-6">
6 10 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
<div>
7 11 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
<h1 class="text-2xl font-bold text-gray-100">{{ project.name }}</h1>
@@ -25,10 +29,20 @@
25 29 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{% endif %}
26 30 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
27 31 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
<div class="grid grid-cols-1 gap-6 lg:grid-cols-3">
28 32 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
<!-- Main content -->
29 33 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
<div class="lg:col-span-2 space-y-6">
34 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {% if commit_activity_json %}
35 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <!-- Commit activity chart -->
36 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <div class="rounded-lg bg-gray-800 border border-gray-700 p-4">
37 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <h3 class="text-sm font-medium text-gray-300 mb-3">Commit Activity (last year)</h3>
38 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <div style="height: 120px;">
39 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <canvas id="activityChart"></canvas>
40 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ </div>
41 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ </div>
42 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {% endif %}
43 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
30 44 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{% if repo_stats and recent_commits %}
31 45 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
<!-- Recent activity -->
32 46 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
<div class="rounded-lg bg-gray-800 border border-gray-700">
33 47 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
<div class="px-4 py-3 border-b border-gray-700">
34 48 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
<h3 class="text-sm font-medium text-gray-300">Recent Activity</h3>
@@ -106,10 +120,26 @@
106 120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
<a href="{% url 'fossil:wiki' slug=project.slug %}" class="text-sm font-medium text-gray-200 hover:text-brand-light">{{ repo_stats.wiki_page_count|default:"0" }}</a>
107 121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
</div>
108 122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
</div>
109 123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
</div>
110 124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{% endif %}
125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {% if top_contributors %}
127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <!-- Contributors -->
128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <div class="rounded-lg bg-gray-800 border border-gray-700 p-4">
129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <h3 class="text-sm font-medium text-gray-300 mb-3">Top Contributors</h3>
130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <div class="space-y-1">
131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {% for c in top_contributors %}
132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <a href="{% url 'fossil:user_activity' slug=project.slug username=c.user %}"
133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ class="flex items-center justify-between rounded-md px-2 py-1.5 hover:bg-gray-700/50">
134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <span class="text-sm text-gray-300">{{ c.user }}</span>
135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <span class="text-xs text-gray-500">{{ c.count }} commits</span>
136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ </a>
137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {% endfor %}
138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ </div>
139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ </div>
140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {% endif %}
111 141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
112 142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
<!-- Project info -->
113 143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
<div class="rounded-lg bg-gray-800 border border-gray-700 p-4">
114 144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
<h3 class="text-sm font-medium text-gray-300 mb-3">About</h3>
115 145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
<dl class="space-y-2 text-sm">
@@ -131,6 +161,36 @@
131 161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
</div>
132 162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
</dl>
133 163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
</div>
134 164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
</div>
135 165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
</div>
166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {% if commit_activity_json %}
168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <script>
169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const ctx = document.getElementById('activityChart').getContext('2d');
170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ new Chart(ctx, {
171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ type: 'bar',
172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ data: {
173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ labels: {{ commit_activity_json|safe }}.map((_, i) => ''),
174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ datasets: [{
175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ data: {{ commit_activity_json|safe }},
176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ backgroundColor: '#DC394C',
177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ borderRadius: 2,
178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ barPercentage: 0.8,
179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ categoryPercentage: 0.9,
180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }]
181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ },
182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ options: {
183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ responsive: true,
184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ maintainAspectRatio: false,
185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ plugins: { legend: { display: false }, tooltip: {
186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ callbacks: { title: (items) => { const w = 51 - items[0].dataIndex; return w === 0 ? 'This week' : w + ' week' + (w > 1 ? 's' : '') + ' ago'; } }
187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }},
188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ scales: {
189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ x: { display: false, grid: { display: false } },
190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ y: { display: false, grid: { display: false }, beginAtZero: true }
191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ });
194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ </script>
195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {% endif %}
136 196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{% endblock %}
137 197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!