Fix blank page: dynamic budget field lookup and month title
This commit is contained in:
+20
-5
@@ -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 totalSpend = valid.reduce((s,d)=>s+d.payable_spend,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 = `
|
||||
<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">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">Budget</div><div class="value">$${meta.aug_budget.toLocaleString()}</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 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">Budget</div><div class="value">$${fmt(budget)}</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">Rec. Daily Install</div><div class="value blue">${fmt(meta.rec_daily_install)}</div></div>
|
||||
`;
|
||||
|
||||
const labels = valid.map(d=>d.date.slice(5));
|
||||
|
||||
Reference in New Issue
Block a user