Skip to content

Commit 0e56c49

Browse files
feat(demo): show github release download stats
1 parent 51c58bf commit 0e56c49

3 files changed

Lines changed: 77 additions & 0 deletions

File tree

demo/index.html

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,16 @@ <h1 class="hero-title" data-i18n="hero.title">壢中成績 app</h1>
5252
<span data-i18n="hero.cta">下載最新版本</span>
5353
</a>
5454
<p class="cta-sub" data-i18n="hero.cta.sub">適用於 Android 10+</p>
55+
<div class="download-stats" id="download-stats">
56+
<div class="stat-row">
57+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
58+
<span id="stat-latest">...</span>
59+
</div>
60+
<div class="stat-row">
61+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
62+
<span id="stat-prev">...</span>
63+
</div>
64+
</div>
5565
</div>
5666
</div>
5767
<div class="hero-visual">

demo/main.js

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,51 @@ function setLanguage(lang) {
110110
if (toggle) {
111111
toggle.textContent = lang === 'zh' ? 'EN' : '中文';
112112
}
113+
114+
updateDownloadStatsText();
115+
}
116+
117+
// ===== Fetch Download Stats =====
118+
let releaseData = null;
119+
async function initDownloadStats() {
120+
try {
121+
const response = await fetch('https://api.github.com/repos/alvin000009238/clhs_score/releases');
122+
if (response.ok) {
123+
const data = await response.json();
124+
if (data.length >= 2) {
125+
releaseData = {
126+
latest: {
127+
tag: data[0].tag_name,
128+
count: data[0].assets.reduce((sum, asset) => sum + asset.download_count, 0)
129+
},
130+
prev: {
131+
tag: data[1].tag_name,
132+
count: data[1].assets.reduce((sum, asset) => sum + asset.download_count, 0)
133+
}
134+
};
135+
updateDownloadStatsText();
136+
const statsEl = document.getElementById('download-stats');
137+
if (statsEl) statsEl.style.opacity = 1;
138+
}
139+
}
140+
} catch (err) {
141+
console.error('Failed to fetch stats:', err);
142+
}
143+
}
144+
145+
function updateDownloadStatsText() {
146+
if (!releaseData) return;
147+
const latestEl = document.getElementById('stat-latest');
148+
const prevEl = document.getElementById('stat-prev');
149+
if (!latestEl || !prevEl) return;
150+
151+
if (currentLang === 'zh') {
152+
latestEl.textContent = `最新版 (${releaseData.latest.tag}): ${releaseData.latest.count} 次下載`;
153+
prevEl.textContent = `上一版 (${releaseData.prev.tag}): ${releaseData.prev.count} 次下載`;
154+
} else {
155+
latestEl.textContent = `Latest (${releaseData.latest.tag}): ${releaseData.latest.count} dl`;
156+
prevEl.textContent = `Previous (${releaseData.prev.tag}): ${releaseData.prev.count} dl`;
157+
}
113158
}
114159

115160
// ===== Reduced Motion Check =====
@@ -214,6 +259,7 @@ document.addEventListener('DOMContentLoaded', () => {
214259
initHeroContent();
215260
initScrollAnimations();
216261
initNavObserver();
262+
initDownloadStats();
217263

218264
const toggle = document.getElementById('lang-toggle');
219265
if (toggle) {

demo/style.css

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,23 @@ a {
253253
color: var(--text-tertiary);
254254
}
255255

256+
.download-stats {
257+
margin-top: 8px;
258+
font-size: 0.85rem;
259+
color: var(--text-tertiary);
260+
opacity: 0;
261+
transition: opacity 0.5s ease;
262+
display: flex;
263+
flex-direction: column;
264+
gap: 4px;
265+
}
266+
267+
.stat-row {
268+
display: flex;
269+
align-items: center;
270+
gap: 6px;
271+
}
272+
256273
/* ===== Hero Visual ===== */
257274
.hero-visual {
258275
display: flex;
@@ -574,6 +591,10 @@ a {
574591
align-items: center;
575592
}
576593

594+
.download-stats {
595+
align-items: center;
596+
}
597+
577598
.hero-visual {
578599
order: -1;
579600
}

0 commit comments

Comments
 (0)