Pokeasel

主动同意后的功能统计 · 北京时间自然日 · 最多保留30天

加载中…

仅代表主动开启统计的样本;每日随机码是设备日,不是独立用户,不能用于跨日留存。开始绘画每天最多记一次。购买结果为操作事件,不能替代Apple财务数据。无数据时显示未采集。

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();