Files
mission-control-v2/frontend/dist/assets/Homelab-BHePzSCP.js
T

1 line
11 KiB
JavaScript

import{c as e,i as t,p as n,s as r,t as i,u as a}from"./button-BheHBEml.js";import{f as o,j as s,k as c,l,n as u,o as d,r as f,t as p,u as m,y as h}from"./index-CsrOM_oc.js";import{t as g}from"./Bestaetigen-CE_3b0PK.js";var _=r(),v=n(a(),1),y=e(),b={neu:{art:`cyan`,text:`Update bereit`},aktuell:{art:`gruen`,text:`aktuell`},unbekannt:{art:`bernstein`,text:`unklar`},festgehalten:{art:`bernstein`,text:`festgehalten`},"wird-geprueft":{art:`grau`,text:`wird geprüft`}},x={"ki-box":`KI-Box`,"proxmox-host":`Proxmox-Host`,container:`Container`,vm:`VM`};function S(e){let t=e.id.match(/-(\d+)$/)?.[1],n=x[e.art]??e.art;return t?`${n} ${t}`:n}function C(e){let t=(0,_.c)(4),{b:n}=e;if(n.kurz){let e;return t[0]===n.kurz?e=t[1]:(e=(0,y.jsx)(`span`,{className:`ziffern`,children:n.kurz}),t[0]=n.kurz,t[1]=e),e}if(n.installiert){let e;return t[2]===n.installiert?e=t[3]:(e=(0,y.jsx)(`span`,{className:`ziffern`,children:n.installiert}),t[2]=n.installiert,t[3]=e),e}return null}function w(e){let t=(0,_.c)(24),{b:n,gesperrt:r,onAktion:a}=e,o=b[n.zustand]??b.unbekannt,s;t[0]===n.name?s=t[1]:(s=(0,y.jsx)(`span`,{className:`text-[15px] font-medium`,children:n.name}),t[0]=n.name,t[1]=s);let c;t[2]===n?c=t[3]:(c=(0,y.jsx)(`span`,{className:`text-sm text-text-2`,children:(0,y.jsx)(C,{b:n})}),t[2]=n,t[3]=c);let l;t[4]!==s||t[5]!==c?(l=(0,y.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[s,c]}),t[4]=s,t[5]=c,t[6]=l):l=t[6];let d;t[7]!==o.art||t[8]!==o.text?(d=(0,y.jsx)(u,{art:o.art,children:o.text}),t[7]=o.art,t[8]=o.text,t[9]=d):d=t[9];let f;t[10]!==l||t[11]!==d?(f=(0,y.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[l,d]}),t[10]=l,t[11]=d,t[12]=f):f=t[12];let p;t[13]===n.grund?p=t[14]:(p=n.grund&&(0,y.jsx)(`p`,{className:`text-sm text-text-2`,children:n.grund}),t[13]=n.grund,t[14]=p);let m;t[15]!==n.aktion||t[16]!==n.zustand||t[17]!==r||t[18]!==a?(m=n.aktion&&(0,y.jsx)(`div`,{children:(0,y.jsx)(i,{size:`sm`,variant:n.zustand===`neu`?`default`:`outline`,disabled:r,onClick:()=>n.aktion&&a(n.aktion),children:n.aktion.label})}),t[15]=n.aktion,t[16]=n.zustand,t[17]=r,t[18]=a,t[19]=m):m=t[19];let h;return t[20]!==f||t[21]!==p||t[22]!==m?(h=(0,y.jsxs)(`li`,{className:`flex flex-col gap-2 border-t border-linie py-3 first:border-t-0 first:pt-0 last:pb-0`,children:[f,p,m]}),t[20]=f,t[21]=p,t[22]=m,t[23]=h):h=t[23],h}function T(e){let n=(0,_.c)(48),{ziel:r,laeuft:i,gesperrt:a,onAktion:o}=e,[s,c]=(0,v.useState)(null),l=r.erreichbar,u=r.name,d;n[0]===r.name?d=n[1]:(d=(0,y.jsx)(`h3`,{className:`schild text-base font-bold tracking-[0.18em] break-words`,children:r.name}),n[0]=r.name,n[1]=d);let f;n[2]===r?f=n[3]:(f=S(r),n[2]=r,n[3]=f);let p;n[4]===f?p=n[5]:(p=(0,y.jsx)(`span`,{className:`text-sm text-text-3`,children:f}),n[4]=f,n[5]=p);let m;n[6]!==d||n[7]!==p?(m=(0,y.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[d,p]}),n[6]=d,n[7]=p,n[8]=m):m=n[8];let h;n[9]===l?h=n[10]:(h=l!==null&&(0,y.jsxs)(`span`,{className:t(`schild flex items-center gap-1.5 text-xs`,l?`text-text-3`:`text-rot-text`),children:[(0,y.jsx)(`span`,{"aria-hidden":!0,className:t(`size-2 rounded-full`,l?`bg-gruen`:`bg-rot`)}),l?`erreichbar`:`antwortet nicht`]}),n[9]=l,n[10]=h);let b;n[11]!==m||n[12]!==h?(b=(0,y.jsxs)(`header`,{className:`flex flex-wrap items-start justify-between gap-2`,children:[m,h]}),n[11]=m,n[12]=h,n[13]=b):b=n[13];let x;n[14]===i?x=n[15]:(x=i&&(0,y.jsxs)(`p`,{role:`status`,className:`rounded-lg border border-cyan-rand bg-cyan-grund px-3 py-2 text-sm text-cyan-text`,children:[`Update läuft: `,i]}),n[14]=i,n[15]=x);let C;if(n[16]!==a||n[17]!==i||n[18]!==r.bausteine){let e;n[20]!==a||n[21]!==i?(e=e=>(0,y.jsx)(w,{b:e,gesperrt:a||!!i,onAktion:c},e.id),n[20]=a,n[21]=i,n[22]=e):e=n[22],C=r.bausteine.map(e),n[16]=a,n[17]=i,n[18]=r.bausteine,n[19]=C}else C=n[19];let T;n[23]===C?T=n[24]:(T=(0,y.jsx)(`ul`,{className:`flex flex-col`,children:C}),n[23]=C,n[24]=T);let E;n[25]===r.rueckweg?E=n[26]:(E=r.rueckweg&&(0,y.jsxs)(`p`,{className:`text-xs text-text-3`,children:[`Rückweg: `,r.rueckweg]}),n[25]=r.rueckweg,n[26]=E);let D=!!s,O=s?`${r.name}: ${s.label}`:``,k=s?.frage??``,A=s?.label??``,j;n[27]===s?.pfad?j=n[28]:(j=s?.pfad.endsWith(`/neustart`),n[27]=s?.pfad,n[28]=j);let M=!!j,N;n[29]!==s||n[30]!==o?(N=()=>{s&&o(s),c(null)},n[29]=s,n[30]=o,n[31]=N):N=n[31];let P;n[32]===Symbol.for(`react.memo_cache_sentinel`)?(P=()=>c(null),n[32]=P):P=n[32];let F;n[33]!==a||n[34]!==D||n[35]!==O||n[36]!==k||n[37]!==A||n[38]!==M||n[39]!==N?(F=(0,y.jsx)(g,{offen:D,titel:O,text:k,knopf:A,gefahr:M,gesperrt:a,onJa:N,onNein:P}),n[33]=a,n[34]=D,n[35]=O,n[36]=k,n[37]=A,n[38]=M,n[39]=N,n[40]=F):F=n[40];let I;return n[41]!==T||n[42]!==E||n[43]!==F||n[44]!==b||n[45]!==x||n[46]!==r.name?(I=(0,y.jsxs)(`section`,{"aria-label":u,className:`flex min-w-0 flex-col gap-3 rounded-2xl border border-linie bg-panel p-5`,children:[b,x,T,E,F]}),n[41]=T,n[42]=E,n[43]=F,n[44]=b,n[45]=x,n[46]=r.name,n[47]=I):I=n[47],I}var E=[`Proxmox-Host`,`AdGuard`,`NPMplus`,`NetBird`,`PVE Scripts Local`,`Gitea`,`PBS`,`Arcane mit Docker`],D={eingespielt:{art:`gruen`,text:`eingespielt`},zurueckgerollt:{art:`bernstein`,text:`zurückgerollt`},fehler:{art:`rot`,text:`Fehler`},neustart:{art:`cyan`,text:`Neustart`}};function O(){let e=(0,_.c)(4),t,n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,y.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Der Homelab-Teil läuft als eigene Instanz in einem kleinen Container auf dem Proxmox-PC. Von dort prüft er auch die KI-Box von außen.`}),n=(0,y.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Steht er, erscheinen hier alle Geräte mit ihren offenen Updates. Ein Update startest du mit „Jetzt updaten“: Vorher wird gesichert, danach die Erreichbarkeit geprüft, und ist sie rot, geht es von selbst zurück.`}),e[0]=t,e[1]=n):(t=e[0],n=e[1]);let r;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,y.jsx)(`h3`,{className:`schild text-sm tracking-[0.18em] text-text-3`,children:`Dazu kommen`}),e[2]=r):r=e[2];let i;return e[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,y.jsxs)(y.Fragment,{children:[t,n,(0,y.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[r,(0,y.jsx)(`ul`,{className:`flex flex-wrap gap-2`,children:E.map(k)})]}),(0,y.jsx)(`p`,{className:`text-sm text-text-3`,children:`Der Container wird erst nach deiner Freigabe angelegt.`})]}),e[3]=i):i=e[3],i}function k(e){return(0,y.jsx)(`li`,{children:(0,y.jsx)(u,{children:e})},e)}function A(e){let t=(0,_.c)(9),{partner:n}=e,r;t[0]===n.eingerichtet?r=t[1]:(r=n.eingerichtet?(0,y.jsx)(u,{art:`rot`,children:`Antwortet nicht`}):(0,y.jsx)(u,{children:`Noch nicht eingerichtet`}),t[0]=n.eingerichtet,t[1]=r);let i=r,a;t[2]!==n.eingerichtet||t[3]!==n.fehler||t[4]!==n.url?(a=n.eingerichtet?(0,y.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Der Homelab-Teil (`,n.url,`) ist `,n.fehler??`nicht erreichbar`,`. Hält das an, meldet der Wächter es nach fünf Minuten auf Telegram.`]}):(0,y.jsx)(O,{}),t[2]=n.eingerichtet,t[3]=n.fehler,t[4]=n.url,t[5]=a):a=t[5];let o;return t[6]!==i||t[7]!==a?(o=(0,y.jsx)(p,{titel:`Homelab`,rechts:i,children:a}),t[6]=i,t[7]=a,t[8]=o):o=t[8],o}function j(e){let t=(0,_.c)(13),{laeufe:n}=e,r,i,a,o,s;if(t[0]!==n){s=Symbol.for(`react.early_return_sentinel`);bb0:{let e=n.filter(N).slice(0,6);if(e.length===0){s=null;break bb0}r=p,o=`Letzte Updates im Homelab`,i=`flex flex-col gap-3`,a=e.map(M)}t[0]=n,t[1]=r,t[2]=i,t[3]=a,t[4]=o,t[5]=s}else r=t[1],i=t[2],a=t[3],o=t[4],s=t[5];if(s!==Symbol.for(`react.early_return_sentinel`))return s;let c;t[6]!==i||t[7]!==a?(c=(0,y.jsx)(`ul`,{className:i,children:a}),t[6]=i,t[7]=a,t[8]=c):c=t[8];let l;return t[9]!==r||t[10]!==o||t[11]!==c?(l=(0,y.jsx)(r,{titel:o,children:c}),t[9]=r,t[10]=o,t[11]=c,t[12]=l):l=t[12],l}function M(e){let t=e.ergebnis?D[e.ergebnis]:{art:`grau`,text:`unterbrochen`};return(0,y.jsxs)(`li`,{className:`flex flex-col gap-1 border-t border-linie pt-3 first:border-t-0 first:pt-0`,children:[(0,y.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,y.jsx)(`span`,{className:`text-[15px] font-medium`,children:e.name}),(0,y.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,y.jsx)(`span`,{className:`ziffern text-sm text-text-3`,children:s(new Date(e.start*1e3).toISOString())}),(0,y.jsx)(u,{art:t.art,children:t.text})]})]}),e.text&&(0,y.jsx)(`p`,{className:`text-sm text-text-2`,children:e.text})]},e.id)}function N(e){return e.status!==`laeuft`}function P(){let e=(0,_.c)(44),t=o(),n=h(),r=d(),i=t.data?.rolle===`homelab`||!!(n.data?.eingerichtet&&n.data.erreichbar),a=l(i),g=m(i),v=c();if(t.isPending||n.isPending){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,y.jsx)(f,{text:`Wird gelesen …`}),e[0]=t):t=e[0],t}let b;if(e[1]!==g.data?.laeufe){b=new Map;for(let e of g.data?.laeufe??[])e.status===`laeuft`&&b.set(e.ziel,e.schritte.at(-1)??`startet …`);e[1]=g.data?.laeufe,e[2]=b}else b=e[2];let x,S;e[3]!==r.data?.ziele||e[4]!==a.data?.ziele?(S=[...r.data?.ziele??[],...a.data?.ziele??[]],x=S.reduce(F,0),e[3]=r.data?.ziele,e[4]=a.data?.ziele,e[5]=x,e[6]=S):(x=e[5],S=e[6]);let C=x,w=a.data?.bericht,E;e[7]===C?E=e[8]:(E=C>0?(0,y.jsxs)(u,{art:`cyan`,children:[C,` `,C===1?`Update`:`Updates`,` bereit`]}):(0,y.jsx)(u,{art:`gruen`,children:`aktuell`}),e[7]=C,e[8]=E);let D;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(D=(0,y.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Die KI-Box und das Homelab an einem Ort. Updates startest du nur hier per Knopf; jedes fragt vorher und sagt, welcher Rückweg bereitsteht.`}),e[9]=D):D=e[9];let O;e[10]!==i||e[11]!==a.data?(O=i&&a.data&&!a.data.ausfuehrer.verbunden&&(0,y.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-bernstein`,children:[`Der Ausführer auf dem Proxmox-Host meldet sich nicht`,a.data.ausfuehrer.zuletzt?` (zuletzt ${s(new Date(a.data.ausfuehrer.zuletzt*1e3).toISOString())})`:``,`. Die Homelab-Geräte zeigen den letzten bekannten Stand.`]}),e[10]=i,e[11]=a.data,e[12]=O):O=e[12];let k;e[13]!==i||e[14]!==w||e[15]!==a.data?(k=i&&a.data&&!w&&(0,y.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Der Ausführer auf dem Proxmox-Host hat noch keinen Bericht geschickt.`}),e[13]=i,e[14]=w,e[15]=a.data,e[16]=k):k=e[16];let M;e[17]!==r.error||e[18]!==r.isError?(M=r.isError&&(0,y.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die KI-Box antwortet gerade nicht: `,r.error.message]}),e[17]=r.error,e[18]=r.isError,e[19]=M):M=e[19];let N;e[20]!==a.error||e[21]!==a.isError?(N=a.isError&&(0,y.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Der Homelab-Teil antwortet gerade nicht: `,a.error.message]}),e[20]=a.error,e[21]=a.isError,e[22]=N):N=e[22];let P;e[23]!==E||e[24]!==O||e[25]!==k||e[26]!==M||e[27]!==N?(P=(0,y.jsxs)(p,{titel:`Alle Geräte`,rechts:E,children:[D,O,k,M,N]}),e[23]=E,e[24]=O,e[25]=k,e[26]=M,e[27]=N,e[28]=P):P=e[28];let I;e[29]!==v||e[30]!==b||e[31]!==S?(I=S.length>0&&(0,y.jsx)(`div`,{className:`grid gap-5 md:gap-6 xl:grid-cols-2`,children:S.map(e=>(0,y.jsx)(T,{ziel:e,laeuft:b.get(e.id)??null,gesperrt:v.isPending,onAktion:e=>v.mutate(e)},e.id))}),e[29]=v,e[30]=b,e[31]=S,e[32]=I):I=e[32];let L;e[33]!==i||e[34]!==n?(L=!i&&n.data&&(0,y.jsx)(A,{partner:n.data}),e[33]=i,e[34]=n,e[35]=L):L=e[35];let R;e[36]!==i||e[37]!==g?(R=i&&(0,y.jsx)(j,{laeufe:g.data?.laeufe??[]}),e[36]=i,e[37]=g,e[38]=R):R=e[38];let z;return e[39]!==R||e[40]!==P||e[41]!==I||e[42]!==L?(z=(0,y.jsxs)(y.Fragment,{children:[P,I,L,R]}),e[39]=R,e[40]=P,e[41]=I,e[42]=L,e[43]=z):z=e[43],z}function F(e,t){return e+t.offen}export{P as HomelabSeite};