Fix blank page: dynamic budget field lookup and month title

This commit is contained in:
caoxiaoqi
2026-09-03 18:47:20 +08:00
parent 6391b0ca18
commit 1441d48e59
+20 -5
View File
@@ -68,17 +68,32 @@ fetch('data.json?t='+Date.now()).then(r=>r.json()).then(({meta, daily})=>{
const totalInstall = valid.reduce((s,d)=>s+d.install,0); const totalInstall = valid.reduce((s,d)=>s+d.install,0);
const totalSpend = valid.reduce((s,d)=>s+d.payable_spend,0); const totalSpend = valid.reduce((s,d)=>s+d.payable_spend,0);
const totalEnroll = valid.reduce((s,d)=>s+d.enroll_session,0); const totalEnroll = valid.reduce((s,d)=>s+d.enroll_session,0);
const avgRate = (totalEnroll/totalInstall*100).toFixed(1); const avgRate = totalInstall ? (totalEnroll/totalInstall*100).toFixed(1) : '0.0';
// 预算字段名会随月份变化(aug_budget / sep_budget ...),动态查找,避免写死导致渲染崩溃
const budgetKey = Object.keys(meta).find(k=>k.endsWith('_budget'));
const budget = budgetKey!=null ? meta[budgetKey] : null;
const fmt = v => (v==null ? '-' : Number(v).toLocaleString());
// 根据数据里的月份动态更新标题
if (valid.length){
const monthNames=['January','February','March','April','May','June','July','August','September','October','November','December'];
const [y,m] = valid[valid.length-1].date.split('-');
const title = `${monthNames[parseInt(m,10)-1]} ${y}`;
document.title = 'EG Nagwa Daily Report - ' + title;
const sub = document.querySelector('.subtitle');
if (sub) sub.innerHTML = 'Egypt · ' + title + ' · Install / Enroll Session / Revenue';
}
document.getElementById('summary').innerHTML = ` document.getElementById('summary').innerHTML = `
<div class="card"><div class="label">Total Install (MTD)</div><div class="value blue">${totalInstall.toLocaleString()}</div></div> <div class="card"><div class="label">Total Install (MTD)</div><div class="value blue">${totalInstall.toLocaleString()}</div></div>
<div class="card"><div class="label">Total Enroll Session</div><div class="value green">${totalEnroll.toLocaleString()}</div></div> <div class="card"><div class="label">Total Enroll Session</div><div class="value green">${totalEnroll.toLocaleString()}</div></div>
<div class="card"><div class="label">Avg Enroll Rate</div><div class="value orange">${avgRate}%</div></div> <div class="card"><div class="label">Avg Enroll Rate</div><div class="value orange">${avgRate}%</div></div>
<div class="card"><div class="label">Total Spend</div><div class="value purple">$${totalSpend.toFixed(2)}</div></div> <div class="card"><div class="label">Total Spend</div><div class="value purple">$${totalSpend.toFixed(2)}</div></div>
<div class="card"><div class="label">Budget</div><div class="value">$${meta.aug_budget.toLocaleString()}</div></div> <div class="card"><div class="label">Budget</div><div class="value">$${fmt(budget)}</div></div>
<div class="card"><div class="label">Budget Left</div><div class="value green">$${meta.left.toLocaleString()}</div></div> <div class="card"><div class="label">Budget Left</div><div class="value green">$${fmt(meta.left)}</div></div>
<div class="card"><div class="label">Budget Used</div><div class="value orange">${meta.spend_pct}</div></div> <div class="card"><div class="label">Budget Used</div><div class="value orange">${meta.spend_pct||'-'}</div></div>
<div class="card"><div class="label">Rec. Daily Install</div><div class="value blue">${meta.rec_daily_install.toLocaleString()}</div></div> <div class="card"><div class="label">Rec. Daily Install</div><div class="value blue">${fmt(meta.rec_daily_install)}</div></div>
`; `;
const labels = valid.map(d=>d.date.slice(5)); const labels = valid.map(d=>d.date.slice(5));