/* ============================================================ 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.

Lade…
`; } 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 `
${medal}
${_esc(p.label)}
${p.uses}
`; }).join('')}
` : ''} ${d.founders.length > 0 ? `

${UI.icon('users')} Die Gründer

${d.founders.map(f => `
#${f.founder_number} ${_esc(f.name)}
`).join('')} ${Array.from({length: d.open}, (_, i) => `
#${d.total + i + 1} frei
`).join('')}
` : `

Noch keine Gründer — sei der Erste!

`} `; } function _esc(s) { return String(s || '').replace(/[&<>"']/g, c => ({'&':'&','<':'<','>':'>','"':'"',"'":'''}[c])); } return { init, refresh, onDogChange }; })();