1import{Z as C,v as g,i,g as c,f as s,B as m,F as u,l as p,t as l,k as f,N as b,o as n,n as _,s as S}from"./vendor-BAoEexYP.js";import{B as w,C as d,a as A,L as T,b as L,p as B,d as N}from"./index-CVbNzYQR.js";import{_ as x}from"./_plugin-vue_export-helper-DlAUqK2U.js";d.register(A,T,L,B,N);d.defaults.color="#8a9690";d.defaults.font.family="'Inter Tight', sans-serif";d.defaults.font.size=11;d.defaults.borderColor="rgba(31, 40, 35, 0.6)";const H={components:{Head:C,Bar:w},props:{range:String,sport:{type:String,default:"all"},histogram:{type:Array,default:()=>[]},authHistogram:{type:Array,default:()=>[]},anonHistogram:{type:Array,default:()=>[]},stats:{type:Object,default:()=>({total:0,median:0,p90:0})},authStats:{type:Object,default:()=>({total:0,median:0,p90:0})},anonStats:{type:Object,default:()=>({total:0,median:0,p90:0})},thresholds:{type:Object,default:()=>({5:0,10:0,20:0,50:0})}},data(){return{ranges:["24h","7d","30d","90d"],sports:["all","football","cricket"],currentTime:new Date().toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit",timeZoneName:"short"})}},computed:{thresholdItems(){return[5,10,20,50].map(a=>({key:a,value:this.thresholds[a]||0}))},mainChartData(){return{labels:this.histogram.map(a=>a.label),datasets:[{label:"Users / sessions",data:this.histogram.map(a=>a.count),backgroundColor:"#10e5a3",borderRadius:4,borderSkipped:!1}]}},mainChartOpts(){return{responsive:!0,maintainAspectRatio:!1,plugins:{legend:{display:!1},tooltip:{backgroundColor:"#0a0e0c",borderColor:"#2a3530",borderWidth:1,padding:10,titleColor:"#f0f4f1",bodyColor:"#8a9690",cornerRadius:8}},scales:{x:{grid:{display:!1},ticks:{color:"#5a6660"}},y:{grid:{color:"rgba(31, 40, 35, 0.5)"},ticks:{color:"#5a6660"},beginAtZero:!0}}}},authChartData(){return{labels:this.authHistogram.map(a=>a.label),datasets:[{label:"Authenticated",data:this.authHistogram.map(a=>a.count),backgroundColor:"#10e5a3",borderRadius:3,borderSkipped:!1}]}},anonChartData(){return{labels:this.anonHistogram.map(a=>a.label),datasets:[{label:"Anonymous",data:this.anonHistogram.map(a=>a.count),backgroundColor:"#a78bfa",borderRadius:3,borderSkipped:!1}]}},breakdownChartOpts(){return{responsive:!0,maintainAspectRatio:!1,plugins:{legend:{display:!1},tooltip:{backgroundColor:"#0a0e0c",borderColor:"#2a3530",borderWidth:1,padding:10,titleColor:"#f0f4f1",bodyColor:"#8a9690",cornerRadius:8}},scales:{x:{grid:{display:!1},ticks:{color:"#5a6660",font:{size:10}}},y:{grid:{color:"rgba(31, 40, 35, 0.5)"},ticks:{color:"#5a6660"},beginAtZero:!0}}}}},methods:{fmt(a){return(a||0).toLocaleString()},setRange(a){b.get("/admin/assistant/analytics/usage",{range:a,sport:this.sport},{preserveState:!1})},setSport(a){b.get("/admin/assistant/analytics/usage",{range:this.range,sport:a},{preserveState:!1})},refresh(){b.reload()}}},O={class:"aa-page"},R={class:"aa-container"},E={class:"topbar"},I={class:"controls"},D={class:"pill-group"},M=["onClick"],j={class:"pill-group"},U=["onClick"],z={class:"breadcrumb"},Z=["href"],P=["href"],V={class:"hero-strip"},F={class:"hero-card primary"},G={class:"hero-label"},W={class:"hero-value"},Y={class:"hero-card"},q={class:"hero-value"},J={class:"hero-card"},K={class:"hero-value"},Q={class:"hero-card"},X={class:"hero-value"},$={class:"main-chart"},ss={class:"chart-head"},ts={class:"chart-subtitle"},as={class:"chart-area"},es={class:"threshold-grid"},os={class:"threshold-label"},rs={class:"threshold-value"},ls={class:"threshold-bar-wrap"},is={class:"two-grid"},ns={class:"card"},ds={class:"chart-area chart-area-short"},cs={class:"stat-row-group"},us={class:"stat-row"},vs={class:"stat-value"},hs={class:"stat-row"},ps={class:"stat-value"},bs={class:"stat-row"},gs={class:"stat-value"},ms={class:"card"},fs={class:"chart-area chart-area-short"},_s={class:"stat-row-group"},ys={class:"stat-row"},ks={class:"stat-value"},Cs={class:"stat-row"},Ss={class:"stat-value"},ws={class:"stat-row"},As={class:"stat-value"},Ts={class:"aa-footer"},Ls=["href"];function Bs(a,t,o,Ns,v,e){const y=g("Head"),h=g("Bar");return n(),i(u,null,[c(y,{title:"Usage · Assistant Analytics"}),s("div",O,[t[24]||(t[24]=s("div",{class:"aa-bg-glow"},null,-1)),s("div",R,[s("div",E,[t[2]||(t[2]=m('<div class="brand" data-v-491e72eb><div class="brand-mark" data-v-491e72eb><svg viewBox="0 0 24 24" fill="none" stroke="#052016" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" data-v-491e72eb><path d="M3 12 L8 12 L10 6 L14 18 L16 12 L21 12" data-v-491e72eb></path></svg></div><div class="brand-text" data-v-491e72eb><div class="brand-title" data-v-491e72eb>Statz <span class="brand-sep" data-v-491e72eb>/ analytics</span></div><div class="brand-subtitle" data-v-491e72eb>ASSISTANT INTELLIGENCE</div></div></div>',1)),s("div",I,[s("div",D,[(n(!0),i(u,null,p(v.ranges,r=>(n(),i("button",{key:r,class:_(["pill",o.range===r&&"active"]),onClick:k=>e.setRange(r)},l(r),11,M))),128))]),s("div",j,[(n(!0),i(u,null,p(v.sports,r=>(n(),i("button",{key:r,class:_(["pill",o.sport===r&&"active"]),onClick:k=>e.setSport(r)},l(r==="all"?"All":r.charAt(0).toUpperCase()+r.slice(1)),11,U))),128))]),s("button",{class:"icon-btn",title:"Refresh",onClick:t[0]||(t[0]=(...r)=>e.refresh&&e.refresh(...r))}
1,[...t[1]||(t[1]=[m('<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-v-491e72eb><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8" data-v-491e72eb></path><path d="M21 3v5h-5" data-v-491e72eb></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16" data-v-491e72eb></path><path d="M8 16H3v5" data-v-491e72eb></path></svg>',1)])])])]),s("div",z,[s("a",{href:`/admin/assistant/analytics?sport=${o.sport}`},"Analytics",8,Z),t[3]||(t[3]=s("span",{class:"sep"},"/",-1)),s("a",{href:`/admin/assistant/analytics?range=${o.range}&sport=${o.sport}`},"Overview",8,P),t[4]||(t[4]=s("span",{class:"sep"},"/",-1)),t[5]||(t[5]=s("span",{class:"current"},"Usage",-1))]),t[23]||(t[23]=s("div",{class:"page-head"},[s("div",{class:"lead"},[s("h1",null,[s("span",{class:"accent"},"Usage")]),s("p",null,"Events-per-user distribution for monetisation validation")])],-1)),s("div",V,[s("div",F,[s("div",G,"Total users / sessions · "+l(o.range),1),s("div",W,l(e.fmt(o.stats.total)),1)]),s("div",Y,[t[6]||(t[6]=s("div",{class:"hero-label"},"Median events",-1)),s("div",q,l(e.fmt(o.stats.median)),1)]),s("div",J,[t[7]||(t[7]=s("div",{class:"hero-label"},"P90 events",-1)),s("div",K,l(e.fmt(o.stats.p90)),1)]),s("div",Q,[t[9]||(t[9]=s("div",{class:"hero-label"},"Power users · 50+",-1)),s("div",X,[f(l(o.thresholds[50]),1),t[8]||(t[8]=s("span",{class:"hero-suffix"},"%",-1))])])]),s("div",$,[s("div",ss,[s("div",null,[t[10]||(t[10]=s("div",{class:"chart-title"},"Events-per-user distribution",-1)),s("div",ts,"Histogram of event counts per user / session · last "+l(o.range),1)])]),s("div",as,[c(h,{data:e.mainChartData,options:e.mainChartOpts},null,8,["data","options"])])]),s("div",es,[(n(!0),i(u,null,p(e.thresholdItems,r=>(n(),i("div",{key:r.key,class:"threshold-card"},[s("div",os,"â¥"+l(r.key)+" events",1),s("div",rs,[f(l(r.value),1),t[11]||(t[11]=s("span",{class:"threshold-suffix"},"%",-1))]),s("div",ls,[s("div",{class:"threshold-bar-fill",style:S({width:r.value+"%"})},null,4)])]))),128))]),s("div",is,[s("div",ns,[t[15]||(t[15]=s("div",{class:"card-title"},"Authenticated users",-1)),t[16]||(t[16]=s("div",{class:"card-subtitle"},"Events-per-user distribution for logged-in users",-1)),s("div",ds,[c(h,{data:e.authChartData,options:e.breakdownChartOpts},null,8,["data","options"])]),s("div",cs,[s("div",us,[t[12]||(t[12]=s("span",{class:"stat-label"},"Total",-1)),s("span",vs,l(e.fmt(o.authStats.total)),1)]),s("div",hs,[t[13]||(t[13]=s("span",{class:"stat-label"},"Median",-1)),s("span",ps,l(e.fmt(o.authStats.median)),1)]),s("div",bs,[t[14]||(t[14]=s("span",{class:"stat-label"},"P90",-1)),s("span",gs,l(e.fmt(o.authStats.p90)),1)])])]),s("div",ms,[t[20]||(t[20]=s("div",{class:"card-title"},"Anonymous sessions",-1)),t[21]||(t[21]=s("div",{class:"card-subtitle"},"Events-per-session distribution for anonymous visitors",-1)),s("div",fs,[c(h,{data:e.anonChartData,options:e.breakdownChartOpts},null,8,["data","options"])]),s("div",_s,[s("div",ys,[t[17]||(t[17]=s("span",{class:"stat-label"},"Total",-1)),s("span",ks,l(e.fmt(o.anonStats.total)),1)]),s("div",Cs,[t[18]||(t[18]=s("span",{class:"stat-label"},"Median",-1)),s("span",Ss,l(e.fmt(o.anonStats.median)),1)]),s("div",ws,[t[19]||(t[19]=s("span",{class:"stat-label"},"P90",-1)),s("span",As,l(e.fmt(o.anonStats.p90)),1)])])])]),s("div",Ts,[t[22]||(t[22]=s("span",null,"STATZ ASSISTANT ANALYTICS · v0.1",-1)),s("a",{href:`/admin/assistant/analytics?range=${o.range}&sport=${o.sport}`,class:"footer-link"},"â back to overview",8,Ls),s("span",null,"loaded "+l(v.currentTime),1)])])])],64)}const Rs=x(H,[["render",Bs],["__scopeId","data-v-491e72eb"]]);export{Rs as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.