PageSourceSearch

https://www.golfclubbrokers.com/build/assets/Ga4Dashboard-CQqBIDhe.js

js golfclubbrokers.com collected 2026-10-06 08:46:39 UTC 14,677 bytes, 1 lines download raw bytes

1import{A as se}from"./AppLayout-u2HSHqRd.js";import{P as te}from"./PageHeader-Bj2YGa67.js";import y from"./index-CINFcwsd.js";import{d as le,o as ae,b as c,c as oe,w as r,j as l,k as t,e as s,D as g,h as b,f as n,t as i,i as M,F as U,I as o,r as re,B as ie,m as V,G as ne,s as v,x as de}from"./app-iurEp11U.js";import{s as Y}from"./index-Cd6kFK_7.js";import ue from"./index-Bv1ppcOj.js";import{s as ve,a as _}from"./index-Dw3eFbxn.js";import{s as J}from"./index-CpcUUZJI.js";import{u as me}from"./useBasePath-yhairkH1.js";import{u as pe}from"./useFetchApi-M-KccD5O.js";import{_ as ce}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./usePermissions-DPCBFvUs.js";import"./index-DXuQPWJi.js";import"./index-oFCYOPCb.js";import"./useCommandPalette-CgOKvdJI.js";import"./readSync-CS0ytIuA.js";import"./useSmartToast-C_zRmPkU.js";import"./index-j6pq_eXi.js";import"./index-Di5Sfp6r.js";import"./index-DzXk5zj5.js";import"./index-x_sRXEbJ.js";import"./index-Y3fSowIO.js";import"./index-BdFPLBzb.js";import"./useBreakpoint-BE6Qpoe4.js";import"./index-CsZibyrs.js";import"./index-Dkb-ulIO.js";import"./index-66lMvHXC.js";import"./index-C8wI-12-.js";import"./index-CE2N1A1Q.js";import"./index-QWafpg3k.js";import"./index-BlxOyAM8.js";import"./index-HwHFpmg8.js";/* empty css            */import"./index-Cmn1Yn8I.js";import"./index-CtjJIZEY.js";import"./index-Cg9I772W.js";const fe={class:"ga4-page"},be={class:"filter-bar"},ge={class:"filter-group"},ye={class:"filter-group"},_e={class:"presets"},he={class:"filter-group checkbox-group"},we={key:0,class:"error-bar"},Re={key:1,class:"loading-center"},Se={class:"stats-row"},Ce={class:"stat-card"},xe={class:"stat-value"},ke={class:"stat-card"},De={class:"stat-value"},Fe={class:"stat-card"},Le={class:"stat-value text-green"},$e={class:"stat-card"},Ve={class:"stat-value text-green"},ze={class:"stat-card"},Be={class:"stat-value"},Pe={class:"stat-card"},Ae={class:"stat-value"},Me={class:"stat-card"},Ue={class:"stat-value"},Ge={class:"trend-chart"},Te={class:"trend-date"},Ie={class:"trend-bar-wrap"},He={class:"trend-conv"},Ne={class:"p-input-icon-left"},Oe={class:"funnel-section"},Ee={class:"funnel-header"},je={key:0,class:"loading-center"},qe={class:"funnel-summary"},Qe={class:"funnel-step"},We={class:"funnel-step-value"},Ye={class:"funnel-step"},Je={class:"funnel-step-value"},Ke={class:"funnel-step"},Xe={class:"funnel-step-value"},Ze={class:"funnel-step"},es={class:"funnel-step-value"},ss={class:"funnel-step step-final"},ts={class:"funnel-step-value text-green"},ls={class:"stats-row",style:{"margin-top":"1rem"}},as={class:"stat-card"},os={class:"stat-card"},rs={class:"stat-card"},is={class:"stat-value text-green"},ns={class:"text-green"},ds={key:2,class:"funnel-empty"},us=le({__name:"Ga4Dashboard",setup(vs){const{basePath:z}=me(),{call:K}=pe(),G=v(0),x=v(!1),h=v(""),B=v(!1),w=v(new Date(Date.now()-30*864e5)),R=v(new Date),p=v(null),T=v([]),I=v([]),H=v([]),P=v([]),N=v([]),O=v([]),m=v(null),S=v(!1),A=v("");function E(d){return d.toISOString().slice(0,10)}async function f(d){const e=new URLSearchParams({report:d,date_from:E(w.value),date_to:E(R.value),nocache:B.value?"1":"0"});return(await K(`${z.value}/admin/analytics/ga4/data?${e}`)).data??{}}async function k(){x.value=!0,h.value="";try{const[d,e,C,F,L,a,$]=await Promise.all([f("kpi"),f("channels"),f("sources"),f("devices"),f("daily_trend"),f("landing_pages"),f("gads_campaigns")]);if(!d.ok){h.value=d.error||"Failed to load data";return}p.value=d,T.value=e.rows||[],I.value=C.rows||[],H.value=F.rows||[],P.value=L.rows||[],N.value=a.rows||[],O.value=$.rows||[]}catch(d){h.value=d.message||"Failed to load data"}finally{x.value=!1}}function D(d){R.value=new Date,w.value=new Date(Date.now()-d*864e5),k()}function X(){R.value=new Date,w.value=new Date(new Date().getFullYear(),new Date().getMonth(),1),k()}const Z=de(()=>Math.max(...P.value.map(d=>d.sessions),1));async function ee(){S.value=!0;try{const d=await f("sell_funnel");m.value=d}catch{m.value=null}finally{S.value=!1}}return ae(()=>k()),(d,e)=>(c(),oe(se,{title:"GA4 Analytics"},{default:r(()=>{var C,F,L;return[l(te,{title:"GA4 Dashboard",breadcrumbs:[{label:"Admin",href:`${t(z)}
1/admin/dashboard`},{label:"Analytics",href:`${t(z)}/admin/analytics`},{label:"GA4 Dashboard"}]},null,8,["breadcrumbs"]),s("div",fe,[s("div",be,[s("div",ge,[e[12]||(e[12]=s("label",null,"From",-1)),l(t(Y),{modelValue:w.value,"onUpdate:modelValue":e[0]||(e[0]=a=>w.value=a),dateFormat:"yy-mm-dd",class:"filter-cal"},null,8,["modelValue"])]),s("div",ye,[e[13]||(e[13]=s("label",null,"To",-1)),l(t(Y),{modelValue:R.value,"onUpdate:modelValue":e[1]||(e[1]=a=>R.value=a),dateFormat:"yy-mm-dd",class:"filter-cal"},null,8,["modelValue"])]),s("div",_e,[l(t(g),{label:"7d",size:"small",severity:"secondary",text:"",onClick:e[2]||(e[2]=a=>D(7))}),l(t(g),{label:"14d",size:"small",severity:"secondary",text:"",onClick:e[3]||(e[3]=a=>D(14))}),l(t(g),{label:"30d",size:"small",severity:"secondary",text:"",onClick:e[4]||(e[4]=a=>D(30))}),l(t(g),{label:"90d",size:"small",severity:"secondary",text:"",onClick:e[5]||(e[5]=a=>D(90))}),l(t(g),{label:"MTD",size:"small",severity:"secondary",text:"",onClick:e[6]||(e[6]=a=>X())})]),s("div",he,[l(t(ue),{modelValue:B.value,"onUpdate:modelValue":e[7]||(e[7]=a=>B.value=a),binary:!0,inputId:"noCache"},null,8,["modelValue"]),e[14]||(e[14]=s("label",{for:"noCache"},"Bypass Cache",-1))]),l(t(g),{label:"Load",icon:"pi pi-refresh",size:"small",onClick:e[8]||(e[8]=a=>k()),loading:x.value},null,8,["loading"])]),h.value?(c(),b("div",we,[e[15]||(e[15]=s("i",{class:"pi pi-exclamation-triangle"},null,-1)),n(" "+i(h.value),1)])):M("",!0),x.value?(c(),b("div",Re,[l(t(J))])):p.value?(c(),b(U,{key:2},[s("div",Se,[s("div",Ce,[e[16]||(e[16]=s("div",{class:"stat-label"},"Sessions",-1)),s("div",xe,i((C=p.value.sessions)==null?void 0:C.toLocaleString()),1)]),s("div",ke,[e[17]||(e[17]=s("div",{class:"stat-label"},"Users",-1)),s("div",De,i((F=p.value.users)==null?void 0:F.toLocaleString()),1)]),s("div",Fe,[e[18]||(e[18]=s("div",{class:"stat-label"},"Conversions",-1)),s("div",Le,i((L=p.value.conversions)==null?void 0:L.toLocaleString()),1)]),s("div",$e,[e[19]||(e[19]=s("div",{class:"stat-label"},"Conversion Rate",-1)),s("div",Ve,i(p.value.conversionRate)+"%",1)]),s("div",ze,[e[20]||(e[20]=s("div",{class:"stat-label"},"Bounce Rate",-1)),s("div",Be,i(p.value.bounceRate)+"%",1)]),s("div",Pe,[e[21]||(e[21]=s("div",{class:"stat-label"},"Pages/Session",-1)),s("div",Ae,i(p.value.pagesPerSession),1)]),s("div",Me,[e[22]||(e[22]=s("div",{class:"stat-label"},"Avg Engagement",-1)),s("div",Ue,i(p.value.avgEngagement)+"s",1)])]),l(t(ve),{activeIndex:G.value,"onUpdate:activeIndex":e[11]||(e[11]=a=>G.value=a)},{default:r(()=>[l(t(_),{value:0},{header:r(()=>[...e[23]||(e[23]=[n("Traffic Sources",-1)])]),default:r(()=>[e[24]||(e[24]=s("h3",null,"By Channel",-1)),l(t(y),{value:T.value,sortMode:"single",removableSort:"",stripedRows:"",size:"small",paginator:!1},{default:r(()=>[l(t(o),{field:"channel",header:"Channel",sortable:""}),l(t(o),{field:"sessions",header:"Sessions",sortable:""}),l(t(o),{field:"users",header:"Users",sortable:""}),l(t(o),{field:"conversions",header:"Conversions",sortable:""}),l(t(o),{field:"bounceRate",header:"Bounce %",sortable:""},{body:r(({data:a})=>[n(i(a.bounceRate)+"%",1)]),_:1})]),_:1},8,["value"]),e[25]||(e[25]=s("h3",{class:"mt-2"},"By Source / Medium",-1)),l(t(y),{value:I.value,sortMode:"single",removableSort:"",stripedRows:"",size:"small",paginator:!0,rows:20},{default:r(()=>[l(t(o),{field:"sourceMedium",header:"Source / Medium",sortable:"",style:{"min-width":"200px"}}),l(t(o),{field:"sessions",header:"Sessions",sortable:""}),l(t(o),{field:"users",header:"Users",sortable:""}),l(t(o),{field:"conversions",header:"Conv",sortable:""}),l(t(o),{field:"bounceRate",header:"Bounce %",sortable:""},{body:r(({data:a})=>[n(i(a.bounceRate)+"%",1)]),_:1})]),_:1},8,["value"])]),_:1}),l(t(_),{value:1},{header:r(()=>[...e[26]||(e[26]=[n("Devices",-1)])]),default:r(()=>[l(t(y),{value:H.value,sortMode:"single",removableSort:"",stripedRows:"",size:"small"},{default:r(()=>[l(t(o),{field:"device",header:"Device",sortable:""}),l(t(o),{field:"sessions",header:"Sessions",sortable:""}),l(t(o),{field:"users",header:"Users",sortable:""}),l(t(o),{field:"conversions",header:"Conversions",sortable:""}),l(t(o),{field:"bounceRate",header:"Bounce %",sortable:""},{body:r(({data:a})=>[n(i(a.bounceRate)+"%",1)]),_:1})]),_:1},8,["value"])]),_:1}),l(t(_),{value:2},{header:r(()=>[...e[27]||(e[27]=[n("Daily Trend",-1)])]),default:r(()=>[s("div",Ge,[(c(!0),b(U,null,re(P.value,a=>(c(),b("div",{key:a.date,class:"trend-row"},[s("div",Te,i(a.date),1),s("div",Ie,[s("div",{class:"trend-bar sessions-bar",style:ie({width:a.sessions/Z.value*100+"%"})},i(a.sessions),5)]),s("div",He,i(a.conversions)+" conv",1)]))),128))])]),_:1}),l(t(_),{value:3},{header:r(()=>[...e[28]||(e[28]=[n("Landing Pages",-1)])]),default:r(()=>[l(t(y),{value:N.value,sortMode:"single",removableSort:"",stripedRows:"",size:"small",paginator:!0,rows:25,globalFilter:A.value,globalFilterFields:["page"]},{header:r(()=>[s("span",Ne,[e[29]||(e[29]=s("i",{class:"pi pi-search"},null,-1)),l(t(ne),{modelValue:A.value,"onUpdate:modelValue":e[9]||(e[9]=a=>A.value=a),placeholder:"Filter pages...",size:"small"},null,8,["modelValue"])])]),default:r(()=>[l(t(o),{field:"page",header:"Landing Page",sortable:"",style:{"min-width":"300
1px"}}),l(t(o),{field:"sessions",header:"Sessions",sortable:""}),l(t(o),{field:"users",header:"Users",sortable:""}),l(t(o),{field:"conversions",header:"Conv",sortable:""}),l(t(o),{field:"conversionRate",header:"CVR %",sortable:""},{body:r(({data:a})=>[s("span",{class:V(a.conversionRate>=5?"text-green":a.conversionRate>=2?"text-amber":"")},i(a.conversionRate)+"% ",3)]),_:1}),l(t(o),{field:"bounceRate",header:"Bounce %",sortable:""},{body:r(({data:a})=>[n(i(a.bounceRate)+"%",1)]),_:1})]),_:1},8,["value","globalFilter"])]),_:1}),l(t(_),{value:4},{header:r(()=>[...e[30]||(e[30]=[n("Ads Campaigns",-1)])]),default:r(()=>[l(t(y),{value:O.value,sortMode:"single",removableSort:"",stripedRows:"",size:"small",paginator:!0,rows:20},{default:r(()=>[l(t(o),{field:"channel",header:"Channel",sortable:""}),l(t(o),{field:"campaign",header:"Campaign",sortable:"",style:{"min-width":"200px"}}),l(t(o),{field:"sessions",header:"Sessions",sortable:""}),l(t(o),{field:"users",header:"Users",sortable:""}),l(t(o),{field:"conversions",header:"Conv",sortable:""}),l(t(o),{field:"conversionRate",header:"CVR %",sortable:""},{body:r(({data:a})=>[n(i(a.conversionRate)+"%",1)]),_:1}),l(t(o),{field:"bounceRate",header:"Bounce %",sortable:""},{body:r(({data:a})=>[n(i(a.bounceRate)+"%",1)]),_:1})]),_:1},8,["value"])]),_:1}),l(t(_),{value:5},{header:r(()=>[...e[31]||(e[31]=[n("Sell Funnel",-1)])]),default:r(()=>{var a,$,j,q,Q,W;return[s("div",Oe,[s("div",Ee,[e[32]||(e[32]=s("div",null,[s("h3",null,"Sell Quote Funnel Analysis"),s("p",{class:"funnel-source-label"},"GA4 (Google's tracking) — page-view counts from your Google Analytics property")],-1)),l(t(g),{label:"Load Funnel",icon:"pi pi-chart-bar",size:"small",onClick:e[10]||(e[10]=u=>ee()),loading:S.value},null,8,["loading"])]),e[46]||(e[46]=s("p",{class:"funnel-desc"},"Page view progression: Home → Sell Page → Register → Cart → Confirmation",-1)),S.value?(c(),b("div",je,[l(t(J))])):(a=m.value)!=null&&a.totals?(c(),b(U,{key:1},[s("div",qe,[s("div",Qe,[e[33]||(e[33]=s("div",{class:"funnel-step-label"},"Home",-1)),s("div",We,i(($=m.value.totals.home)==null?void 0:$.toLocaleString()),1)]),e[38]||(e[38]=s("div",{class:"funnel-arrow"},[s("i",{class:"pi pi-arrow-right"})],-1)),s("div",Ye,[e[34]||(e[34]=s("div",{class:"funnel-step-label"},"Sell Page",-1)),s("div",Je,i((j=m.value.totals.sell)==null?void 0:j.toLocaleString()),1)]),e[39]||(e[39]=s("div",{class:"funnel-arrow"},[s("i",{class:"pi pi-arrow-right"})],-1)),s("div",Ke,[e[35]||(e[35]=s("div",{class:"funnel-step-label"},"Register",-1)),s("div",Xe,i((q=m.value.totals.register)==null?void 0:q.toLocaleString()),1)]),e[40]||(e[40]=s("div",{class:"funnel-arrow"},[s("i",{class:"pi pi-arrow-right"})],-1)),s("div",Ze,[e[36]||(e[36]=s("div",{class:"funnel-step-label"},"Cart",-1)),s("div",es,i((Q=m.value.totals.cart)==null?void 0:Q.toLocaleString()),1)]),e[41]||(e[41]=s("div",{class:"funnel-arrow"},[s("i",{class:"pi pi-arrow-right"})],-1)),s("div",ss,[e[37]||(e[37]=s("div",{class:"funnel-step-label"},"Confirmation",-1)),s("div",ts,i((W=m.value.totals.confirmation)==null?void 0:W.toLocaleString()),1)])]),s("div",ls,[s("div",as,[e[42]||(e[42]=s("div",{class:"stat-label"},"Sell → Register",-1)),s("div",{class:V(["stat-value",m.value.totals.sell_to_register>=20?"text-green":"text-amber"])},i(m.value.totals.sell_to_register)+"% ",3)]),s("div",os,[e[43]||(e[43]=s("div",{class:"stat-label"},"Register → Confirm",-1)),s("div",{class:V(["stat-value",m.value.totals.register_to_confirm>=15?"text-green":"text-amber"])},i(m.value.totals.register_to_confirm)+"% ",3)]),s("div",rs,[e[44]||(e[44]=s("div",{class:"stat-label"},"Overall Rate",-1)),s("div",is,i(m.value.totals.overall_rate)+"%",1)])]),e[45]||(e[45]=s("h3",{class:"mt-2"},"Daily Breakdown",-1)),l(t(y),{value:m.value.days,sortMode:"single",removableSort:"",stripedRows:"",size:"small",paginator:m.value.days.length>31,rows:31},{default:r(()=>[l(t(o),{field:"date",header:"Date",sortable:"",style:{"min-width":"100px"}}),l(t(o),{field:"dayOfWeek",header:"Day",sortable:"",style:{width:"60px"}}),l(t(o),{field:"home",header:"Home",sortable:""},{body:r(({data:u})=>
1[n(i(u.home.toLocaleString()),1)]),_:1}),l(t(o),{field:"sell",header:"Sell",sortable:""},{body:r(({data:u})=>[n(i(u.sell.toLocaleString()),1)]),_:1}),l(t(o),{field:"register",header:"Register",sortable:""},{body:r(({data:u})=>[n(i(u.register.toLocaleString()),1)]),_:1}),l(t(o),{field:"cart",header:"Cart",sortable:""},{body:r(({data:u})=>[n(i(u.cart.toLocaleString()),1)]),_:1}),l(t(o),{field:"confirmation",header:"Confirm",sortable:""},{body:r(({data:u})=>[s("span",ns,i(u.confirmation.toLocaleString()),1)]),_:1}),l(t(o),{field:"sell_to_register",header:"Sell→Reg %",sortable:""},{body:r(({data:u})=>[s("span",{class:V(u.sell_to_register>=20?"text-green":u.sell_to_register>=10?"text-amber":"text-red")},i(u.sell_to_register)+"% ",3)]),_:1}),l(t(o),{field:"overall_rate",header:"Overall %",sortable:""},{body:r(({data:u})=>[n(i(u.overall_rate)+"%",1)]),_:1})]),_:1},8,["value","paginator"])],64)):S.value?M("",!0):(c(),b("div",ds,' Click "Load Funnel" to analyze the sell quote conversion funnel. '))])]}),_:1})]),_:1},8,["activeIndex"])],64)):M("",!0)])]}),_:1}))}}),Ws=ce(us,[["__scopeId","data-v-a6ea20d5"]]);export{Ws 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.