mira-app-server
Version:
Mira Server - standalone server application using mira-app-core
2 lines (1 loc) • 7.13 kB
JavaScript
import{a7 as z,am as H,ab as R,bB as n,b5 as e,_ as B,aj as t,aa as a,a_ as W,ac as K,a$ as l,s as C,aO as u,bi as Y,b6 as ee,aT as v,aM as te,ae as d,u as $,i as I,aX as N,C as se,b3 as A,aD as ae,ai as c,aI as ie,p as T,q as U,E as le,w as V,G as ne,H as oe,J as re,K as ue}from"./index-BAS7XAoe.js";import{_ as ce}from"./Skeleton.vue_vue_type_script_setup_true_lang-CGBPTtq-.js";import{p as de,_ as E}from"./Switch.vue_vue_type_script_setup_true_lang-C04AH2zb.js";import{_ as F}from"./Label.vue_vue_type_script_setup_true_lang-DJnzkt8b.js";import{a as me}from"./admin-BnkG0Mjo.js";import{E as fe,t as _e,j as ve,m as pe,r as ge,Z as he,A as xe,o as ye,b as we}from"./index-CsJj9qiO.js";const be={health:()=>z.get("/health"),stats:()=>z.get("/stats")},G={get:()=>z.get("/settings"),update:S=>z.put("/settings",S)},$e={class:"flex size-12 items-center justify-center rounded-lg bg-primary/10 text-primary"},Ae={class:"text-sm text-muted-foreground"},ke={class:"text-2xl font-bold"},k=H({__name:"StatCard",props:{title:{},value:{},icon:{}},setup(S){return(s,j)=>(u(),R(e(B),null,{default:n(()=>[t(e(C),{class:"flex items-center gap-4 p-6"},{default:n(()=>[a("div",$e,[s.icon?(u(),R(W(s.icon),{key:0,class:"size-6"})):K("",!0)]),a("div",null,[a("p",Ae,l(s.title),1),a("p",ke,l(s.value),1)])]),_:1})]),_:1}))}}),ze={class:"space-y-6"},Se={class:"flex items-center justify-between"},Ve={class:"text-2xl font-bold"},Re={class:"text-muted-foreground"},Be={class:"flex gap-2"},Ce={key:0,class:"grid gap-4 md:grid-cols-2 lg:grid-cols-4"},je={key:1,class:"grid gap-4 md:grid-cols-2 lg:grid-cols-4"},Me={class:"grid gap-6 lg:grid-cols-2"},De={class:"flex items-center justify-between"},qe={class:"text-sm text-muted-foreground"},Ie={class:"flex items-center justify-between"},Ne={class:"text-sm text-muted-foreground"},Te={class:"text-sm font-medium"},Ue={class:"flex items-center justify-between"},Ee={class:"text-sm text-muted-foreground"},Fe={class:"text-sm font-medium"},Ge={class:"flex items-center justify-between"},He={class:"text-sm text-muted-foreground"},Ke={class:"text-sm font-medium"},Le={key:0,class:"space-y-3"},Oe={class:"flex-1"},Pe={class:"text-sm"},Ze={class:"text-xs text-muted-foreground"},Je={key:1,class:"py-8 text-center text-muted-foreground"},Xe={class:"space-y-4"},Qe={class:"flex items-center justify-between"},We={class:"flex items-center justify-between"},lt=H({__name:"index",setup(S){const{t:s}=Y(),j=ee(),p=v(!1),f=v({libraries:0,plugins:0,admins:0,dbSize:"0 B"}),x=v({uptime:"-",version:"-",nodeVersion:"-"}),M=v([]),g=v(!1),_=v({authRequired:!0,allowRegistration:!0});function L(r){if(!r)return"0 B";const o=["B","KB","MB","GB","TB"],i=Math.floor(Math.log(r)/Math.log(1024));return`${(r/1024**i).toFixed(2)} ${o[i]}`}function O(r){const o=Math.floor(r/86400),i=Math.floor(r%86400/3600),h=Math.floor(r%3600/60);return o>0?`${o}d ${i}h`:i>0?`${i}h ${h}m`:`${h}m`}async function P(){try{const r=await G.get();_.value=r.data.data??r.data}catch{A.error(s("common.failed"))}}async function Z(){try{await G.update(_.value),A.success(s("common.success")),g.value=!1}catch{A.error(s("common.failed"))}}async function D(){p.value=!0;try{const[r,o,i,h]=await Promise.allSettled([ae.list(),de.list(),me.list(),be.health()]),m=w=>{var b;return((b=w.value.data)==null?void 0:b.data)??w.value.data},q=r.status==="fulfilled"?Array.isArray(m(r))?m(r):[]:[],J=o.status==="fulfilled"?Array.isArray(m(o))?m(o):[]:[],X=i.status==="fulfilled"?Array.isArray(m(i))?m(i):[]:[],y=h.status==="fulfilled"?m(h):null,Q=q.reduce((w,b)=>w+(b.size||0),0);f.value={libraries:q.length,plugins:J.length,admins:X.length,dbSize:L(Q)},y&&(x.value={uptime:O(y.uptime||0),version:y.version||"-",nodeVersion:y.nodeVersion||"-"})}catch{A.error(s("common.failed"))}finally{p.value=!1}}return te(D),(r,o)=>(u(),d("div",ze,[a("div",Se,[a("div",null,[a("h1",Ve,l(e(s)("overview.title")),1),a("p",Re,l(e(s)("overview.subtitle")),1)]),a("div",Be,[e(j).userRole!=="user"?(u(),R(e($),{key:0,variant:"outline",onClick:o[0]||(o[0]=i=>{g.value=!0,P()})},{default:n(()=>[t(e(ge),{class:"mr-2 size-4"}),c(" "+l(e(s)("overview.settings")),1)]),_:1})):K("",!0),t(e($),{disabled:p.value,onClick:D},{default:n(()=>[t(e(he),{class:ie(["mr-2 size-4",{"animate-spin":p.value}])},null,8,["class"]),c(" "+l(e(s)("overview.refreshData")),1)]),_:1},8,["disabled"])])]),p.value&&!f.value.libraries?(u(),d("div",Ce,[(u(),d(I,null,N(4,i=>t(e(ce),{key:i,class:"h-28"})),64))])):(u(),d("div",je,[t(k,{title:e(s)("overview.totalLibraries"),value:f.value.libraries,icon:e(fe)},null,8,["title","value","icon"]),t(k,{title:e(s)("overview.totalPlugins"),value:f.value.plugins,icon:e(_e)},null,8,["title","value","icon"]),t(k,{title:e(s)("overview.totalAdmins"),value:f.value.admins,icon:e(ve)},null,8,["title","value","icon"]),t(k,{title:e(s)("overview.dbSize"),value:f.value.dbSize,icon:e(pe)},null,8,["title","value","icon"])])),a("div",Me,[t(e(B),null,{default:n(()=>[t(e(T),null,{default:n(()=>[t(e(U),{class:"flex items-center gap-2"},{default:n(()=>[t(e(xe),{class:"size-5"}),c(" "+l(e(s)("overview.systemInfo")),1)]),_:1})]),_:1}),t(e(C),{class:"space-y-3"},{default:n(()=>[a("div",De,[a("span",qe,l(e(s)("overview.serverStatus")),1),t(e(le),{variant:"secondary"},{default:n(()=>[c(l(e(s)("overview.running")),1)]),_:1})]),t(e(V)),a("div",Ie,[a("span",Ne,l(e(s)("overview.uptime")),1),a("span",Te,l(x.value.uptime),1)]),t(e(V)),a("div",Ue,[a("span",Ee,l(e(s)("overview.version")),1),a("span",Fe,l(x.value.version),1)]),t(e(V)),a("div",Ge,[a("span",He,l(e(s)("overview.nodeVersion")),1),a("span",Ke,l(x.value.nodeVersion),1)])]),_:1})]),_:1}),t(e(B),null,{default:n(()=>[t(e(T),null,{default:n(()=>[t(e(U),{class:"flex items-center gap-2"},{default:n(()=>[t(e(ye),{class:"size-5"}),c(" "+l(e(s)("overview.recentActivity")),1)]),_:1})]),_:1}),t(e(C),null,{default:n(()=>[M.value.length?(u(),d("div",Le,[(u(!0),d(I,null,N(M.value,i=>(u(),d("div",{key:i.id,class:"flex items-center gap-3 rounded-lg p-2"},[t(e(we),{class:"size-4 text-muted-foreground"}),a("div",Oe,[a("p",Pe,l(i.message),1),a("p",Ze,l(i.time),1)])]))),128))])):(u(),d("div",Je,l(e(s)("overview.noActivity")),1))]),_:1})]),_:1})]),t(e(se),{open:g.value,"onUpdate:open":o[4]||(o[4]=i=>g.value=i)},{default:n(()=>[t(e(ne),{class:"sm:max-w-md"},{default:n(()=>[t(e(oe),null,{default:n(()=>[t(e(re),null,{default:n(()=>[c(l(e(s)("overview.serverSettings")),1)]),_:1})]),_:1}),a("div",Xe,[a("div",Qe,[t(e(F),null,{default:n(()=>[c(l(e(s)("overview.authRequired")),1)]),_:1}),t(e(E),{modelValue:_.value.authRequired,"onUpdate:modelValue":o[1]||(o[1]=i=>_.value.authRequired=i)},null,8,["modelValue"])]),a("div",We,[t(e(F),null,{default:n(()=>[c(l(e(s)("overview.allowRegistration")),1)]),_:1}),t(e(E),{modelValue:_.value.allowRegistration,"onUpdate:modelValue":o[2]||(o[2]=i=>_.value.allowRegistration=i)},null,8,["modelValue"])])]),t(e(ue),null,{default:n(()=>[t(e($),{variant:"outline",onClick:o[3]||(o[3]=i=>g.value=!1)},{default:n(()=>[c(l(e(s)("common.cancel")),1)]),_:1}),t(e($),{onClick:Z},{default:n(()=>[c(l(e(s)("common.save")),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["open"])]))}});export{lt as default};