PageSourceSearch

https://metool.online/_assets/js/data.ON2nt4hM.js

js metool.online collected 2026-10-04 19:05:40 UTC 8,839 bytes, 3 lines download raw bytes

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./pptxviewjs.DLiR1aUI.js","./docx-preview.BO3Mv9nS.js","./vue.BHwQAC8Z.js"])))=>i.map(i=>d[i]);
2/* © 2024-2026 MeTool.online. All rights reserved. Unauthorized copying or redistribution is prohibited. */
3import{d as J,o as K,_ as Z,w as z,a as Q,v as c,y as e,c as p,z as X,C as i,A as b,B as n,F as C,D as M,G as N,e as h,f as P,n as S,q as d,H as V,J as Y}from"./vue.BHwQAC8Z.js";import{f as tt,c as et,m as at,o as st,s as ot,t as rt,q as nt,p as lt}from"./entry.q2vg8f26.js";import{a as it}from"./useFeedback.Dr-ufl2w.js";import{u as ct}from"./composables.Ke7ssj2i.js";const dt={class:"max-w-6xl mx-auto px-4 sm:px-6 py-8"},ut={class:"mb-6"},mt={class:"ms-text-primary text-2xl font-bold flex items-center gap-2"},pt={class:"ms-text-secondary text-sm mt-1.5"},gt={key:0,class:"ms-text-muted text-sm py-16 text-center"},bt={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4 mb-6"},ht={class:"flex items-center gap-2 mb-2"},_t={class:"text-xs font-medium ms-text-muted"},ft={class:"text-2xl font-bold ms-text-primary tabular-nums"},xt={key:0,class:"text-xs ms-text-muted mt-1"},kt={class:"grid grid-cols-1 lg:grid-cols-2 gap-5 mb-5"},vt={class:"rounded-xl border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-950/30 p-4"},yt={class:"ms-text-primary text-sm font-semibold mb-3 flex items-center gap-1.5"},wt={class:"h-56"},Ct={class:"rounded-xl border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-950/30 p-4"},St={class:"ms-text-primary text-sm font-semibold mb-3 flex items-center gap-1.5"},Bt={class:"h-56"},Tt={class:"rounded-xl border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-950/30 p-4"},Rt={class:"ms-text-primary text-sm font-semibold mb-3 flex items-center gap-1.5"},Lt={class:"grid grid-cols-1 lg:grid-cols-2 gap-4 items-center"},At={class:"h-64"},Ft={class:"space-y-2"},Dt={class:"inline-flex items-center gap-2 min-w-0"},Et={class:"ms-text-secondary truncate"},Ut={class:"font-semibold ms-text-primary tabular-nums"},$t=J({__name:"data",setup(zt){const $=["new_discussion","accepted","in_development"],q={new_discussion:"#10b981",accepted:"#0ea5e9",in_development:"#f59e0b"},{t:r,locale:B}=tt(),H=et(),{showFromApiError:I}=at(),T=ct();st("admin/data");const _=h("loading"),l=h(null),f=h(null),x=h(null),k=h(null);let v=null;const g=[];function R(t){return q[t]??"#94a3b8"}const L=P(()=>{if(!l.value)return[];const t=new Map(l.value.feedback_by_status.map(s=>[s.status,s.count]));return $.map(s=>({status:s,count:t.get(s)??0}))});function y(){const t=T.value==="dark";return{text:t?"#94a3b8":"#64748b",grid:t?"rgba(148, 163, 184, 0.12)":"rgba(100, 116, 139, 0.15)",border:t?"rgba(148, 163, 184, 0.2)":"rgba(100, 116, 139, 0.25)",tooltipBg:t?"#1e293b":"#ffffff",tooltipText:t?"#e2e8f0":"#334155",tooltipBorder:t?"#475569":"#e2e8f0",emptySlice:t?"#334155":"#e2e8f0",lineBorder:t?"#a78bfa":"#8b5cf6",lineFill:t?"rgba(167, 139, 250, 0.22)":"rgba(139, 92, 246, 0.12)",barFill:t?"rgba(56, 189, 248, 0.8)":"rgba(14, 165, 233, 0.7)"}}function A(){const t=y();return{legend:{display:!1},tooltip:{backgroundColor:t.tooltipBg,titleColor:t.tooltipText,bodyColor:t.tooltipText,borderColor:t.tooltipBorder,borderWidth:1,padding:10}}}function O(t,s){if(s===0)return t>0?r("pages.admin.data.growthNew"):r("pages.admin.data.growthFlat");const a=Math.round((t-s)/s*100);return a===0?r("pages.admin.data.growthFlat"):a>0?r("pages.admin.data.growthUp",{pct:a}):r("pages.admin.data.growthDown",{pct:a})}const j=P(()=>{if(!l.value)return[];const t=l.value;return[{key:"users",icon:"lucide:users",iconBg:"bg-violet-100 dark:bg-violet-950/50",iconColor:"text-violet-600 dark:text-violet-400",label:r("pages.admin.data.totalUsers"),value:t.total_users.toLocaleString(),hint:void 0},{key:"users30",icon:"lucide:user-check",iconBg:"bg-emerald-100 dark:bg-emerald-950/50",iconColor:"text-emerald-600 dark:text-emerald-400",label:r("pages.admin.data.usersLast30"),value:t.users_last_30_days.toLocaleString(),hint:`${r("pages.admin.data.growthVsPrior")}: ${O(t.users_last_30_days,t.users_prior_30_days)}`},{key:"feedback",icon:"lucide:message-square-text",iconBg:"bg-sky-100 dark:bg-sky-950/50",iconColor:"text-sky-600 dark:text-sky-400",label:r("pages.admin.data.totalFeedback"),value:t.total_feedback.toLocaleStr
3ing(),hint:void 0},{key:"feedback30",icon:"lucide:messages-square",iconBg:"bg-amber-100 dark:bg-amber-950/50",iconColor:"text-amber-600 dark:text-amber-400",label:r("pages.admin.data.chartFeedback"),value:t.feedback_daily.reduce((s,a)=>s+a.count,0).toLocaleString(),hint:void 0}]});function F(t){return new Date(`${t}T00:00:00`).toLocaleDateString(B.value==="zh"?"zh-CN":"en-US",{month:"short",day:"numeric"})}function D(){for(const t of g)t.destroy();g.length=0}function E(){const t=y();return{responsive:!0,maintainAspectRatio:!1,plugins:A(),scales:{x:{ticks:{color:t.text,maxTicksLimit:8,font:{size:11}},grid:{color:t.grid},border:{color:t.border}},y:{beginAtZero:!0,ticks:{color:t.text,precision:0,font:{size:11}},grid:{color:t.grid},border:{color:t.border}}}}}async function w(){if(!l.value||!v)return;D();const{Chart:t}=v,s=y();if(f.value){const a=l.value.user_daily.map(o=>F(o.date)),u=l.value.user_daily.map(o=>o.count);g.push(new t(f.value,{type:"line",data:{labels:a,datasets:[{data:u,borderColor:s.lineBorder,backgroundColor:s.lineFill,fill:!0,tension:.3,pointRadius:2,pointHoverRadius:4,pointBackgroun
3dColor:s.lineBorder,pointBorderColor:s.lineBorder}]},options:E()}))}if(x.value){const a=l.value.feedback_daily.map(o=>F(o.date)),u=l.value.feedback_daily.map(o=>o.count);g.push(new t(x.value,{type:"bar",data:{labels:a,datasets:[{data:u,backgroundColor:s.barFill,borderRadius:4}]},options:E()}))}if(k.value){const a=L.value.filter(m=>m.count>0),u=a.length>0?a.map(m=>r(`components.feedback.status.${m.status}`)):[r("pages.admin.data.noData")],o=a.length>0?a.map(m=>m.count):[1],W=a.length>0?a.map(m=>R(m.status)):[s.emptySlice],U=A();g.push(new t(k.value,{type:"doughnut",data:{labels:u,datasets:[{data:o,backgroundColor:W,borderWidth:0}]},options:{responsive:!0,maintainAspectRatio:!1,cutout:"58%",plugins:{...U,tooltip:{...U.tooltip,enabled:a.length>0}}}}))}}async function G(){_.value="loading";try{l.value=await $fetch(it("/admin/stats"),{credentials:"include"}),_.value="ready",await S(),await w()}catch(t){const s=ot(t);if(s===401||s===403)throw rt({statusCode:404,statusMessage:"Page not found",fatal:!0});I(t,{fallbackKey:"common.apiError.generic"})}}return K(async()=>{v=await Z(()=>import("./pptxviewjs.DLiR1aUI.js").then(t=>t.a),__vite__mapDeps([0,1,2]),import.meta.url),await G()}),z(()=>T.value,async()=>{await S(),await w()}),z(B,async()=>{await S(),await w()}),Q(()=>{D()}),(t,s)=>{const a=lt,u=nt;return d(),c("div",dt,[e("header",ut,[p(u,{to:i(H)("/admin/"),class:"inline-flex items-center gap-1 text-xs ms-text-muted hover:text-violet-600 dark:hover:text-violet-400 mb-3 transition-colors"},{default:X(()=>[p(a,{icon:"lucide:arrow-left",class:"w-3.5 h-3.5"}),b(" "+n(i(r)("pages.admin.data.back")),1)]),_:1},8,["to"]),e("h1",mt,[p(a,{icon:"lucide:bar-chart-3",class:"w-6 h-6 text-sky-500"}),b(" "+n(i(r)("pages.admin.data.title")),1)]),e("p",pt,n(i(r)("pages.admin.data.subtitle")),1)]),_.value==="loading"?(d(),c("div",gt,n(i(r)("pages.admin.data.loading")),1)):l.value?(d(),c(C,{key:1},[e("div",bt,[(d(!0),c(C,null,M(j.value,o=>(d(),c("div",{key:o.key,class:"rounded-xl border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-950/30 p-4"},[e("div",ht,[e("div",{class:V(["w-8 h-8 rounded-lg flex items-center justify-center",o.iconBg])},[p(a,{icon:o.icon,class:V(["w-4 h-4",o.iconColor])},null,8,["icon","class"])],2),e("span",_t,n(o.label),1)]),e("p",ft,n(o.value),1),o.hint?(d(),c("p",xt,n(o.hint),1)):N("",!0)]))),128))]),e("div",kt,[e("section",vt,[e("h2",yt,[p(a,{icon:"lucide:trending-up",class:"w-4 h-4 text-emerald-500"}),b(" "+n(i(r)("pages.admin.data.chartUsers")),1)]),e("div",wt,[e("canvas",{ref_key:"usersChartRef",ref:f},null,512)])]),e("section",Ct,[e("h2",St,[p(a,{icon:"lucide:activity",class:"w-4 h-4 text-violet-500"}),b(" "+n(i(r)("pages.admin.data.chartFeedback")),1)]),e("div",Bt,[e("canvas",{ref_key:"feedbackChartRef",ref:x},null,512)])])]),e("section",Tt,[e("h2",Rt,[p(a,{icon:"lucide:bar-chart-2",class:"w-4 h-4 text-amber-500"}),b(" "+n(i(r)("pages.admin.data.chartStatus")),1)]),e("div",Lt,[e("div",At,[e("canvas",{ref_key:"statusChartRef",ref:k},null,512)]),e("ul",Ft,[(d(!0),c(C,null,M(L.value,o=>(d(),c("li",{key:o.status,class:"flex items-center justify-between gap-3 text-sm"},[e("span",Dt,[e("span",{class:"w-2.5 h-2.5 rounded-full shrink-0",style:Y({backgroundColor:R(o.status)})},null,4),e("span",Et,n(i(r)(`components.feedback.status.${o.status}`)),1)]),e("span",Ut,n(o.count),1)]))),128))])])])],64)):N("",!0)])}}});export{$t 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.