The Next Chapter — Leadership Update

The Next Chapter

Leadership Campaign Update Panel

Enter the new campaign totals and click Download Updated Website. This creates a fresh index.html without requiring you to edit any code.
Goal$20,000
Pledged$0
Remaining$20,000
Builders0
Received$0

After downloading, replace the old website file with the newly generated index.html. The public page will show the updated pledged total, remaining goal, and builder count. “Total Received” is included only for your leadership calculation and is not displayed publicly.

`; const goal = document.getElementById('goal'); const pledged = document.getElementById('pledged'); const builders = document.getElementById('builders'); const received = document.getElementById('received'); const money = value => new Intl.NumberFormat('en-US', { style:'currency', currency:'USD', maximumFractionDigits:0 }).format(Number(value) || 0); function refresh(){ const g = Number(goal.value) || 0; const p = Number(pledged.value) || 0; const b = Number(builders.value) || 0; const r = Number(received.value) || 0; document.getElementById('goalPreview').textContent = money(g); document.getElementById('pledgedPreview').textContent = money(p); document.getElementById('remainingPreview').textContent = money(Math.max(g-p,0)); document.getElementById('buildersPreview').textContent = b.toLocaleString(); document.getElementById('receivedPreview').textContent = money(r); } [goal, pledged, builders, received].forEach(el => el.addEventListener('input', refresh)); document.getElementById('downloadBtn').addEventListener('click', () => { const g = Number(goal.value) || 0; const p = Number(pledged.value) || 0; const b = Number(builders.value) || 0; const remaining = Math.max(g-p,0); let updated = SOURCE_HTML .replace(/()[^<]*(<\/strong>)/, `$1${money(g)}$2`) .replace(/()[^<]*(<\/strong>)/, `$1${money(p)}$2`) .replace(/()[^<]*(<\/strong>)/, `$1${money(remaining)}$2`) .replace(/()[^<]*(<\/strong>)/, `$1${b.toLocaleString()}$2`); const blob = new Blob([updated], {type:'text/html'}); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = 'index.html'; document.body.appendChild(a); a.click(); a.remove(); URL.revokeObjectURL(url); }); document.getElementById('resetBtn').addEventListener('click', () => { goal.value = 20000; pledged.value = 0; builders.value = 0; received.value = 0; refresh(); }); refresh();