/* ============================================================
BAN YARO — Gründer-Seite
Öffentliches Leaderboard der 100 Gründer & Partner.
============================================================ */
window.Page_gruender = (() => {
let _container = null;
async function init(container, appState) {
_container = container;
_render();
_load();
}
function refresh() { _load(); }
function onDogChange() {}
function _render() {
_container.innerHTML = `
🏆
Die 100 Gründer von Ban Yaro
Nur 100 Menschen weltweit können sagen: Ich war von Anfang an dabei.
Diese Plätze werden nie wieder vergeben.
`;
}
async function _load() {
const el = _container.querySelector('#grnd-content');
try {
const d = await API.get('/partner/founders/stats');
if (!d || typeof d.total === 'undefined') throw new Error('Ungültige Antwort vom Server.');
el.innerHTML = _renderStats(d);
} catch (e) {
el.innerHTML = `${e.message || 'Fehler beim Laden.'}
`;
}
}
function _renderStats(d) {
const pct = Math.round((d.total / d.max) * 100);
const open = d.open;
return `
${d.total} / ${d.max} Gründer
${open > 0 ? `${open} Plätze frei` : 'Geschlossen'}
${open > 0 ? `
Bist du dabei? Frag einen unserer Partner nach ihrem Einladungscode.
` : `
Alle 100 Gründer-Plätze sind vergeben. Diese Gruppe ist für immer geschlossen.
`}
${d.partners.length > 0 ? `
${UI.icon('trophy')} Partner-Challenge
Unsere Partner treten gegeneinander an — wer bringt die meisten Gründer?
${d.partners.map((p, i) => {
const medal = i === 0 ? '🥇' : i === 1 ? '🥈' : i === 2 ? '🥉' : `#${i+1}`;
const barPct = d.partners[0].uses > 0 ? Math.round((p.uses / d.partners[0].uses) * 100) : 0;
return `
`;
}).join('')}
` : ''}
${d.founders.length > 0 ? `
${UI.icon('users')} Die Gründer
${d.founders.map(f => `
#${f.founder_number}
${UI.escape(f.name)}
`).join('')}
${Array.from({length: d.open}, (_, i) => `
#${d.total + i + 1}
frei
`).join('')}
` : `
Noch keine Gründer — sei der Erste!
`}
`;
}
return { init, refresh, onDogChange };
})();