PageSourceSearch

https://go853c.manus.space/assets/AdminAnalytics-B2iieib3.js

js go853c.manus.space collected 2026-10-03 05:04:37 UTC 25,794 bytes, 1 lines download raw bytes

1import{s as ta,b as ea,r as D,t as y,j as a,K as Q,T as M,aQ as A,bb as h,bc as j,aR as u,M as na,P as ia,a0 as R,ah as ca,i as la}from"./index-DxpMJHht.js";import{A as da}from"./AdminLayout-0d316vlG.js";import{B as G}from"./badge-DsT5f29h.js";import{A as V}from"./activity-CtER4h7f.js";import{U as F}from"./users-pO4YXYoT.js";import"./message-square-BL6WhYih.js";import"./credit-card-CBqiWxzd.js";import"./scroll-text-S2xX2Zri.js";import"./brain-BILY2OXr.js";import"./shield-check-B-c2fWxU.js";import"./code-xml-CbOybmm2.js";import"./link-2-CKikx1IH.js";const ra={buyer:{label:"買家",color:"text-blue-700",bg:"bg-blue-100"},owner:{label:"業主",color:"text-green-700",bg:"bg-green-100"},agent:{label:"地產經紀",color:"text-amber-700",bg:"bg-amber-100"},company:{label:"地產公司",color:"text-purple-700",bg:"bg-purple-100"},staff:{label:"公司員工",color:"text-orange-700",bg:"bg-orange-100"},unknown:{label:"未設定",color:"text-gray-500",bg:"bg-gray-100"}},O={residential:"住宅",shop:"商舖",office:"寫字樓",industrial:"工廈",carpark:"車位",land:"土地",luxury:"豪宅",newdev:"新盤"},ma={view_property:"查看盤源",search:"搜索",favorite:"收藏",publish:"發佈樓盤",view_brochure:"查看樓書",contact_agent:"聯絡經紀",view_transaction:"查看成交",calc_mortgage:"按揭計算",compare:"樓盤對比",price_alert:"降價提醒",profile_setup_completed:"完善資料",profile_setup_skipped:"跳過資料"};function E({data:r,labelKey:x,valueKey:e,colorClass:i="bg-orange-400",maxItems:c=10}){const m=r.slice(0,c),p=Math.max(...m.map(t=>Number(t[e])||0),1);return a.jsx("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:91",className:"space-y-2",children:m.map((t,n)=>{const o=Number(t[e])||0,d=Math.round(o/p*100);return a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:96",className:"flex items-center gap-2",children:[a.jsx("span",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:97",className:"text-xs text-gray-500 w-24 shrink-0 truncate",children:String(t[x])}),a.jsx("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:98",className:"flex-1 bg-gray-100 rounded-full h-2",children:a.jsx("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:99",className:`${i} h-2 rounded-full transition-all`,style:{width:`${d}%`}})}),a.jsx("span",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:104",className:"text-xs font-semibold text-gray-700 w-10 text-right",children:o.toLocaleString()})]},n)})})}function _({data:r,dateKey:x,valueKey:e,color:i="#f97316"}){if(!r.length)return a.jsx("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:126",className:"text-xs text-gray-400 text-center py-4",children:"暫無數據"});const c=r.map(g=>Number(g[e])||0),m=Math.max(...c,1),p=Math.min(...c,0),t=m-p||1,n=400,o=80,d=8,N=c.map((g,T)=>{const S=d+T/(c.length-1||1)*(n-d*2),L=d+(1-(g-p)/t)*(o-d*2);return`${S},${L}`}).join(" "),v=`${d},${o-d} ${N} ${n-d},${o-d}`,w=c.reduce((g,T)=>g+T,0),f=Math.round(w/c.length);return a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:142",children:[a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:143",className:"flex justify-between text-xs text-gray-400 mb-1",children:[a.jsx("span",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:144",children:String(r[0]?.[x]??"")}),a.jsxs("span",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:145",className:"text-gray-600 font-medium",children:["均值 ",f,"/天"]}),a.jsx("span",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:146",children:String(r[r.length-1]?.[x]??"")})]}),a.jsxs("svg",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:148",viewBox:`0 0 ${n} ${o}`,className:"w-full h-16",children:[a.jsx("defs",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:149",children:a.jsxs("linearGradient",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:150",id:`grad-${i.replace("#","")}`,x1:"0",y1:"0",x2:"0",y2:"1",children:[a.jsx("stop",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:151",offset:"0%",stopColor:i,stopOpacity:"0.25"}),a.jsx("stop",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:152",offset:"100%",stopColor:i,stopOpacity:"0.02"})]})}),a.jsx("polygon",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:155",points:v,fill:`url(#grad-${i.replace("#","")})`}),a.jsx("polyline",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:156",points:N,fill:"none",stroke:i,strokeWidth:"2",strokeLinejoin:"round"})]})]})}function oa({data:r}){const x=r.reduce((t,n)=>t+n.value,0)||1;let e=-90;const i=40,c=50,m=50,p=r.map(t=>{const n=t.value/x*360,o=e;e+=n;const d=o*Math.PI/180,b=(o+n)*Math.PI/180,N=c+i*Math.cos(d),v=m+i*Math.sin(d),w=c+i*Math.cos(b),f=m+i*Math.sin(b),g=n>180?1:0;return{...t,path:`M ${c} ${m} L ${N} ${v} A ${i} ${i} 0 ${g} 1 ${w} ${f} Z`,angle:n}});return a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:183",className:"flex items-center gap-4",children:[a.jsxs("svg",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:184",viewBox:"0 0 100 100",className:"w-24 h-24 shrink-0",children:[p.map((t,n)=>a.jsx("path",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:186",d:t.path,fill:t.color,stroke:"white",strokeWidth:"1"},n)),a.jsx("circle",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:188",cx:c,cy:m,r:22,fill:"white"}),a.jsx("text",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:189",x:c,y:m-4,textAnchor:"middle",fontSize:"8",fill:"#374151",fontWeight:"bold",children:x.toLocaleStr
1ing()}),a.jsx("text",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:190",x:c,y:m+8,textAnchor:"middle",fontSize:"6",fill:"#9ca3af",children:"總用戶"})]}),a.jsx("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:192",className:"flex flex-col gap-1.5 flex-1",children:p.filter(t=>t.angle>0).map((t,n)=>a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:194",className:"flex items-center justify-between",children:[a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:195",className:"flex items-center gap-1.5",children:[a.jsx("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:196",className:"w-2.5 h-2.5 rounded-full shrink-0",style:{background:t.color}}),a.jsx("span",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:197",className:"text-xs text-gray-600",children:t.label})]}),a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:199",className:"flex items-center gap-1",children:[a.jsx("span",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:200",className:"text-xs font-semibold text-gray-800",children:t.value.toLocaleString()}),a.jsxs("span",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:201",className:"text-xs text-gray-400",children:["(",Math.round(t.value/x*100),"%)"]})]})]},n))})]})}function $({value:r,onChange:x}){return a.jsx("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:215",className:"flex gap-1",children:[7,14,30,90].map(e=>a.jsxs("button",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:217",onClick:()=>x(e),className:`px-2 py-0.5 text-xs rounded-md transition-colors ${r===e?"bg-orange-500 text-white":"bg-gray-100 text-gray-500 hover:bg-gray-200"}`,children:[e,"天"]},e))})}function wa(){const r=ta(),[,x]=ea(),e=r.tab??"properties",[i,c]=D.useState(30),[m,p]=D.useState(30),[t,n]=D.useState(30),[o,d]=D.useState(20),[b,N]=D.useState(!1),{data:v,isLoading:w}=y.admin.analytics.userIdentityDistribution.useQuery(),{data:f,isLoading:g}=y.admin.analytics.userDailyGrowth.useQuery({days:i}),{data:T,isLoading:S}=y.admin.analytics.propertyTypeDistribution.useQuery(),{data:L,isLoading:U}=y.admin.analytics.propertyDailyGrowth.useQuery({days:m}),{data:C,isLoading:Y}=y.admin.analytics.topViewedProperties.useQuery({limit:o}),{data:P,isLoading:W}=y.admin.analytics.behaviorEventStats.useQuery({days:t}),{data:z,isLoading:H}=y.admin.analytics.behaviorDailyTrend.useQuery({days:t}),{data:X,isLoading:Z}=y.admin.analytics.propertyDistrictDistribution.useQuery(),B=["#3b82f6","#22c55e","#f59e0b","#a855f7","#f97316","#9ca3af"],K=(v??[]).map((s,l)=>({label:ra[s.identityType]?.label??s.identityType,value:s.total,color:B[l%B.length]})),k={};(T??[]).forEach(s=>{const l=O[s.propertyType]??s.propertyType;k[l]=(k[l]??0)+s.total});const q=Object.entries(k).map(([s,l])=>({label:s,total:l})).sort((s,l)=>l.total-s.total),I=(P??[]).map(s=>({label:ma[s.eventType]??s.eventType,total:s.total})),J=(X??[]).map(s=>({label:s.subDistrictName,total:s.total})),aa=b?C??[]:(C??[]).slice(0,10),sa=(P??[]).reduce((s,l)=>s+l.total,0);return a.jsx(da,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:290",children:a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:291",className:"p-6 space-y-6 max-w-7xl",children:[a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:293",className:"flex items-center justify-between",children:[a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:294",children:[a.jsx("h1",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:295",className:"text-xl font-bold text-gray-900",children:"數據統計儀表板"}),a.jsx("p",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:296",className:"text-sm text-gray-500 mt-0.5",children:"用戶行為、物業趨勢與瀏覽熱度分析"})]}),a.jsxs(G,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:298",variant:"outline",className:"text-xs text-orange-600 border-orange-200 bg-orange-50",children:[a.jsx(V,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:299",className:"w-3 h-3 mr-1"}),"實時數據"]})]}),a.jsx("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:304",className:"flex gap-1 border-b pb-0",children:[{key:"properties",label:"物業數據",icon:a.jsx(Q,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:306",className:"w-3.5 h-3.5"})},{key:"users",label:"用戶行為",icon:a.jsx(F,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:307",className:"w-3.5 h-3.5"})},{key:"traffic",label:"流量分析",icon:a.jsx(M,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:308",className:"w-3.5 h-3.5"})}].map(s=>a.jsxs("button",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:310",onClick:()=>x(`/admin/analytics/${s.key}`),className:`flex items-center gap-1.5 px-4 py-2 text-sm font-medium border-b-2 transition-colors ${e===s.key?"border-orange-500 text-orange-600":"border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300"}`,children:[s.icon,s.label]},s.key))}),(e==="users"||e==="traffic")&&a.jsx(a.Fragment,{children:a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:325",className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[a.jsxs(A,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:327",className:"border-0 shadow-sm",children:[a.jsx(h,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:328",className:"pb-3",children:a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:329",className:"flex items-center justify-between",children:[a.jsxs(j,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:330",className:"text-sm font-semibold text-gray-700 flex items-center gap-2",children:[a.jsx(F,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:331",className:"w-4 h-4 text-blue-500"}),"用戶身份分佈"]}),a.jsx("span",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:334",className:"text-xs text-gray-400",children:"全部用戶"})]})}),a.jsx(u,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:337",children:w?a.jsx("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:339",className:"h-24 bg-gray-50 rounded-lg animate-pulse"}):K.length===0?a.jsx("p",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:341",className:"text-xs text-gray-400 text-center py-6",children:"暫無數據"}):a.jsx(oa,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:343",data:K})})]}),a.jsxs(A,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:349",className:"border-0 shadow-sm",children:[a.jsx(h,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:350",className:"pb-3",children:a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:351",className:"flex items-center justify-between",children:[a.jsxs(j,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:352",className:"text-sm font-semibold text-gray-700 flex items-center gap-2",children:[a.jsx(M,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:353",className:"w-4 h-4 text-green-500"}),"用戶每日新增"]}),a.jsx($,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:356",value:i,onChange:c})]})}),a.jsxs(u,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:359",children:[g?a.jsx("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:361",className:"h-16 bg-gray-50 rounded-lg animate-pulse"}):a.jsx(_,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:363",data:f??[],dateKey:"date",valueKey:"total",color:"#22c55e"}),a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:370",className:"mt-3 flex justify-between text-xs text-gray-500",children:[a.jsxs("span",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:371",children:["累計新增:",a.jsx("strong",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:371",className:"text-gray-800",children:(f??[]).reduce((s,l)=>
1s+l.total,0).toLocaleString()})," 人"]}),a.jsxs("span",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:372",children:["最高單日:",a.jsx("strong",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:372",className:"text-gray-800",children:Math.max(...(f??[]).map(s=>s.total),0).toLocaleString()})," 人"]})]})]})]})]})}),(e==="properties"||e==="traffic")&&a.jsx(a.Fragment,{children:a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:381",className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[a.jsxs(A,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:383",className:"border-0 shadow-sm",children:[a.jsx(h,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:384",className:"pb-3",children:a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:385",className:"flex items-center justify-between",children:[a.jsxs(j,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:386",className:"text-sm font-semibold text-gray-700 flex items-center gap-2",children:[a.jsx(Q,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:387",className:"w-4 h-4 text-amber-500"}),"物業類型分佈"]}),a.jsx("span",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:390",className:"text-xs text-gray-400",children:"已發佈物業"})]})}),a.jsx(u,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:393",children:S?a.jsx("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:395",className:"h-32 bg-gray-50 rounded-lg animate-pulse"}):a.jsx(E,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:397",data:q,labelKey:"label",valueKey:"total",colorClass:"bg-amber-400"})})]}),a.jsxs(A,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:408",className:"border-0 shadow-sm",children:[a.jsx(h,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:409",className:"pb-3",children:a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:410",className:"flex items-center justify-between",children:[a.jsxs(j,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:411",className:"text-sm font-semibold text-gray-700 flex items-center gap-2",children:[a.jsx(M,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:412",className:"w-4 h-4 text-amber-500"}),"物業每日新增"]}),a.jsx($,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:415",value:m,onChange:p})]})}),a.jsxs(u,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:418",children:[U?a.jsx("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:420",className:"h-16 bg-gray-50 rounded-lg animate-pulse"}):a.jsx(_,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:422",data:L??[],dateKey:"date",valueKey:"total",color:"#f59e0b"}),a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:429",className:"mt-3 flex justify-between text-xs text-gray-500",children:[a.jsxs("span",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:430",children:["累計新增:",a.jsx("strong",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:430",className:"text-gray-800",children:(L??[]).reduce((s,l)=>s+l.total,0).toLocaleString()})," 個"]}),a.jsxs("span",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:431",children:["最高單日:",a.jsx("strong",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:431",className:"text-gray-800",children:Math.max(...(L??[]).map(s=>s.total),0).toLocaleString()})," 個"]})]})]})]})]})}),(e==="properties"||e==="users"||e==="traffic")&&a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:440",className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[a.jsxs(A,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:442",className:"border-0 shadow-sm",children:[a.jsx(h,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:443",className:"pb-3",children:a.jsxs(j,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:444",className:"text-sm font-semibold text-gray-700 flex items-center gap-2",children:[a.jsx(na,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:445",className:"w-4 h-4 text-purple-500"}),"地區物業分佈 Top 15"]})}),a.jsx(u,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:449",children:Z?a.jsx("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:451",className:"h-40 bg-gray-50 rounded-lg animate-pulse"}):a.jsx(E,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:453",data:J,labelKey:"label",valueKey:"total",colorClass:"bg-purple-400",maxItems:15})})]}),a.jsxs(A,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:465",className:"border-0 shadow-sm",children:[a.jsx(h,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:466",className:"pb-3",children:a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:467",className:"flex items-center justify-between",children:[a.jsxs(j,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:468",className:"text-sm font-semibold text-gray-700 flex items-center gap-2",children:[a.jsx(ia,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:469",className:"w-4 h-4 text-orange-500"}),"用戶行為事件統計"]}),a.jsx($,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:472",value:t,onChange:n})]})}),a.jsx(u,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:475",children:W?a.jsx("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:477",className:"h-40 bg-gray-50 rounded-lg animate-pulse"}):I.length===0?a.jsx("p",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:479",className:"text-xs text-gray-400 text-center py-6",children:"暫無行為日誌數據"}):a.jsxs(a.Fragment,{children:[a.jsx(E,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:482",data:I,labelKey:"label",valueKey:"total",colorClass:"bg-orange-400"}),a.jsxs("p",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:488",className:"text-xs text-gray-400 mt-3 text-right",children:["共 ",a.jsx("strong",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:489",className:"text-gray-600",children:sa.toLocaleStr
1ing()})," 次行為記錄(近 ",t," 天)"]})]})})]})]}),(e==="users"||e==="traffic")&&a.jsxs(A,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:500",className:"border-0 shadow-sm",children:[a.jsx(h,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:501",className:"pb-3",children:a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:502",className:"flex items-center justify-between",children:[a.jsxs(j,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:503",className:"text-sm font-semibold text-gray-700 flex items-center gap-2",children:[a.jsx(V,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:504",className:"w-4 h-4 text-orange-500"}),"用戶行為日誌每日趨勢"]}),a.jsx($,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:507",value:t,onChange:n})]})}),a.jsx(u,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:510",children:H?a.jsx("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:512",className:"h-20 bg-gray-50 rounded-lg animate-pulse"}):a.jsx(_,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:514",data:z??[],dateKey:"date",valueKey:"total",color:"#f97316"})})]}),(e==="properties"||e==="traffic")&&a.jsxs(A,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:527",className:"border-0 shadow-sm",children:[a.jsx(h,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:528",className:"pb-3",children:a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:529",className:"flex items-center justify-between",children:[a.jsxs(j,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:530",className:"text-sm font-semibold text-gray-700 flex items-center gap-2",children:[a.jsx(R,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:531",className:"w-4 h-4 text-red-500"}),"物業瀏覽熱度排行"]}),a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:534",className:"flex items-center gap-2",children:[a.jsx("span",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:535",className:"text-xs text-gray-400",children:"Top"}),a.jsx("select",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:536",value:o,onChange:s=>d(Number(s.target.value)),className:"text-xs border border-gray-200 rounded px-1 py-0.5 text-gray-600",children:[10,20,50].map(s=>a.jsx("option",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:541",value:s,children:s},s))})]})]})}),a.jsx(u,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:546",children:Y?a.jsx("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:548",className:"h-40 bg-gray-50 rounded-lg animate-pulse"}):C?.length?a.jsxs(a.Fragment,{children:[a.jsx("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:553",className:"overflow-x-auto",children:a.jsxs("table",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:554",className:"w-full text-xs",children:[a.jsx("thead",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:555",children:a.jsxs("tr",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:556",className:"border-b border-gray-100",children:[a.jsx("th",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:557",className:"text-left py-2 px-2 text-gray-400 font-medium w-8",children:"#"}),a.jsx("th",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:558",className:"text-left py-2 px-2 text-gray-400 font-medium",children:"物業標題"}),a.jsx("th",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:559",className:"text-left py-2 px-2 text-gray-400 font-medium",children:"類型"}),a.jsx("th",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:560",className:"text-left py-2 px-2 text-gray-400 font-medium",children:"類別"}),a.jsx("th",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:561",className:"text-right py-2 px-2 text-gray-400 font-medium",children:"瀏覽量"})]})}),a.jsx("tbody",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:564",children:aa.map((s,l)=>a.jsxs("tr",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:566",className:"border-b border-gray-50 hover:bg-gray-50 transition-colors",children:[a.jsx("td",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:567",className:"py-2 px-2",children:a.jsx("span",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:568",className:`font-bold ${l<3?"text-orange-500":"text-gray-400"}`,children:l+1})}),a.jsx("td",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:572",className:"py-2 px-2",children:a.jsx("span",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:573",className:"text-gray-700 font-medium line-clamp-1",children:s.title??`物業 #${s.id}`})}),a.jsx("td",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:577",className:"py-2 px-2",children:a.jsx(G,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:578",variant:"outline",className:"text-xs py-0 px-1.5",children:O[s.propertyType??""]??s.propertyType})}),a.jsx("td",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:582",className:"py-2 px-2",children:a.jsx("span",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:583",className:`text-xs px-1.5 py-0.5 rounded ${s.saleType==="sale"?"bg-blue-50 text-blue-600":s.saleType==="rent"?"bg-green-50 text-green-600":"bg-amber-50 text-amber-600"}`,children:s.saleType==="sale"?"出售":s.saleType==="rent"?"出租":"售/租"})}),a.jsx("td",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:591",className:"py-2 px-2 text-right",children:a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:592",className:"flex items-center justify-end gap-1",children:[a.jsx(R,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:593",className:"w-3 h-3 text-gray-300"}),a.jsx("span",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:594",className:"font-semibold text-gray-800",children:(s.viewCount??0).toLocaleStr
1ing()})]})})]},s.id))})]})}),(C?.length??0)>10&&a.jsx("button",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:603",onClick:()=>N(!b),className:"mt-3 w-full text-xs text-orange-500 hover:text-orange-600 flex items-center justify-center gap-1",children:b?a.jsxs(a.Fragment,{children:[a.jsx(ca,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:608",className:"w-3 h-3"}),"收起"]}):a.jsxs(a.Fragment,{children:[a.jsx(la,{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:610",className:"w-3 h-3"}),"顯示全部 ",C?.length," 條"]})})]}):a.jsx("p",{"data-loc":"client/src/pages/admin/AdminAnalytics.tsx:550",className:"text-xs text-gray-400 text-center py-6",children:"暫無瀏覽數據"})})]})]})})}export{wa 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.