Feature: Hero-Stats dynamisch aufsteigend sortiert
Statt fixer Reihenfolge werden alle 5 Werte nach dem API-Fetch per .sort() aufsteigend geordnet und der Streifen neu aufgebaut. Damit steht immer die kleinste Zahl links, die größte rechts — unabhängig davon wie die Zahlen wachsen. SW by-v1000, APP_VER 1000
This commit is contained in:
parent
64127bf395
commit
2caab31797
4 changed files with 28 additions and 32 deletions
|
|
@ -410,7 +410,7 @@ async def serve_media(path: str, request: _Request):
|
||||||
raise _HE(404, "Nicht gefunden.")
|
raise _HE(404, "Nicht gefunden.")
|
||||||
return _media_response(filepath)
|
return _media_response(filepath)
|
||||||
|
|
||||||
APP_VER = "999" # muss mit APP_VER in app.js übereinstimmen
|
APP_VER = "1000" # muss mit APP_VER in app.js übereinstimmen
|
||||||
|
|
||||||
@app.get("/.well-known/assetlinks.json")
|
@app.get("/.well-known/assetlinks.json")
|
||||||
async def assetlinks():
|
async def assetlinks():
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
Router, State-Management, Navigation, Initialisierung.
|
Router, State-Management, Navigation, Initialisierung.
|
||||||
============================================================ */
|
============================================================ */
|
||||||
|
|
||||||
const APP_VER = '999'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
|
const APP_VER = '1000'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
|
||||||
const APP_VERSION = '1.6.0'; // ← semantische Version, wird bei make release gesetzt
|
const APP_VERSION = '1.6.0'; // ← semantische Version, wird bei make release gesetzt
|
||||||
const IS_STAGING = location.hostname === 'staging.banyaro.app';
|
const IS_STAGING = location.hostname === 'staging.banyaro.app';
|
||||||
// Cache-Bust-Parameter nach Update-Reload sofort entfernen
|
// Cache-Bust-Parameter nach Update-Reload sofort entfernen
|
||||||
|
|
|
||||||
|
|
@ -741,17 +741,7 @@
|
||||||
<span class="badge">Made in Germany</span>
|
<span class="badge">Made in Germany</span>
|
||||||
<span class="badge">Offline-fähig</span>
|
<span class="badge">Offline-fähig</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="hero-stats" id="hero-stats" style="display:none">
|
<div class="hero-stats" id="hero-stats" style="display:none"></div>
|
||||||
<strong id="stat-users">…</strong> Hundemenschen
|
|
||||||
<span class="sep">·</span>
|
|
||||||
<strong id="stat-dogs">…</strong> Hunde
|
|
||||||
<span class="sep">·</span>
|
|
||||||
<strong id="stat-km">…</strong> km Gassi-Wege
|
|
||||||
<span class="sep">·</span>
|
|
||||||
<strong id="stat-kotbeutel">…</strong> Mülleimer für Kotbeutel
|
|
||||||
<span class="sep">·</span>
|
|
||||||
<strong id="stat-diary">…</strong> Tagebuch-Einträge
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
|
@ -1576,30 +1566,36 @@
|
||||||
fetch('/api/stats/public')
|
fetch('/api/stats/public')
|
||||||
.then(function(r) { return r.json(); })
|
.then(function(r) { return r.json(); })
|
||||||
.then(function(d) {
|
.then(function(d) {
|
||||||
var ids = {
|
|
||||||
users: ['stat-users', 'big-users'],
|
|
||||||
dogs: ['stat-dogs', 'big-dogs'],
|
|
||||||
km: ['stat-km', 'big-km'],
|
|
||||||
forum_posts: [null, 'big-posts'],
|
|
||||||
};
|
|
||||||
function set(id, val) {
|
function set(id, val) {
|
||||||
var el = document.getElementById(id);
|
var el = document.getElementById(id);
|
||||||
if (el) el.textContent = fmt.format(val);
|
if (el) el.textContent = fmt.format(val);
|
||||||
}
|
}
|
||||||
set('stat-users', d.users);
|
// Stats-Band (weiter unten)
|
||||||
set('stat-dogs', d.dogs);
|
set('big-users', d.users);
|
||||||
set('stat-km', d.km);
|
set('big-dogs', d.dogs);
|
||||||
set('big-users', d.users);
|
set('big-km', d.km);
|
||||||
set('big-dogs', d.dogs);
|
set('big-posts', d.forum_posts);
|
||||||
set('big-km', d.km);
|
set('big-diary', d.diary_entries);
|
||||||
set('big-posts', d.forum_posts);
|
set('big-kotbeutel', d.kotbeutel);
|
||||||
set('big-diary', d.diary_entries);
|
|
||||||
set('stat-diary', d.diary_entries);
|
|
||||||
set('stat-kotbeutel', d.kotbeutel);
|
|
||||||
set('big-kotbeutel', d.kotbeutel);
|
|
||||||
|
|
||||||
|
// Hero-Streifen: aufsteigend nach Wert sortiert, dynamisch aufgebaut
|
||||||
var heroStats = document.getElementById('hero-stats');
|
var heroStats = document.getElementById('hero-stats');
|
||||||
if (heroStats && d.users > 0) heroStats.style.display = 'flex';
|
if (!heroStats || !d.users) return;
|
||||||
|
|
||||||
|
var items = [
|
||||||
|
{ val: d.users, label: 'Hundemenschen' },
|
||||||
|
{ val: d.dogs, label: 'Hunde' },
|
||||||
|
{ val: d.km, label: 'km Gassi-Wege' },
|
||||||
|
{ val: d.diary_entries, label: 'Tagebuch-Einträge' },
|
||||||
|
{ val: d.kotbeutel, label: 'Mülleimer für Kotbeutel'},
|
||||||
|
];
|
||||||
|
items.sort(function(a, b) { return a.val - b.val; });
|
||||||
|
|
||||||
|
heroStats.innerHTML = items.map(function(item, i) {
|
||||||
|
return (i > 0 ? '<span class="sep">·</span>' : '') +
|
||||||
|
'<strong>' + fmt.format(item.val) + '</strong> ' + item.label;
|
||||||
|
}).join('');
|
||||||
|
heroStats.style.display = 'flex';
|
||||||
})
|
})
|
||||||
.catch(function() {});
|
.catch(function() {});
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
Offline-Cache + Push Notifications + Tile-Cache
|
Offline-Cache + Push Notifications + Tile-Cache
|
||||||
============================================================ */
|
============================================================ */
|
||||||
|
|
||||||
const CACHE_VERSION = 'by-v999';
|
const CACHE_VERSION = 'by-v1000';
|
||||||
const CACHE_STATIC = `${CACHE_VERSION}-static`;
|
const CACHE_STATIC = `${CACHE_VERSION}-static`;
|
||||||
const CACHE_TILES = 'ban-yaro-tiles-v1'; // bleibt über SW-Updates erhalten
|
const CACHE_TILES = 'ban-yaro-tiles-v1'; // bleibt über SW-Updates erhalten
|
||||||
const CACHE_API = 'ban-yaro-api-v1'; // API-Response-Cache
|
const CACHE_API = 'ban-yaro-api-v1'; // API-Response-Cache
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue