PageSourceSearch

https://norbu-ai.org/build/assets/StatisticsPage-SbFeaWTh.js

js norbu-ai.org collected 2026-10-04 21:53:48 UTC 14,904 bytes, 1 lines download raw bytes

1import{b as y,o as d,a as o,d as Y,c as k,u as e,C as G,D as X,w as a,z as I,g as p,e as s,A as se,h as W,n as Z,t as D,F as O,r as L,f as h,Q as ae,m as oe}from"./app-CfS4LbAX.js";import{_ as le}from"./UserLayout.vue_vue_type_script_setup_true_lang-BY8fbdza.js";import{x as ee,y as ne,o as re,w as ue,c as B,p as ie}from"./index-DFz-Sc--.js";import{b as R,_ as E}from"./index-Co_cmPHZ.js";import{r as de,_ as b,a as M}from"./CardContent.vue_vue_type_script_setup_true_lang-DeLsyd-L.js";import{d as V}from"./dayjs.min-Br5g4VIW.js";import{_ as $}from"./CardHeader.vue_vue_type_script_setup_true_lang-HVkCv9a2.js";import{_ as S}from"./CardTitle.vue_vue_type_script_setup_true_lang-CY69nBAL.js";import{A as T}from"./index.esm-U6sqyWtx.js";import"./index-B1PmCHhW.js";function ce(v,c){return d(),y("svg",{width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[o("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M4.5 1C4.77614 1 5 1.22386 5 1.5V2H10V1.5C10 1.22386 10.2239 1 10.5 1C10.7761 1 11 1.22386 11 1.5V2H12.5C13.3284 2 14 2.67157 14 3.5V12.5C14 13.3284 13.3284 14 12.5 14H2.5C1.67157 14 1 13.3284 1 12.5V3.5C1 2.67157 1.67157 2 2.5 2H4V1.5C4 1.22386 4.22386 1 4.5 1ZM10 3V3.5C10 3.77614 10.2239 4 10.5 4C10.7761 4 11 3.77614 11 3.5V3H12.5C12.7761 3 13 3.22386 13 3.5V5H2V3.5C2 3.22386 2.22386 3 2.5 3H4V3.5C4 3.77614 4.22386 4 4.5 4C4.77614 4 5 3.77614 5 3.5V3H10ZM2 6V12.5C2 12.7761 2.22386 13 2.5 13H12.5C12.7761 13 13 12.7761 13 12.5V6H2ZM7 7.5C7 7.22386 7.22386 7 7.5 7C7.77614 7 8 7.22386 8 7.5C8 7.77614 7.77614 8 7.5 8C7.22386 8 7 7.77614 7 7.5ZM9.5 7C9.22386 7 9 7.22386 9 7.5C9 7.77614 9.22386 8 9.5 8C9.77614 8 10 7.77614 10 7.5C10 7.22386 9.77614 7 9.5 7ZM11 7.5C11 7.22386 11.2239 7 11.5 7C11.7761 7 12 7.22386 12 7.5C12 7.77614 11.7761 8 11.5 8C11.2239 8 11 7.77614 11 7.5ZM11.5 9C11.2239 9 11 9.22386 11 9.5C11 9.77614 11.2239 10 11.5 10C11.7761 10 12 9.77614 12 9.5C12 9.22386 11.7761 9 11.5 9ZM9 9.5C9 9.22386 9.22386 9 9.5 9C9.77614 9 10 9.22386 10 9.5C10 9.77614 9.77614 10 9.5 10C9.22386 10 9 9.77614 9 9.5ZM7.5 9C7.22386 9 7 9.22386 7 9.5C7 9.77614 7.22386 10 7.5 10C7.77614 10 8 9.77614 8 9.5C8 9.22386 7.77614 9 7.5 9ZM5 9.5C5 9.22386 5.22386 9 5.5 9C5.77614 9 6 9.22386 6 9.5C6 9.77614 5.77614 10 5.5 10C5.22386 10 5 9.77614 5 9.5ZM3.5 9C3.22386 9 3 9.22386 3 9.5C3 9.77614 3.22386 10 3.5 10C3.77614 10 4 9.77614 4 9.5C4 9.22386 3.77614 9 3.5 9ZM3 11.5C3 11.2239 3.22386 11 3.5 11C3.77614 11 4 11.2239 4 11.5C4 11.7761 3.77614 12 3.5 12C3.22386 12 3 11.7761 3 11.5ZM5.5 11C5.22386 11 5 11.2239 5 11.5C5 11.7761 5.22386 12 5.5 12C5.77614 12 6 11.7761 6 11.5C6 11.2239 5.77614 11 5.5 11ZM7 11.5C7 11.2239 7.22386 11 7.5 11C7.77614 11 8 11.2239 8 11.5C8 11.7761 7.77614 12 7.5 12C7.22386 12 7 11.7761 7 11.5ZM9.5 11C9.22386 11 9 11.2239 9 11.5C9 11.7761 9.22386 12 9.5 12C9.77614 12 10 11.7761 10 11.5C10 11.2239 9.77614 11 9.5 11Z",fill:"currentColor"})])}function pe(v,c){return d(),y("svg",{width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[o("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M8.84182 3.13514C9.04327 3.32401 9.05348 3.64042 8.86462 3.84188L5.43521 7.49991L8.86462 11.1579C9.05348 11.3594 9.04327 11.6758 8.84182 11.8647C8.64036 12.0535 8.32394 12.0433 8.13508 11.8419L4.38508 7.84188C4.20477 7.64955 4.20477 7.35027 4.38508 7.15794L8.13508 3.15794C8.32394 2.95648 8.64036 2.94628 8.84182 3.13514Z",fill:"currentColor"})])}const fe=Y({__name:"Popover",props:{defaultOpen:{type:Boolean},open:{type:Boolean},modal:{type:Boolean}},emits:["update:open"],setup(v,{emit:c}){const r=ee(v,c);return(i,f)=>(d(),k(e(ne),G(X(e(r))),{default:a(()=>[I(i.$slots,"default")]),_:3},16))}}),me=Y({inheritAttrs:!1,__name:"PopoverContent",props:{forceMount:{type:Boolean},trapFocus:{type:Boolean},side:{},sideOffset:{default:4},align:{default:"center"},alignOffset:{},avoidCollisions:{type:Boolean},collisionBoundary:{},collisionPadding:{},arrowPadding:{},sticky:{},hideWhenDetached:{type:Boolean},updatePositionStrategy:{},prioritizePosition:{type:Boolean},asChild:{type:Boolean},as:{},disableOutsidePointerEvents:{type:Boolean},class:{}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(v,{emit:c}){const u=v,_=c,r=p(()=>{const{class:f,...w}=u;return w}),i=ee(r,_);return(f,w)=>(d(),k(e(re),null,{default:a(()=>[s(e(ue),se({...e(i),...f.$attrs},{class:e(B)("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:sli
1de-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",u.class)}),{default:a(()=>[I(f.$slots,"default")]),_:3},16,["class"])]),_:3}))}}),_e=Y({__name:"PopoverTrigger",props:{asChild:{type:Boolean},as:{}},setup(v){const c=v;return(u,_)=>(d(),k(e(ie),G(X(c)),{default:a(()=>[I(u.$slots,"default")]),_:3},16))}}),ve={class:"space-y-4"},ge={class:"relative flex w-full items-center justify-center pt-1"},Ce={class:"text-sm font-medium"},ye={class:"w-full border-collapse space-y-1"},he={class:"flex"},xe={class:"space-y-1"},be=["onClick"],De=Y({__name:"Calendar",props:{modelValue:{default:void 0},class:{}},emits:["update:modelValue"],setup(v,{emit:c}){const u=v,_=c,r=W(u.modelValue||new Date),i=p(()=>r.value.getMonth()),f=p(()=>r.value.getFullYear()),w=["January","February","March","April","May","June","July","August","September","October","November","December"],A=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],U=p(()=>{const n=f.value,g=i.value,C=new Date(n,g,1),x=new Date(n,g+1,0).getDate(),q=C.getDay(),P=[],Q=new Date(n,g-1,0);for(let m=q-1;m>=0;m--)P.push({day:Q.getDate()-m,isCurrentMonth:!1,date:new Date(n,g-1,Q.getDate()-m)});for(let m=1;m<=x;m++)P.push({day:m,isCurrentMonth:!0,date:new Date(n,g,m)});const te=42-P.length;for(let m=1;m<=te;m++)P.push({day:m,isCurrentMonth:!1,date:new Date(n,g+1,m)});return P}),K=p(()=>{const n=[],g=U.value;for(let C=0;C<g.length;C+=7)n.push(g.slice(C,C+7));return n}),F=n=>u.modelValue?n.toDateString()===u.modelValue.toDateString():!1,H=n=>n.toDateString()===new Date().toDateString(),N=n=>{_("update:modelValue",n)},z=()=>{r.value=new Date(f.value,i.value-1,1)},l=()=>{r.value=new Date(f.value,i.value+1,1)},t=p(()=>`${w[i.value]} ${f.value}`);return(n,g)=>(d(),y("div",{class:Z(e(B)("p-3",u.class))},[o("div",ve,[o("header",ge,[o("button",{onClick:z,class:Z(e(B)(e(R)({variant:"outline"}),"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 absolute left-1"))},[s(e(pe),{class:"h-4 w-4"})],2),o("div",Ce,D(t.value),1),o("button",{onClick:l,class:Z(e(B)(e(R)({variant:"outline"}),"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 absolute right-1"))},[s(e(de),{class:"h-4 w-4"})],2)]),o("table",ye,[o("thead",null,[o("tr",he,[(d(),y(O,null,L(A,C=>o("th",{key:C,class:"text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]"},D(C),1)),64))])]),o("tbody",xe,[(d(!0),y(O,null,L(K.value,(C,J)=>(d(),y("tr",{key:`week-${J}`,class:"flex w-full mt-2"},[(d(!0),y(O,null,L(C,x=>(d(),y("td",{key:x.date.toString(),class:"h-9 w-9 text-center text-sm p-0 relative"},[o("button",{onClick:q=>N(x.date),class:Z(e(B)(e(R)({variant:"ghost"}),"h-9 w-9 p-0 font-normal",F(x.date)&&"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground",H(x.date)&&!F(x.date)&&"bg-accent text-accent-foreground",!x.isCurrentMonth&&"text-muted-foreground opacity-50"))},D(x.day),11,be)]))),128))]))),128))])])])],2))}}),j=Y({__name:"DatePicker",props:{modelValue:{default:void 0},placeholder:{default:"Pick a date"},class:{}},emits:["update:modelValue"],setup(v,{emit:c}){const u=v,_=c,r=i=>i?V(i).format("MMM DD, YYYY"):u.placeholder;return(i,f)=>(d(),k(e(fe),null,{default:a(()=>[s(e(_e),{"as-child":""},{default:a(()=>[s(e(E),{variant:"outline",class:Z(e(B)("w-[280px] justify-start text-left font-normal",!i.modelValue&&"text-muted-foreground",u.class))},{default:a(()=>[s(e(ce),{class:"mr-2 h-4 w-4"}),h(" "+D(r(i.modelValue)),1)]),_:1},8,["class"])]),_:1}),s(e(me),{class:"w-auto p-0"},{default:a(()=>[s(e(De),{"model-value":i.modelValue,"onUpdate:modelValue":f[0]||(f[0]=w=>_("update:modelValue",w))},null,8,["model-value"])]),_:1})]),_:1}))}}),we={class:"max-w-7xl mx-auto p-6"},Me={class:"flex flex-wrap gap-4 items-end"},Ve={class:"space-x-2 flex flex-row items-center"},ke={class:"space-x-2 flex flex-row items-center"},$e={class:"flex gap-2"},Se={class:"flex flex-row gap-6"},Be={class:"grid grid-cols-1 gap-6 mb-6 w-64"},Ye={class:"text-2xl font-bold"},Pe={class:"text-xs text-muted-foreground"},Ze={class:"text-2xl font-bold"},Fe={class:"text-2xl font-bold"},Ne={class:"w-full"},Te={class:"w-full"},Ae={class:"w-full"},Ue={key:0,class:"flex items-center justify-center h-64 text-muted-foreground"},Ke={class:"w-full"},He={key:0,class:"flex items-center justify-center h-64 text-muted-foreground"},ze={class:"w-full"},Oe={key:0,class:"flex items-center justify-center h-64 text-muted-foreground"},et=Y({__name:"StatisticsPage",setup(v){const c=ae(),u=W(new Date(c.props.startDate)),_=W(new Date(c.props.endDate)),r=p(()=>c.props.messageStats),i=p(()=>c.props.userStats),f=p(()=>c.props.conversationStats),w=p(()=>c.props.totalUsersBeforePeriod),A=p(()=>r.value.reduce((l,t)=>
1l+t.count,0));p(()=>r.value.reduce((l,t)=>l+t.bot1_count,0)),p(()=>r.value.reduce((l,t)=>l+t.bot2_count,0));const U=p(()=>({data:r.value.map(l=>({date:V(l.date).format("MMM DD"),norbu_count:l.bot1_count,norbu_ebt_count:l.bot2_count})),series:[{type:"bar",xKey:"date",yKey:"norbu_count",yName:"Norbu",fill:"#3b82f6",stroke:"#3b82f6"},{type:"bar",xKey:"date",yKey:"norbu_ebt_count",yName:"Norbu EBT",fill:"#c47658",stroke:"#c47658"}],axes:[{type:"category",position:"bottom",title:{text:"Date"}},{type:"number",position:"left",title:{text:"Number of Messages"}}],title:{text:"Daily Message Count"},height:400,background:{fill:"transparent"}})),K=p(()=>({data:r.value.map(l=>({date:V(l.date).format("MMM DD"),cost:l.cost})),series:[{type:"bar",xKey:"date",yKey:"cost",fill:"#d76060",stroke:"#d76060"}],axes:[{type:"category",position:"bottom",title:{text:"Date"}},{type:"number",position:"left",title:{text:"USD"}}],title:{text:"Daily cost (USD)"},height:300,background:{fill:"transparent"}}));p(()=>i.value.reduce((l,t)=>l+t.count,0));const F=p(()=>{let l=w.value;return{data:i.value.map(n=>(l+=n.count,{date:V(n.date).format("MMM DD"),count:l})),series:[{type:"line",xKey:"date",yKey:"count",stroke:"#10b981",strokeWidth:3,marker:{enabled:!0,fill:"#10b981",stroke:"#10b981"}}],axes:[{type:"category",position:"bottom",title:{text:"Date"}},{type:"number",position:"left",title:{text:"Total Users"}}],title:{text:"User registrations (cumulative)"},height:300,background:{fill:"transparent"}}}),H=p(()=>({data:[{asset:"Website",amount:f.value.website_count,color:"#3b82f6"},{asset:"Mobile",amount:f.value.mobile_count,color:"#10b981"},{asset:"Telegram",amount:f.value.telegram_count,color:"#f59e0b"}],series:[{type:"pie",angleKey:"amount",legendItemKey:"asset"}],title:{text:"Active users"},height:400,background:{fill:"transparent"}})),N=()=>{oe.get(route("statistics"),{start_date:V(u.value).format("YYYY-MM-DD"),end_date:V(_.value).format("YYYY-MM-DD")},{preserveState:!0,preserveScroll:!0})},z=()=>{const l=new Date,t=new Date(l.getFullYear(),l.getMonth()-1,l.getDate());u.value=t,_.value=l,N()};return(l,t)=>(d(),k(le,null,{default:a(()=>[o("div",we,[t[15]||(t[15]=o("div",{class:"text-2xl font-bold mb-8 text-gray-700"}," Statistics ",-1)),s(e(b),{class:"mb-6"},{default:a(()=>[s(e($),null,{default:a(()=>[s(e(S),null,{default:a(()=>t[2]||(t[2]=[h("Date Range Filter")])),_:1})]),_:1}),s(e(M),null,{default:a(()=>[o("div",Me,[o("div",Ve,[t[3]||(t[3]=o("label",{class:"text-sm font-medium"},"From Date",-1)),s(e(j),{modelValue:u.value,"onUpdate:modelValue":t[0]||(t[0]=n=>u.value=n),placeholder:"Select start date",class:"w-[180px]"},null,8,["modelValue"])]),o("div",ke,[t[4]||(t[4]=o("label",{class:"text-sm font-medium"},"To Date",-1)),s(e(j),{modelValue:_.value,"onUpdate:modelValue":t[1]||(t[1]=n=>_.value=n),placeholder:"Select end date",class:"w-[180px]"},null,8,["modelValue"])]),o("div",$e,[s(e(E),{onClick:N,class:"px-6"},{default:a(()=>t[5]||(t[5]=[h(" Apply Filters ")])),_:1}),s(e(E),{onClick:z,variant:"outline",class:"px-6"},{default:a(()=>t[6]||(t[6]=[h(" Reset to Month ")])),_:1})])])]),_:1})]),_:1}),o("div",Se,[o("div",Be,[s(e(b),null,{default:a(()=>[s(e($),{class:"pb-2"},{default:a(()=>[s(e(S),{class:"text-sm font-medium"},{default:a(()=>t[7]||(t[7]=[h("Total Messages")])),_:1})]),_:1}),s(e(M),null,{default:a(()=>[o("div",Ye,D(A.value),1),o("p",Pe,D(e(V)(u.value).format("MMM DD"))+" - "+D(e(V)(_.value).format("MMM DD, YYYY")),1)]),_:1})]),_:1}),s(e(b),null,{default:a(()=>[s(e($),{class:"pb-2"},{default:a(()=>[s(e(S),{class:"text-sm font-medium"},{default:a(()=>t[8]||(t[8]=[h("Total cost")])),_:1})]),_:1}),s(e(M),null,{default:a(()=>[o("div",Ze," $"+D(r.value.length>0?Math.round(r.value.reduce((n,g)=>n+g.cost,0)):0),1),t[9]||(t[9]=o("p",{class:"text-xs text-muted-foreground"}," Total cost for period ",-1))]),_:1})]),_:1}),s(e(b),null,{default:a(()=>[s(e($),{class:"pb-2"},{default:a(()=>[s(e(S),{class:"text-sm font-medium"},{default:a(()=>t[10]||(t[10]=[h("Active users")])),_:1})]),_:1}),s(e(M),null,{default:a(()=>[o("div",Fe,D(f.value.total_count),1),t[11]||(t[11]=o("p",{class:"text-xs text-muted-foreground"}," Unique conversations ",-1))]),_:1})]),_:1})]),o("div",Ne,[s(e(b),null,{default:a(()=>[s(e(M),null,{default:a(()=>[o("div",Te,[s(e(T),{options:H.value},null,8,["options"])])]),_:1})]),_:1})])]),s(e(b),null,{default:a(()=>[s(e($),null,{default:a(()=>[s(e(S),null,{default:a(()=>t[12]||(t[12]=[h("Messages per day")])),_:1})]),_:1}),s(e(M),null,{default:a(()=>[o("div",Ae,[r.value.length===0?(d(),y("div",Ue," No data available for the selected date range ")):(d(),k(e(T),{key:1,options:U.value},null,8,["options"]))])]),_:1})]),_:1}),s(e(b),{class:"mt-6"},{default:a(()=>[s(e($),null,{default:a(()=>[s(e(S),null,{default:a(()=>t[13]||(t[13]=[h("Cost per day")])),_:1})]),_:1}),s(e(M),null,{default:a(()=>[o("div",Ke,[r.value.length===0?(d(),y("div",He," No data available for the selected date range ")):(d(),k(e(T),{key:1,options:K.value},null,8,["options"]))])]),_:1})]),_:1}),s(e(b),{class:"mt-6"},{default:a(()=>[s(e($),null,{default:a(()=>[s(e(S),null,{default:a(()=>t[14]||(t[14]=[h("User registrations")])),_:1})]),_:1}),s(e(M),null,{default:a(()=>[o("div",ze,[i.value.length===0?(d(),y("div",Oe," No data available for the selected date range ")):(d(),k(e(T),{key:1,options:F.value},null,8,["options"]))])]),_:1})]),_:1}),s(e(b),{class:"mt-6"})])]),_:1}))}});
1export{et 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.