const $=id=>document.getElementById(id);function table(id,title,rows){const root=$(id);root.replaceChildren();const h=document.createElement('h2');h.textContent=title;root.append(h);const t=document.createElement('table');for(const row of rows){const tr=document.createElement('tr');for(const value of row){const td=document.createElement('td');td.textContent=String(value??'—');tr.append(td)}t.append(tr)}root.append(t)}async function load(){try{const r=await fetch('/admin/api/pokeasel/summary?days='+$('days').value,{credentials:'same-origin'});if(r.status===403)throw Error('请先在后台首页登录');if(!r.ok)throw Error('读取失败');const d=await r.json();$('status').textContent=d.coverage.firstAt?'首次接收:'+new Date(d.coverage.firstAt).toLocaleString('zh-CN',{timeZone:'Asia/Shanghai'}):'尚未收到Pokeasel事件,未采集不等于0。';$('summary').textContent=d.coverage.firstAt?'打开 '+(d.totals.opens||0)+' · 开始绘画 '+(d.totals.started||0)+' · 新画纸 '+(d.totals.sheets||0)+' · 购买成功 '+(d.totals.purchased||0):'—';table('events','功能事件',d.events.map(e=>[e.label,e.count]));table('trend','每日活跃设备码',d.trend.map(e=>[e.day,e.active]));table('languages','语言 · 设备日',d.languages.map(e=>[e.language,e.deviceDays]));table('versions','版本 · 设备日',d.versions.map(e=>[e.version,e.deviceDays]))}catch(e){$('status').textContent=e.message}}$('refresh').onclick=$('days').onchange=load;load();