1 line
15 KiB
JavaScript
1 line
15 KiB
JavaScript
import{a as e,c as t,i as n,n as r,r as i,t as a}from"./dist-aE7UmubC.js";import{n as o,t as s}from"./undo-2-B8COJmAr.js";import{At as c,C as l,D as u,E as d,O as f,a as p,c as m,ct as h,dt as g,fn as _,i as v,l as y,o as b,u as x,yt as S}from"./index-BjDzWYEf.js";import{t as C}from"./button-DwYvdWVr.js";import{t as w}from"./Bestaetigen-DNJdB_zl.js";import{t as T}from"./Panel-uT1S5ZGr.js";var E={name:`flask-conical`,size:24,node:[[`path`,{d:`M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2`,key:`18mbvz`}],[`path`,{d:`M6.453 15h11.094`,key:`3shlmq`}],[`path`,{d:`M8.5 2h7`,key:`csnxdl`}]]};E.node;var D=r(E),O={name:`plus`,size:24,node:[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]};O.node;var k=r(O),A={name:`trash`,size:24,node:[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]],aliases:[`trash-2`]};A.node;var j=r(A),M=i(),N=t(e(),1),P=n(),F=`grid grid-cols-[minmax(0,1fr)_auto] items-start gap-x-3 gap-y-1.5 border-t border-white/[0.06] py-3 [grid-template-areas:'name_herkunft'_'zeit_zeit'_'text_text'_'knoepfe_knoepfe'] md:grid-rows-[auto_auto_1fr] md:gap-x-4 md:[grid-template-areas:'name_herkunft'_'zeit_knoepfe'_'text_knoepfe'] xl:grid-cols-[minmax(10.5rem,1.1fr)_7.5rem_minmax(0,1fr)_minmax(0,1.4fr)_11rem] xl:grid-rows-none xl:items-center xl:[grid-template-areas:'name_herkunft_zeit_text_knoepfe']`,I=`ziffern min-w-0 pt-1 text-sm break-words text-foreground [grid-area:name] xl:pt-0`,L=`justify-self-end [grid-area:herkunft] xl:justify-self-start`;function R(e){let t=(0,M.c)(11),{zeit:n,jetzt:r}=e,i;t[0]!==r||t[1]!==n?(i=y(n,r),t[0]=r,t[1]=n,t[2]=i):i=t[2];let a;t[3]===i?a=t[4]:(a=(0,P.jsx)(`span`,{className:`ziffern text-text-2`,children:i}),t[3]=i,t[4]=a);let o;t[5]!==r||t[6]!==n?(o=n!==null&&(0,P.jsx)(`span`,{className:`text-text-3`,children:p(n,r)}),t[5]=r,t[6]=n,t[7]=o):o=t[7];let s;return t[8]!==a||t[9]!==o?(s=(0,P.jsxs)(`span`,{role:`cell`,className:`flex flex-wrap items-baseline gap-x-2 text-sm [grid-area:zeit]`,children:[a,o]}),t[8]=a,t[9]=o,t[10]=s):s=t[10],s}function z(e){let t=(0,M.c)(2),{children:n}=e,r;return t[0]===n?r=t[1]:(r=(0,P.jsx)(`span`,{role:`cell`,className:`min-w-0 text-sm break-words text-text-2 [grid-area:text]`,children:n}),t[0]=n,t[1]=r),r}function B(e){let t=(0,M.c)(5),{children:n,ohne:r}=e,i;t[0]!==n||t[1]!==r?(i=r?(0,P.jsx)(`span`,{className:`text-xs text-text-3`,children:r}):n,t[0]=n,t[1]=r,t[2]=i):i=t[2];let a;return t[3]===i?a=t[4]:(a=(0,P.jsx)(`span`,{role:`cell`,className:`flex flex-wrap gap-2 [grid-area:knoepfe] md:flex-col md:items-stretch md:justify-self-end xl:justify-self-stretch`,children:i}),t[3]=i,t[4]=a),a}function V(e){let t=(0,M.c)(35),{g:n,s:r,jetzt:i,gesperrt:a,onFrage:o}=e,{loeschen:c,zuruecksetzen:l}=r,d=c||l?null:r.eigen?`Nicht freigegeben`:`Nur in Proxmox`,f;t[0]===r.name?f=t[1]:(f=(0,P.jsx)(`span`,{role:`rowheader`,className:I,children:r.name}),t[0]=r.name,t[1]=f);let p=v[r.herkunft],m=v[r.herkunft],h;t[2]===m.chip?h=t[3]:(h=(0,P.jsx)(u,{children:m.chip}),t[2]=m.chip,t[3]=h);let g;t[4]!==p.text||t[5]!==h?(g=(0,P.jsx)(`span`,{role:`cell`,className:L,title:p.text,children:h}),t[4]=p.text,t[5]=h,t[6]=g):g=t[6];let _;t[7]!==i||t[8]!==r.zeit?(_=(0,P.jsx)(R,{zeit:r.zeit,jetzt:i}),t[7]=i,t[8]=r.zeit,t[9]=_):_=t[9];let y;t[10]!==r.beschreibung||t[11]!==r.herkunft?(y=r.beschreibung??(0,P.jsx)(`span`,{className:`text-text-3`,children:v[r.herkunft].text}),t[10]=r.beschreibung,t[11]=r.herkunft,t[12]=y):y=t[12];let b;t[13]===y?b=t[14]:(b=(0,P.jsx)(z,{children:y}),t[13]=y,t[14]=b);let x;t[15]!==n||t[16]!==a||t[17]!==o||t[18]!==l?(x=l&&(0,P.jsxs)(C,{variant:`outline`,size:`sm`,disabled:a,onClick:()=>o({name:n.name,aktion:l,gefahr:!0}),children:[(0,P.jsx)(s,{"aria-hidden":!0}),` Zurücksetzen`]}),t[15]=n,t[16]=a,t[17]=o,t[18]=l,t[19]=x):x=t[19];let S;t[20]!==n||t[21]!==a||t[22]!==c||t[23]!==o?(S=c&&(0,P.jsxs)(C,{variant:`outline`,size:`sm`,disabled:a,onClick:()=>o({name:n.name,aktion:c,gefahr:!0}),children:[(0,P.jsx)(j,{"aria-hidden":!0}),` Löschen`]}),t[20]=n,t[21]=a,t[22]=c,t[23]=o,t[24]=S):S=t[24];let w;t[25]!==d||t[26]!==S||t[27]!==x?(w=(0,P.jsxs)(B,{ohne:d,children:[x,S]}),t[25]=d,t[26]=S,t[27]=x,t[28]=w):w=t[28];let T;return t[29]!==f||t[30]!==w||t[31]!==g||t[32]!==_||t[33]!==b?(T=(0,P.jsxs)(`div`,{role:`row`,className:F,children:[f,g,_,b,w]}),t[29]=f,t[30]=w,t[31]=g,t[32]=_,t[33]=b,t[34]=T):T=t[34],T}function H(e){let t=(0,M.c)(23),{g:n,e:r,jetzt:i,gesperrt:a,onFrage:o}=e,s;t[0]===r.groesse?s=t[1]:(s=b(r.groesse),t[0]=r.groesse,t[1]=s);let c=s,l=r.loeschen,d;t[2]===r.datei?d=t[3]:(d=(0,P.jsx)(`span`,{role:`rowheader`,className:I,children:r.datei}),t[2]=r.datei,t[3]=d);let f;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,P.jsx)(`span`,{role:`cell`,className:L,children:(0,P.jsx)(u,{children:`Sicherung`})}),t[4]=f):f=t[4];let p;t[5]!==r.zeit||t[6]!==i?(p=(0,P.jsx)(R,{zeit:r.zeit,jetzt:i}),t[5]=r.zeit,t[6]=i,t[7]=p):p=t[7];let m=c?`${c} auf „${r.speicher}“`:`Auf „${r.speicher}“`,h;t[8]===m?h=t[9]:(h=(0,P.jsxs)(z,{children:[m,`, vor einem Update angelegt`]}),t[8]=m,t[9]=h);let g=l?null:`Nicht freigegeben`,_;t[10]!==n||t[11]!==a||t[12]!==l||t[13]!==o?(_=l&&(0,P.jsxs)(C,{variant:`outline`,size:`sm`,disabled:a,onClick:()=>o({name:n.name,aktion:l,gefahr:!0}),children:[(0,P.jsx)(j,{"aria-hidden":!0}),` Löschen`]}),t[10]=n,t[11]=a,t[12]=l,t[13]=o,t[14]=_):_=t[14];let v;t[15]!==g||t[16]!==_?(v=(0,P.jsx)(B,{ohne:g,children:_}),t[15]=g,t[16]=_,t[17]=v):v=t[17];let y;return t[18]!==d||t[19]!==p||t[20]!==h||t[21]!==v?(y=(0,P.jsxs)(`div`,{role:`row`,className:F,children:[d,f,p,h,v]}),t[18]=d,t[19]=p,t[20]=h,t[21]=v,t[22]=y):y=t[22],y}function U(e){let t=(0,M.c)(44),{g:n,jetzt:r,gesperrt:i,onFrage:s}=e,c=n.snapshots.length===0&&n.sicherungen.length===0,{anlegen:u,probe:f}=n,p=n.name,m;t[0]!==n.art||t[1]!==n.name?(m=d({art:n.art,name:n.name}),t[0]=n.art,t[1]=n.name,t[2]=m):m=t[2];let h=n.status===`running`?`ok`:n.status?`aus`:null,g;t[3]!==m||t[4]!==h?(g=(0,P.jsx)(l,{bild:m,punkt:h}),t[3]=m,t[4]=h,t[5]=g):g=t[5];let v;t[6]===n.name?v=t[7]:(v=(0,P.jsx)(`h3`,{className:`text-[15px] font-semibold break-words`,children:n.name}),t[6]=n.name,t[7]=v);let b;t[8]===n.wo?b=t[9]:(b=(0,P.jsx)(`span`,{className:`text-[13px] text-text-3`,children:n.wo}),t[8]=n.wo,t[9]=b);let S;t[10]!==v||t[11]!==b?(S=(0,P.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[v,b]}),t[10]=v,t[11]=b,t[12]=S):S=t[12];let w;t[13]!==g||t[14]!==S?(w=(0,P.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[g,S]}),t[13]=g,t[14]=S,t[15]=w):w=t[15];let T;t[16]!==u||t[17]!==n.laeuft||t[18]!==n.name||t[19]!==i||t[20]!==s||t[21]!==f?(T=n.laeuft?(0,P.jsxs)(`p`,{role:`status`,className:`text-sm text-cyan-text`,children:[`Läuft: `,n.laeuft,` …`]}):(u||f)&&(0,P.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[f&&(0,P.jsxs)(C,{variant:`ghost`,size:`sm`,disabled:i,onClick:()=>s({name:n.name,aktion:f,gefahr:!0}),children:[(0,P.jsx)(D,{"aria-hidden":!0}),` Rückweg testen`]}),u&&(0,P.jsxs)(C,{variant:`outline`,size:`sm`,disabled:i,onClick:()=>s({name:n.name,aktion:u,gefahr:!1}),children:[(0,P.jsx)(k,{"aria-hidden":!0}),` Snapshot anlegen`]})]}),t[16]=u,t[17]=n.laeuft,t[18]=n.name,t[19]=i,t[20]=s,t[21]=f,t[22]=T):T=t[22];let E;t[23]!==w||t[24]!==T?(E=(0,P.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-x-4 gap-y-2`,children:[w,T]}),t[23]=w,t[24]=T,t[25]=E):E=t[25];let O;t[26]===n.grund?O=t[27]:(O=n.grund&&(0,P.jsx)(`p`,{className:`text-sm text-text-3`,children:n.grund}),t[26]=n.grund,t[27]=O);let A;t[28]!==n.name||t[29]!==n.zuletzt||t[30]!==r?(A=n.zuletzt&&(0,P.jsxs)(`p`,{className:a(`flex items-start gap-1.5 text-sm`,n.zuletzt.ok?`text-gruen-text`:`text-rot-text`),children:[n.zuletzt.ok?(0,P.jsx)(_,{className:`mt-0.5 size-4 shrink-0`,"aria-hidden":!0}):(0,P.jsx)(o,{className:`mt-0.5 size-4 shrink-0`,"aria-hidden":!0}),(0,P.jsxs)(`span`,{className:`flex min-w-0 flex-wrap items-baseline gap-x-2`,children:[(0,P.jsx)(`span`,{className:`break-words`,children:x(n.zuletzt.text,n.name)}),(0,P.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:y(n.zuletzt.ende,r)})]})]}),t[28]=n.name,t[29]=n.zuletzt,t[30]=r,t[31]=A):A=t[31];let j;t[32]!==n||t[33]!==i||t[34]!==r||t[35]!==c||t[36]!==s?(j=c?(0,P.jsx)(`p`,{className:`text-sm text-text-3`,children:`Keine Snapshots.`}):(0,P.jsxs)(`div`,{role:`table`,"aria-label":`Snapshots von ${n.name}`,className:`flex flex-col`,children:[(0,P.jsxs)(`div`,{role:`row`,className:`sr-only`,children:[(0,P.jsx)(`span`,{role:`columnheader`,children:`Snapshot`}),(0,P.jsx)(`span`,{role:`columnheader`,children:`Herkunft`}),(0,P.jsx)(`span`,{role:`columnheader`,children:`Zeitpunkt`}),(0,P.jsx)(`span`,{role:`columnheader`,children:`Beschreibung`}),(0,P.jsx)(`span`,{role:`columnheader`,children:`Aktion`})]}),n.snapshots.map(e=>(0,P.jsx)(V,{g:n,s:e,jetzt:r,gesperrt:i,onFrage:s},e.name)),n.sicherungen.map(e=>(0,P.jsx)(H,{g:n,e,jetzt:r,gesperrt:i,onFrage:s},e.datei))]}),t[32]=n,t[33]=i,t[34]=r,t[35]=c,t[36]=s,t[37]=j):j=t[37];let N;return t[38]!==n.name||t[39]!==E||t[40]!==O||t[41]!==A||t[42]!==j?(N=(0,P.jsxs)(`section`,{"aria-label":p,className:`flaeche-innen flex min-w-0 flex-col gap-2 rounded-2xl px-4 py-3.5`,children:[E,O,A,j]}),t[38]=n.name,t[39]=E,t[40]=O,t[41]=A,t[42]=j,t[43]=N):N=t[43],N}function W(e){let t=(0,M.c)(24),{daten:n,gesperrt:r,onAktion:i}=e,[a,o]=(0,N.useState)(null),s;if(t[0]!==n.geraete||t[1]!==n.jetzt||t[2]!==r){let e;t[4]!==n.jetzt||t[5]!==r?(e=e=>(0,P.jsx)(U,{g:e,jetzt:n.jetzt,gesperrt:r||!!e.laeuft,onFrage:o},e.id),t[4]=n.jetzt,t[5]=r,t[6]=e):e=t[6],s=n.geraete.map(e),t[0]=n.geraete,t[1]=n.jetzt,t[2]=r,t[3]=s}else s=t[3];let c;t[7]===s?c=t[8]:(c=(0,P.jsx)(`div`,{className:`flex flex-col gap-3`,children:s}),t[7]=s,t[8]=c);let l=!!a,u=a?`${a.name}: ${a.aktion.label}`:``,d=a?.aktion.frage??``,f=a?.aktion.label??``,p=a?.gefahr,m;t[9]!==a||t[10]!==i?(m=()=>{a&&i(a.aktion),o(null)},t[9]=a,t[10]=i,t[11]=m):m=t[11];let h;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(h=()=>o(null),t[12]=h):h=t[12];let g;t[13]!==r||t[14]!==l||t[15]!==u||t[16]!==d||t[17]!==f||t[18]!==p||t[19]!==m?(g=(0,P.jsx)(w,{offen:l,titel:u,text:d,knopf:f,gefahr:p,gesperrt:r,onJa:m,onNein:h}),t[13]=r,t[14]=l,t[15]=u,t[16]=d,t[17]=f,t[18]=p,t[19]=m,t[20]=g):g=t[20];let _;return t[21]!==g||t[22]!==c?(_=(0,P.jsxs)(P.Fragment,{children:[c,g]}),t[21]=g,t[22]=c,t[23]=_):_=t[23],_}function G(){let e=(0,M.c)(41),t=g(),n=S(),r=t.data?.rolle===`homelab`||!!(n.data?.eingerichtet&&n.data.erreichbar),i=h(r),a=c(),[o,s]=(0,N.useState)(!1);if(t.isPending||n.isPending){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,P.jsx)(f,{text:`Wird gelesen …`}),e[0]=t):t=e[0],t}if(!r){let t;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,P.jsx)(f,{fehler:!0,text:`Der Homelab-Teil antwortet gerade nicht.`}),e[1]=t):t=e[1],t}if(i.isPending){let t;return e[2]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,P.jsx)(f,{text:`Die Snapshots werden gelesen …`}),e[2]=t):t=e[2],t}if(!i.data){let t=`Die Snapshots lassen sich nicht lesen: ${i.error?.message??`keine Daten`}`,n;return e[3]===t?n=e[4]:(n=(0,P.jsx)(f,{fehler:!0,text:t}),e[3]=t,e[4]=n),n}let l=i.data,d=l.sperre,p;e[5]!==l.bericht||e[6]!==l.summe?(p=l.bericht?(0,P.jsx)(u,{children:m(l.summe)}):void 0,e[5]=l.bericht,e[6]=l.summe,e[7]=p):p=e[7];let _;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,P.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Ein Snapshot hält den Stand eines Geräts fest. Vor jedem Update legt der Orchestrator einen an (beim Proxmox Backup Server eine Sicherung) und räumt nach einem grünen Update die älteren weg. Hier legst du selbst welche an — die bleiben, bis du sie löschst —, setzt ein Gerät zurück oder löschst, was weg kann. Von Hand in Proxmox angelegte stehen nur zur Ansicht da.`}),e[8]=_):_=e[8];let v;e[9]===d?v=e[10]:(v=d&&(0,P.jsx)(`p`,{role:`alert`,className:`rounded-2xl bg-bernstein/[0.08] px-4 py-3 text-[15px] text-bernstein ring-1 ring-bernstein/35 ring-inset`,children:d}),e[9]=d,e[10]=v);let b;e[11]!==a.isPending||e[12]!==l.aufraeumen||e[13]!==l.aufraeumen_laeuft||e[14]!==d?(b=(l.aufraeumen||l.aufraeumen_laeuft)&&(0,P.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 rounded-2xl bg-white/[0.03] px-4 py-3 ring-1 ring-white/10 ring-inset`,children:[(0,P.jsx)(`p`,{className:`min-w-0 flex-1 text-[14.5px] text-text-2`,children:l.aufraeumen_laeuft?`Die Rückwege der letzten Updates werden gerade nacheinander gelöscht; am Ende kommt eine Meldung.`:`Nach grünen Updates bleibt je Gerät der Rückweg liegen, bis zum nächsten Update. Wegräumen geht hier auf einmal.`}),l.aufraeumen&&(0,P.jsxs)(C,{variant:`outline`,size:`sm`,disabled:a.isPending||!!d,onClick:()=>s(!0),children:[(0,P.jsx)(j,{"aria-hidden":!0}),` `,l.aufraeumen.label]})]}),e[11]=a.isPending,e[12]=l.aufraeumen,e[13]=l.aufraeumen_laeuft,e[14]=d,e[15]=b):b=e[15];let x;e[16]!==l.bericht||e[17]!==l.jetzt?(x=l.bericht?.veraltet&&(0,P.jsxs)(`p`,{className:`text-[15px] text-bernstein`,children:[`Der letzte Bericht ist von `,y(l.bericht.empfangen,l.jetzt),`; die Liste kann veraltet sein.`]}),e[16]=l.bericht,e[17]=l.jetzt,e[18]=x):x=e[18];let E;e[19]!==a||e[20]!==l||e[21]!==d?(E=l.bericht?(0,P.jsxs)(P.Fragment,{children:[!l.details&&(0,P.jsx)(`p`,{className:`text-sm text-text-3`,children:`Beschreibungen und die Größe der Sicherungen erscheinen, sobald der neue Ausführer auf dem Proxmox-Host läuft; bis dahin kommt der Zeitpunkt aus dem Namen des Snapshots.`}),(0,P.jsx)(W,{daten:l,gesperrt:a.isPending||!!d||!!l.aufraeumen_laeuft,onAktion:e=>a.mutate(e)}),(0,P.jsx)(`p`,{className:`text-sm text-text-3`,children:`Wie viel ein Snapshot im Speicherpool belegt, sagt Proxmox nicht: Er teilt sich die Daten mit dem Gerät und wächst mit jeder Änderung seit seinem Zeitpunkt. Wie voll der Pool ist, steht im Cockpit unter „Speicher und Sicherungen“.`})]}):(0,P.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Der Ausführer hat noch keinen Bericht geschickt.`}),e[19]=a,e[20]=l,e[21]=d,e[22]=E):E=e[22];let D=o&&!!l.aufraeumen,O=l.aufraeumen?.label??``,k=l.aufraeumen?.frage??``,A=l.aufraeumen?.label??``,F;e[23]!==a||e[24]!==l.aufraeumen?(F=()=>{l.aufraeumen&&a.mutate(l.aufraeumen),s(!1)},e[23]=a,e[24]=l.aufraeumen,e[25]=F):F=e[25];let I;e[26]===Symbol.for(`react.memo_cache_sentinel`)?(I=()=>s(!1),e[26]=I):I=e[26];let L;e[27]!==a.isPending||e[28]!==F||e[29]!==D||e[30]!==O||e[31]!==k||e[32]!==A?(L=(0,P.jsx)(w,{offen:D,titel:O,text:k,knopf:A,gefahr:!0,gesperrt:a.isPending,onJa:F,onNein:I}),e[27]=a.isPending,e[28]=F,e[29]=D,e[30]=O,e[31]=k,e[32]=A,e[33]=L):L=e[33];let R;return e[34]!==p||e[35]!==L||e[36]!==v||e[37]!==b||e[38]!==x||e[39]!==E?(R=(0,P.jsxs)(T,{titel:`Snapshots`,rechts:p,children:[_,v,b,x,E,L]}),e[34]=p,e[35]=L,e[36]=v,e[37]=b,e[38]=x,e[39]=E,e[40]=R):R=e[40],R}export{G as HomelabSnapshotsSeite}; |