Files
pyMC_Repeater/repeater/web/html/assets/SystemStats-CRdWz9AA.js
T
2026-06-23 16:35:02 +01:00

2 lines
16 KiB
JavaScript

const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/plotly.min-BmxIBpZZ.js","assets/chunk-DECur_0Z.js"])))=>i.map(i=>d[i]);
import{r as e}from"./chunk-DECur_0Z.js";import{C as t,D as n,K as r,N as i,T as a,U as o,X as s,_t as c,h as ee,ht as l,j as te,l as u,m as d,o as f,r as p,s as m,u as h,x as ne,y as g,z as _}from"./runtime-core.esm-bundler-CINEgm0a.js";import{o as v}from"./api-DSaJA91r.js";import{t as re}from"./useTheme-vbCn9P26.js";import{d as y,t as ie}from"./index-Cijj_ZXo.js";import{t as b}from"./formatters-CHyWlnnq.js";import{_ as ae,a as oe,c as se,d as ce,f as le,g as ue,i as de,l as fe,m as pe,n as x,o as me,r as he,s as S,t as C,u as ge,v as _e,y as ve}from"./ChartCard-Cb2qelXJ.js";import"./chartjs-adapter-date-fns.esm-Bq5A--VJ.js";import{t as w}from"./Sparkline-Dvj_QJyT.js";var ye={class:`p-6 space-y-6`},be={class:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4`},xe={class:`grid grid-cols-1 lg:grid-cols-2 gap-6`},Se={class:`glass-card rounded-[15px] p-6`},Ce={key:0,class:`grid grid-cols-2 gap-4 text-sm`},we={class:`text-content-primary dark:text-content-primary font-semibold`},Te={class:`text-content-primary dark:text-content-primary font-semibold`},Ee={class:`text-content-primary dark:text-content-primary font-semibold`},T={class:`text-content-primary dark:text-content-primary font-semibold`},E={class:`glass-card rounded-[15px] p-6`},D={key:0,class:`grid grid-cols-2 gap-4 text-sm`},De={class:`text-content-primary dark:text-content-primary font-semibold`},Oe={class:`text-content-primary dark:text-content-primary font-semibold`},ke={class:`text-content-primary dark:text-content-primary font-semibold`},Ae={class:`text-content-primary dark:text-content-primary font-semibold`},je={class:`grid grid-cols-1 lg:grid-cols-2 gap-6`},Me={class:`glass-card rounded-[15px] p-6`},Ne={class:`relative h-48`},Pe={key:0,class:`grid grid-cols-3 gap-4 text-sm mt-4`},Fe={class:`text-center`},Ie={class:`text-content-primary dark:text-content-primary font-semibold`},Le={class:`text-center`},Re={class:`font-semibold text-accent-red`},ze={class:`text-center`},Be={class:`font-semibold text-accent-green`},Ve={class:`glass-card rounded-[15px] p-6`},He={key:0,class:`space-y-4`},Ue={class:`grid grid-cols-2 gap-4 text-sm`},We={class:`text-content-primary dark:text-content-primary font-semibold`},Ge={class:`text-content-primary dark:text-content-primary font-semibold`},Ke={class:`text-content-primary dark:text-content-primary font-semibold`},qe={class:`text-content-primary dark:text-content-primary font-semibold`},O={key:0,class:`pt-4 border-t border-stroke-subtle dark:border-stroke/10`},Je={class:`grid grid-cols-2 gap-2 text-sm`},Ye={class:`text-content-secondary dark:text-content-muted`},Xe={class:`text-content-primary dark:text-content-primary font-semibold ml-1`},Ze={class:`glass-card rounded-[15px] p-6`},Qe={key:0,class:`overflow-x-auto`},$e={class:`w-full text-sm`},et={class:`text-content-secondary dark:text-content-primary/80 py-2 transition-all duration-300`},tt={class:`text-content-primary dark:text-content-primary font-semibold py-2 transition-all duration-300`},nt={class:`text-center text-secondary py-2 transition-all duration-300`},rt={class:`text-center text-accent-green py-2 transition-all duration-300`},it={class:`text-right text-content-secondary dark:text-content-primary/80 py-2 transition-all duration-300`},at={key:0,class:`mt-4 text-center text-content-secondary dark:text-content-muted text-sm transition-all duration-300`},ot={key:1,class:`text-center text-content-secondary dark:text-content-muted py-8`},k=y(ee({name:`SystemStatsView`,__name:`SystemStats`,setup(ee){S.register(me,ce,le,ge,fe,de,se,_e,ve,ae,he,oe,ue,pe);let{theme:y}=re(),k=(e,t)=>typeof window>`u`?t:window.getComputedStyle(document.documentElement).getPropertyValue(e).trim()||t,A=()=>({labelColor:k(`--color-text-muted`,`gray`),textColor:k(`--color-text-secondary`,`gainsboro`)}),j={cpu:`var(--color-accent-cyan)`,memory:`var(--color-accent-green)`,disk:`var(--color-accent-red)`,free:`var(--color-accent-green)`,uptime:`var(--color-accent-purple)`},M=o(null),N=o(null),P=o([]),F=o(null),I=o({cpuChart:!0,memoryChart:!0,diskChart:!1,processChart:!0}),L=o(null),R=o(null),z=o(`Connecting...`),B=o(`Connecting...`),V=o(null),H=o(null),U=o(null),W=o(null),G=o(null),K=f(()=>M.value?{cpuUsage:M.value.cpu.usage_percent,memoryUsage:M.value.memory.usage_percent,diskUsage:M.value.disk.usage_percent,uptime:M.value.system.uptime}:{cpuUsage:0,memoryUsage:0,diskUsage:0,uptime:0}),q=f(()=>P.value.length===0?{cpu:[],memory:[],disk:[],network:[]}:{cpu:P.value.map(e=>e.cpu.usage_percent),memory:P.value.map(e=>e.memory.usage_percent),disk:P.value.map(e=>e.disk.usage_percent),network:P.value.map(e=>e.network.bytes_recv/1024/1024)}),J=f(()=>{let e=P.value.length;if(e<2)return``;let t=e*5;return t<120?`last ${t}s`:`last ${Math.round(t/60)}m`}),st=e=>{let t=Math.floor(e/86400),n=Math.floor(e%86400/3600),r=Math.floor(e%3600/60);return t>0?`${t}d ${n}h ${r}m`:n>0?`${n}h ${r}m`:`${r}m`},Y=async()=>{z.value=`Connecting...`,B.value=`Connecting...`;try{let e=await x(`/hardware_stats`,void 0,{onPhaseChange:e=>{let t=e===`receiving`?`Receiving data...`:`Connecting...`;z.value=t,B.value=t}});if(e?.success&&e.data){let t=e.data;M.value=t,P.value.push(t),P.value.length>20&&P.value.shift(),L.value=null,R.value=null,await g(),Z()}else L.value=`No data in server response`,R.value=`No data in server response`}catch(e){let t=e instanceof Error?e.message:`Failed to load data`;L.value=t,R.value=t}finally{I.value.cpuChart=!1,I.value.memoryChart=!1}},ct=async()=>{try{let e=await x(`/hardware_processes`);e?.success&&e.data&&(F.value=N.value,N.value=e.data)}catch(e){console.error(`Failed to fetch process stats:`,e)}finally{I.value.processChart=!1}},X=(e,t)=>{if(!F.value)return!1;let n=F.value.processes.find(t=>t.pid===e.pid);return n?n[t]!==e[t]:!0},lt=()=>{Y(),ct()},Z=()=>{M.value&&(ut(),dt(),ft())},ut=()=>{if(!U.value||!M.value){I.value.cpuChart=!1;return}let e=U.value.getContext(`2d`);if(!e){I.value.cpuChart=!1;return}let t=M.value.cpu.usage_percent,n=100-t;if(V.value)try{V.value.data.datasets[0].data=[t,n],V.value.update(`none`);return}catch(e){console.warn(`Failed to update CPU chart, recreating...`,e),V.value.destroy(),V.value=null}let r=k(`--color-accent-cyan`,`deepskyblue`),i=A(),a=k(`--color-background-mute`,`lightgray`),o=k(`--color-border`,`gray`);try{V.value=_(new S(e,{type:`doughnut`,data:{labels:[`Used`,`Available`],datasets:[{data:[t,n],backgroundColor:[r,a],borderColor:[r,o],borderWidth:2}]},options:{responsive:!0,maintainAspectRatio:!1,cutout:`70%`,animation:{animateRotate:!1,animateScale:!1,duration:0},plugins:{legend:{display:!1},tooltip:{callbacks:{label:function(e){return`${e.label}: ${e.parsed.toFixed(1)}%`}}}}},plugins:[{id:`centerText`,beforeDraw:function(e){let t=e.ctx;t.save();let n=e.data.datasets[0].data[0],a=(e.chartArea.left+e.chartArea.right)/2,o=(e.chartArea.top+e.chartArea.bottom)/2;t.textAlign=`center`,t.textBaseline=`middle`,t.fillStyle=r,t.font=`bold 18px sans-serif`,t.fillText(`${n.toFixed(1)}%`,a,o-5),t.fillStyle=i.labelColor,t.font=`10px sans-serif`,t.fillText(`CPU`,a,o+12),t.restore()}}]})),L.value=null,I.value.cpuChart=!1}catch(e){console.error(`Error creating CPU chart:`,e),L.value=`Failed to create CPU chart`,I.value.cpuChart=!1}},dt=()=>{if(!W.value||!M.value){I.value.memoryChart=!1;return}let e=W.value.getContext(`2d`);if(!e){I.value.memoryChart=!1;return}let t=M.value.memory.usage_percent,n=100-t;if(H.value)try{H.value.data.datasets[0].data=[t,n],H.value.update(`none`);return}catch(e){console.warn(`Failed to update Memory chart, recreating...`,e),H.value.destroy(),H.value=null}let r=k(`--color-accent-green`,`limegreen`),i=A(),a=k(`--color-background-mute`,`lightgray`),o=k(`--color-border`,`gray`);try{H.value=_(new S(e,{type:`doughnut`,data:{labels:[`Used`,`Available`],datasets:[{data:[t,n],backgroundColor:[r,a],borderColor:[r,o],borderWidth:2}]},options:{responsive:!0,maintainAspectRatio:!1,cutout:`70%`,animation:{animateRotate:!1,animateScale:!1,duration:0},plugins:{legend:{display:!1},tooltip:{callbacks:{label:function(e){return`${e.label}: ${e.parsed.toFixed(1)}%`}}}}},plugins:[{id:`centerText`,beforeDraw:function(e){let t=e.ctx;t.save();let n=e.data.datasets[0].data[0],a=(e.chartArea.left+e.chartArea.right)/2,o=(e.chartArea.top+e.chartArea.bottom)/2;t.textAlign=`center`,t.textBaseline=`middle`,t.fillStyle=r,t.font=`bold 18px sans-serif`,t.fillText(`${n.toFixed(1)}%`,a,o-5),t.fillStyle=i.labelColor,t.font=`10px sans-serif`,t.fillText(`Memory`,a,o+12),t.restore()}}]})),R.value=null,I.value.memoryChart=!1}catch(e){console.error(`Error creating Memory chart:`,e),R.value=`Failed to create Memory chart`,I.value.memoryChart=!1}},ft=()=>{if(!G.value||!M.value)return;let t=A().textColor;try{v(()=>import(`./plotly.min-BmxIBpZZ.js`).then(t=>e(t.t(),1)).then(e=>{let n=e.default||e,r=M.value.disk,i=[{type:`pie`,labels:[`Used`,`Free`],values:[r.used,r.free],marker:{colors:[k(`--color-accent-red`,`tomato`),k(`--color-accent-green`,`limegreen`)]},hovertemplate:`<b>%{label}</b><br>Size: %{value}<br>Percentage: %{percent}<extra></extra>`,textinfo:`label+percent`,textposition:`auto`,hole:.4}],a={title:{text:``,font:{color:t}},paper_bgcolor:`transparent`,plot_bgcolor:`transparent`,font:{color:t,size:11},margin:{t:20,b:20,l:20,r:20},showlegend:!0,legend:{orientation:`h`,x:0,y:-.2,font:{color:t,size:10}}};n.newPlot(G.value,i,a,{responsive:!0,displayModeBar:!1,staticPlot:!1})}),__vite__mapDeps([0,1]))}catch(e){console.error(`Error creating disk chart:`,e)}},Q=()=>{try{if(V.value&&=(V.value.destroy(),null),H.value&&=(H.value.destroy(),null),G.value)try{v(()=>import(`./plotly.min-BmxIBpZZ.js`).then(t=>e(t.t(),1)).then(e=>{let t=e?.default||e;t?.purge&&t.purge(G.value)}),__vite__mapDeps([0,1])).catch(()=>{})}catch{}}catch(e){console.error(`Error destroying charts:`,e)}};te(y,()=>{Q(),g(()=>Z())});let $=()=>{setTimeout(()=>{r(V.value)?.resize(),r(H.value)?.resize();try{v(()=>import(`./plotly.min-BmxIBpZZ.js`).then(t=>e(t.t(),1)).then(e=>{let t=e?.default||e;t?.Plots&&t.Plots.resize(G.value)}),__vite__mapDeps([0,1])).catch(()=>{})}catch{}},100)};return ie(lt,{intervalMs:5e3,immediate:!0}),t(async()=>{await g(),window.addEventListener(`resize`,$)}),ne(()=>{window.removeEventListener(`resize`,$),Q()}),(e,t)=>(a(),h(`div`,ye,[t[22]||=m(`div`,{class:`flex justify-between items-center`},[m(`h2`,{class:`text-2xl font-bold text-content-primary dark:text-content-primary`},` System Statistics `),m(`div`,{class:`text-content-secondary dark:text-content-muted text-sm`},` Updates every 5 seconds `)],-1),m(`div`,be,[d(w,{title:`CPU Usage`,value:`${K.value.cpuUsage.toFixed(1)}%`,color:j.cpu,data:q.value.cpu,"min-y":0,"max-y":100,subtitle:J.value},null,8,[`value`,`color`,`data`,`subtitle`]),d(w,{title:`Memory Usage`,value:`${K.value.memoryUsage.toFixed(1)}%`,color:j.memory,data:q.value.memory,"min-y":0,"max-y":100,subtitle:J.value},null,8,[`value`,`color`,`data`,`subtitle`]),d(w,{title:`Disk Usage`,value:`${K.value.diskUsage.toFixed(1)}%`,color:j.disk,data:q.value.disk,"min-y":0,"max-y":100,subtitle:J.value},null,8,[`value`,`color`,`data`,`subtitle`]),d(w,{title:`Uptime`,value:st(K.value.uptime),color:j.uptime,data:[],"show-chart":!1},null,8,[`value`,`color`])]),m(`div`,xe,[m(`div`,Se,[t[4]||=m(`h3`,{class:`text-content-primary dark:text-content-primary text-xl font-semibold mb-4`},` CPU Performance `,-1),d(C,{class:`h-32 mb-4`,"is-loading":I.value.cpuChart,error:L.value,status:z.value,onRetry:Y},{default:i(()=>[m(`canvas`,{ref_key:`cpuCanvasRef`,ref:U,class:`w-full h-full`},null,512)]),_:1},8,[`is-loading`,`error`,`status`]),M.value?(a(),h(`div`,Ce,[m(`div`,null,[t[0]||=m(`div`,{class:`text-content-secondary dark:text-content-muted`},`CPU Count`,-1),m(`div`,we,c(M.value.cpu.count)+` cores `,1)]),m(`div`,null,[t[1]||=m(`div`,{class:`text-content-secondary dark:text-content-muted`},`Frequency`,-1),m(`div`,Te,c(M.value.cpu.frequency.toFixed(0))+` MHz `,1)]),m(`div`,null,[t[2]||=m(`div`,{class:`text-content-secondary dark:text-content-muted`},`Load (1m)`,-1),m(`div`,Ee,c(M.value.cpu.load_avg[`1min`].toFixed(2)),1)]),m(`div`,null,[t[3]||=m(`div`,{class:`text-content-secondary dark:text-content-muted`},`Load (5m)`,-1),m(`div`,T,c(M.value.cpu.load_avg[`5min`].toFixed(2)),1)])])):u(``,!0)]),m(`div`,E,[t[9]||=m(`h3`,{class:`text-content-primary dark:text-content-primary text-xl font-semibold mb-4`},` Memory Usage `,-1),d(C,{class:`h-32 mb-4`,"is-loading":I.value.memoryChart,error:R.value,status:B.value,onRetry:Y},{default:i(()=>[m(`canvas`,{ref_key:`memoryCanvasRef`,ref:W,class:`w-full h-full`},null,512)]),_:1},8,[`is-loading`,`error`,`status`]),M.value?(a(),h(`div`,D,[m(`div`,null,[t[5]||=m(`div`,{class:`text-content-secondary dark:text-content-muted`},`Total`,-1),m(`div`,De,c(s(b)(M.value.memory.total)),1)]),m(`div`,null,[t[6]||=m(`div`,{class:`text-content-secondary dark:text-content-muted`},`Used`,-1),m(`div`,Oe,c(s(b)(M.value.memory.used)),1)]),m(`div`,null,[t[7]||=m(`div`,{class:`text-content-secondary dark:text-content-muted`},`Available`,-1),m(`div`,ke,c(s(b)(M.value.memory.available)),1)]),m(`div`,null,[t[8]||=m(`div`,{class:`text-content-secondary dark:text-content-muted`},`Usage`,-1),m(`div`,Ae,c(M.value.memory.usage_percent.toFixed(1))+`% `,1)])])):u(``,!0)])]),m(`div`,je,[m(`div`,Me,[t[13]||=m(`h3`,{class:`text-content-primary dark:text-content-primary text-xl font-semibold mb-4`},` Storage Usage `,-1),m(`div`,Ne,[m(`div`,{ref_key:`diskCanvasRef`,ref:G,class:`w-full h-full`},null,512)]),M.value?(a(),h(`div`,Pe,[m(`div`,Fe,[t[10]||=m(`div`,{class:`text-content-secondary dark:text-content-muted`},`Total`,-1),m(`div`,Ie,c(s(b)(M.value.disk.total)),1)]),m(`div`,Le,[t[11]||=m(`div`,{class:`text-content-secondary dark:text-content-muted`},`Used`,-1),m(`div`,Re,c(s(b)(M.value.disk.used)),1)]),m(`div`,ze,[t[12]||=m(`div`,{class:`text-content-secondary dark:text-content-muted`},`Free`,-1),m(`div`,Be,c(s(b)(M.value.disk.free)),1)])])):u(``,!0)]),m(`div`,Ve,[t[19]||=m(`h3`,{class:`text-content-primary dark:text-content-primary text-xl font-semibold mb-4`},` Network Statistics `,-1),M.value?(a(),h(`div`,He,[m(`div`,Ue,[m(`div`,null,[t[14]||=m(`div`,{class:`text-content-secondary dark:text-content-muted`},`Bytes Sent`,-1),m(`div`,We,c(s(b)(M.value.network.bytes_sent)),1)]),m(`div`,null,[t[15]||=m(`div`,{class:`text-content-secondary dark:text-content-muted`},`Bytes Received`,-1),m(`div`,Ge,c(s(b)(M.value.network.bytes_recv)),1)]),m(`div`,null,[t[16]||=m(`div`,{class:`text-content-secondary dark:text-content-muted`},`Packets Sent`,-1),m(`div`,Ke,c(M.value.network.packets_sent.toLocaleString()),1)]),m(`div`,null,[t[17]||=m(`div`,{class:`text-content-secondary dark:text-content-muted`},`Packets Received`,-1),m(`div`,qe,c(M.value.network.packets_recv.toLocaleString()),1)])]),M.value.temperatures&&Object.keys(M.value.temperatures).length>0?(a(),h(`div`,O,[t[18]||=m(`div`,{class:`text-content-secondary dark:text-content-muted mb-2`},` System Temperatures `,-1),m(`div`,Je,[(a(!0),h(p,null,n(M.value.temperatures,(e,t)=>(a(),h(`div`,{key:t},[m(`span`,Ye,c(t)+`:`,1),m(`span`,Xe,c(e.toFixed(1))+`°C`,1)]))),128))])])):u(``,!0)])):u(``,!0)])]),m(`div`,Ze,[t[21]||=m(`h3`,{class:`text-content-primary dark:text-content-primary text-xl font-semibold mb-4`},` Top Processes `,-1),N.value?.processes&&N.value.processes.length>0?(a(),h(`div`,Qe,[m(`table`,$e,[t[20]||=m(`thead`,null,[m(`tr`,{class:`border-b border-stroke-subtle dark:border-stroke/10`},[m(`th`,{class:`text-left text-content-secondary dark:text-content-muted py-2`},`PID`),m(`th`,{class:`text-left text-content-secondary dark:text-content-muted py-2`},`Name`),m(`th`,{class:`text-center text-content-secondary dark:text-content-muted py-2`},`CPU %`),m(`th`,{class:`text-center text-content-secondary dark:text-content-muted py-2`},` Memory % `),m(`th`,{class:`text-right text-content-secondary dark:text-content-muted py-2`},`Memory`)])],-1),m(`tbody`,null,[(a(!0),h(p,null,n(N.value.processes.slice(0,10),e=>(a(),h(`tr`,{key:e.pid,class:`border-b border-stroke-subtle dark:border-white/5 process-row`},[m(`td`,et,c(e.pid),1),m(`td`,tt,c(e.name),1),m(`td`,nt,[m(`span`,{class:l([`cpu-value`,{"value-updated":X(e,`cpu_percent`)}])},c(e.cpu_percent.toFixed(1))+`% `,3)]),m(`td`,rt,[m(`span`,{class:l([`memory-value`,{"value-updated":X(e,`memory_percent`)}])},c(e.memory_percent.toFixed(1))+`% `,3)]),m(`td`,it,[m(`span`,{class:l({"value-updated":X(e,`memory_mb`)})},c(e.memory_mb.toFixed(1))+` MB `,3)])]))),128))])]),N.value.total_processes?(a(),h(`div`,at,` Showing top 10 of `+c(N.value.total_processes)+` total processes `,1)):u(``,!0)])):I.value.processChart?u(``,!0):(a(),h(`div`,ot,` No process data available `))])]))}}),[[`__scopeId`,`data-v-e3234fe9`]]);export{k as default};