Drei Seiten statt zehn: Start, Updates, Modelle — am PC mit Kopfnavigation, am Handy mit Leiste unten. Umsetzung von Mockup A („Cockpit“), vom User am 23.09. gewaehlt. - Start: Hauptwarnleuchte + 8 Warnlampen, Rundinstrumente mit Live-Werten aus dem Strom (Speicher, Temperatur, Platte) und Laufzeit-Zaehlwerk, Checkliste der Waechter-Hinweise mit ihren Knoepfen, Flugplan (heute gelaufen / geplant), Radar-Kasten. - Updates: Bausteine mit „Laeuft → Neu“ und Zusammenfassung, laufende Auftraege, Verlauf der Sonntagslaeufe (neu: GET /api/updates/verlauf), Sicherungen samt Zurueckspielen mit Rueckfrage. - Modelle: Speicherbalken, Rollen Hirn/Coder/Dritte Rolle, wer die Modelle nutzt (7 Tage + 24 h je Stunde), Modell-Radar, weitere Eintraege, Modelle selbst suchen. - Schubladen: Dienste mit Protokoll und Neustart, Einstellungen (HF-Zugang), Hermes-Link. - Werkzeuge: Vite 8, React 19.3 mit React Compiler 1.0 (Babel), vitest 5, Tailwind 4.3, shadcn 4 (Radix) fuer Dialog/Schublade/Knopf, Schriften Barlow/Barlow Condensed/ JetBrains Mono. Entfernt: recharts, cmdk, Kraftgraph, zustand, Inter, Space Grotesk. - Startbuendel 115 KB gzip (Budget 140); Updates/Modelle/Schubladen laden bei Bedarf. - 16 Oberflaechen-Tests (Instrument-Bogen, Hauptleuchte, Zeitformate, Versionen). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 line
20 KiB
JavaScript
1 line
20 KiB
JavaScript
import{c as e,f as t,o as n,s as r,t as i,u as a}from"./button-Dd8hfusv.js";import{D as o,E as s,N as c,O as l,P as u,_ as d,a as f,c as p,h as m,i as h,k as g,l as _,m as v,n as y,o as b,p as x,s as S,t as C,v as w,x as T,y as E}from"./index-Dd2BxC7X.js";import{a as D,i as O,n as k,r as A,t as j}from"./sheet-DWG2Q04V.js";var M={name:`search`,size:24,node:[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]};M.node;var N=n(M),P=r(),F=t(a(),1),I=e();function L({offen:e,onSchliessen:t}){let n=u(),[r,a]=(0,F.useState)(``),[d,f]=(0,F.useState)(``),[p,m]=(0,F.useState)(null),[h,g]=(0,F.useState)(``),v=c({queryKey:[`hf-suche`,d],queryFn:()=>s(`/api/hf/search?q=${encodeURIComponent(d)}`),enabled:d.length>1}),y=c({queryKey:[`hf-quants`,p],queryFn:()=>s(`/api/hf/quants?repo=${encodeURIComponent(p??``)}`),enabled:!!p});async function b(e){if(p)try{await o(`/api/models/install`,{repo:p,quant:e,role:h||null}),l(`erfolg`,`${p} (${e}) wird heruntergeladen. Den Fortschritt siehst du unter Updates.`),n.invalidateQueries({queryKey:[`jobs`]}),n.invalidateQueries({queryKey:[`models`]}),t()}catch(e){l(`fehler`,e.message)}}let x=(y.data?.quants??[]).map(e=>typeof e==`string`?{quant:e}:e);return(0,I.jsx)(j,{open:e,onOpenChange:e=>!e&&t(),children:(0,I.jsxs)(k,{side:`right`,className:`w-full gap-3 overflow-y-auto border-linie bg-panel sm:max-w-xl`,children:[(0,I.jsxs)(O,{children:[(0,I.jsx)(D,{className:`schild text-lg`,children:`Modelle selbst suchen`}),(0,I.jsx)(A,{className:`text-text-2`,children:`Auf Hugging Face suchen, Quantisierung wählen, installieren.`})]}),(0,I.jsxs)(`form`,{className:`flex gap-2 px-4`,onSubmit:e=>{e.preventDefault(),m(null),f(r.trim())},children:[(0,I.jsx)(`label`,{htmlFor:`hf-suche`,className:`sr-only`,children:`Suchbegriff`}),(0,I.jsx)(`input`,{id:`hf-suche`,value:r,onChange:e=>a(e.target.value),placeholder:`z. B. Qwen3.8 GGUF`,className:`h-11 min-w-0 flex-1 rounded-lg border border-linie-stark bg-erhaben px-3 text-[15px] outline-none focus:border-cyan`}),(0,I.jsx)(i,{type:`submit`,children:`Suchen`})]}),(0,I.jsxs)(`div`,{className:`flex flex-col px-4 pb-4`,children:[v.isFetching&&(0,I.jsx)(`p`,{className:`py-3 text-sm text-text-2`,children:`Suche läuft …`}),!p&&v.data?.results.map(e=>(0,I.jsxs)(`button`,{type:`button`,onClick:()=>m(e.repo),className:`flex min-h-11 items-center justify-between gap-3 border-t border-linie py-2 text-left hover:text-cyan`,children:[(0,I.jsx)(`span`,{className:`ziffern min-w-0 text-sm break-all`,children:e.repo}),(0,I.jsxs)(`span`,{className:`ziffern shrink-0 text-xs text-text-3`,children:[_(e.downloads),` ↓`]})]},e.repo)),p&&(0,I.jsxs)(`div`,{className:`flex flex-col gap-3 pt-2`,children:[(0,I.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,I.jsx)(`span`,{className:`ziffern text-sm break-all`,children:p}),(0,I.jsx)(i,{variant:`ghost`,size:`sm`,onClick:()=>m(null),children:`Zurück`})]}),(0,I.jsxs)(`label`,{className:`flex items-center gap-3 text-sm text-text-2`,children:[`Rolle`,(0,I.jsxs)(`select`,{value:h,onChange:e=>g(e.target.value),className:`h-11 rounded-lg border border-linie-stark bg-erhaben px-3 text-foreground`,children:[(0,I.jsx)(`option`,{value:``,children:`ohne Rolle (nur installieren)`}),(0,I.jsx)(`option`,{value:`coder`,children:`Coder`})]})]}),y.isFetching&&(0,I.jsx)(`p`,{className:`text-sm text-text-2`,children:`Quantisierungen werden gelesen …`}),x.map(e=>{let t=e.quant??e.name??`?`,n=e.total_bytes??e.size_bytes;return(0,I.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-t border-linie py-2`,children:[(0,I.jsx)(`span`,{className:`ziffern text-sm`,children:t}),(0,I.jsxs)(`span`,{className:`flex items-center gap-3`,children:[n?(0,I.jsxs)(`span`,{className:`ziffern text-xs text-text-3`,children:[(n/1024**3).toFixed(1).replace(`.`,`,`),` GB`]}):null,(0,I.jsx)(i,{variant:`outline`,size:`sm`,onClick:()=>b(t),children:`Installieren`})]})]},t)})]})]})]})})}var R=115;function z(e){let t=(0,P.c)(55),{modelle:n,laufend:r}=e,i=g(),a=T(),o,s,c,l,u,d,f,p,m,h;if(t[0]!==r||t[1]!==i?.ram_total||t[2]!==i?.ram_used||t[3]!==n||t[4]!==a){let e=S(i?.ram_total??a.data?.box.ram_total)??122.7,g=S(i?.ram_used??a.data?.box.ram_used)??0,_;t[15]===r?_=t[16]:(_=e=>r.includes(e.name),t[15]=r,t[16]=_);let v=n.filter(_).reduce(B,0);s=Math.max(0,g-v);let y=t=>`${Math.min(100,t/e*100)}%`;o=C,p=`Speicher`,m=(0,I.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[Math.round(g),` von `,Math.round(e),` GB belegt · Grenze ~`,R,` GB`]});let b=`Speicher: ${Math.round(g)} von ${Math.round(e)} GB belegt`,x=y(g),w;t[17]===x?w=t[18]:(w={width:x},t[17]=x,t[18]=w);let T=`${g?v/g*100:0}%`,E;t[19]===T?E=t[20]:(E=(0,I.jsx)(`div`,{className:`h-full bg-cyan`,style:{width:T}}),t[19]=T,t[20]=E);let D=`${g?s/g*100:0}%`,O;t[21]===D?O=t[22]:(O=(0,I.jsx)(`div`,{className:`h-full bg-cyan/35`,style:{width:D}}),t[21]=D,t[22]=O);let k;t[23]!==w||t[24]!==E||t[25]!==O?(k=(0,I.jsxs)(`div`,{className:`absolute inset-y-0 left-0 flex overflow-hidden rounded-lg`,style:w,children:[E,O]}),t[23]=w,t[24]=E,t[25]=O,t[26]=k):k=t[26];let A=y(R),j;t[27]===A?j=t[28]:(j=(0,I.jsx)(`div`,{className:`absolute -top-1.5 -bottom-1.5 w-0.5 bg-bernstein`,style:{left:A}}),t[27]=A,t[28]=j),t[29]!==b||t[30]!==k||t[31]!==j?(h=(0,I.jsxs)(`div`,{className:`relative h-8 rounded-lg bg-erhaben`,role:`img`,"aria-label":b,children:[k,j]}),t[29]=b,t[30]=k,t[31]=j,t[32]=h):h=t[32],f=`flex flex-wrap gap-x-6 gap-y-2 text-sm text-text-2`,c=`flex items-center gap-2`,t[33]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,I.jsx)(`span`,{className:`size-2.5 rounded-sm bg-cyan`}),t[33]=l):l=t[33],u=` Geladene Modelle: `,d=Math.round(v),t[0]=r,t[1]=i?.ram_total,t[2]=i?.ram_used,t[3]=n,t[4]=a,t[5]=o,t[6]=s,t[7]=c,t[8]=l,t[9]=u,t[10]=d,t[11]=f,t[12]=p,t[13]=m,t[14]=h}else o=t[5],s=t[6],c=t[7],l=t[8],u=t[9],d=t[10],f=t[11],p=t[12],m=t[13],h=t[14];let _;t[34]!==c||t[35]!==l||t[36]!==u||t[37]!==d?(_=(0,I.jsxs)(`span`,{className:c,children:[l,u,d,` GB Dateien`]}),t[34]=c,t[35]=l,t[36]=u,t[37]=d,t[38]=_):_=t[38];let v;t[39]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,I.jsx)(`span`,{className:`size-2.5 rounded-sm bg-cyan/35`}),t[39]=v):v=t[39];let y;t[40]===s?y=t[41]:(y=Math.round(s),t[40]=s,t[41]=y);let b;t[42]===y?b=t[43]:(b=(0,I.jsxs)(`span`,{className:`flex items-center gap-2`,children:[v,` Cache, Dienste, System: `,y,` GB`]}),t[42]=y,t[43]=b);let x;t[44]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,I.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,I.jsx)(`span`,{className:`h-3 w-0.5 bg-bernstein`}),` Ab hier wird es eng`]}),t[44]=x):x=t[44];let w;t[45]!==b||t[46]!==f||t[47]!==_?(w=(0,I.jsxs)(`div`,{className:f,children:[_,b,x]}),t[45]=b,t[46]=f,t[47]=_,t[48]=w):w=t[48];let E;return t[49]!==o||t[50]!==w||t[51]!==p||t[52]!==m||t[53]!==h?(E=(0,I.jsxs)(o,{titel:p,rechts:m,children:[h,w]}),t[49]=o,t[50]=w,t[51]=p,t[52]=m,t[53]=h,t[54]=E):E=t[54],E}function B(e,t){return e+(S(t.size_bytes)??0)}function V(e){let t=(0,P.c)(7),{name:n,wert:r}=e,i;t[0]===n?i=t[1]:(i=(0,I.jsx)(`dt`,{className:`text-xs text-text-3`,children:n}),t[0]=n,t[1]=i);let a;t[2]===r?a=t[3]:(a=(0,I.jsx)(`dd`,{className:`ziffern m-0 text-lg`,children:r}),t[2]=r,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,I.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}function H(e){let t=(0,P.c)(47),{titel:n,modell:r,laeuft:a,nutzer:o}=e,s=x();if(!r){let e;t[0]===n?e=t[1]:(e=(0,I.jsx)(`span`,{className:`schild text-sm text-text-3`,children:n}),t[0]=n,t[1]=e);let r;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,I.jsx)(h,{children:`Frei`}),t[2]=r):r=t[2];let i;t[3]===e?i=t[4]:(i=(0,I.jsxs)(`div`,{className:`flex items-center justify-between`,children:[e,r]}),t[3]=e,t[4]=i);let a,o;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,I.jsx)(`h3`,{className:`font-anzeige text-xl font-semibold text-text-2`,children:`Nicht belegt`}),o=(0,I.jsx)(`p`,{className:`text-sm text-text-2`,children:`Nur belegen, wenn ein Modell hier echten Mehrwert bringt. Das Radar meldet Kandidaten.`}),t[5]=a,t[6]=o):(a=t[5],o=t[6]);let s;return t[7]===i?s=t[8]:(s=(0,I.jsxs)(`article`,{className:`flex flex-col gap-3.5 rounded-2xl border border-dashed border-linie-stark p-5`,children:[i,a,o]}),t[7]=i,t[8]=s),s}let c;t[9]!==r.ctx||t[10]!==r.parallel_slots?(c=r.ctx?Math.round(r.ctx/Math.max(1,r.parallel_slots)/1024):null,t[9]=r.ctx,t[10]=r.parallel_slots,t[11]=c):c=t[11];let l=c,u=!!r.capabilities?.vision,d;t[12]===n?d=t[13]:(d=(0,I.jsx)(`span`,{className:`schild text-sm text-text-3`,children:n}),t[12]=n,t[13]=d);let f=a?`gruen`:`grau`,m=a?`Geladen`:`Auf Abruf`,g;t[14]!==f||t[15]!==m?(g=(0,I.jsx)(h,{art:f,children:m}),t[14]=f,t[15]=m,t[16]=g):g=t[16];let _;t[17]!==d||t[18]!==g?(_=(0,I.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[d,g]}),t[17]=d,t[18]=g,t[19]=_):_=t[19];let v;t[20]===r.name?v=t[21]:(v=(0,I.jsx)(`h3`,{className:`ziffern m-0 text-lg font-medium break-all`,children:r.name}),t[20]=r.name,t[21]=v);let y;t[22]===r.size_bytes?y=t[23]:(y=p(r.size_bytes),t[22]=r.size_bytes,t[23]=y);let b;t[24]===y?b=t[25]:(b=(0,I.jsx)(V,{name:`Größe`,wert:y}),t[24]=y,t[25]=b);let S=l?`${l}k`:`–`,C;t[26]===S?C=t[27]:(C=(0,I.jsx)(V,{name:`Kontext`,wert:S}),t[26]=S,t[27]=C);let w=u?`ja`:`nein`,T;t[28]===w?T=t[29]:(T=(0,I.jsx)(V,{name:`Bilder`,wert:w}),t[28]=w,t[29]=T);let E;t[30]!==C||t[31]!==T||t[32]!==b?(E=(0,I.jsxs)(`dl`,{className:`m-0 grid grid-cols-3 gap-3`,children:[b,C,T]}),t[30]=C,t[31]=T,t[32]=b,t[33]=E):E=t[33];let D=r.spec_active?` Mit Draft-Beschleunigung.`:``,O;t[34]!==o||t[35]!==D?(O=(0,I.jsxs)(`p`,{className:`text-sm text-text-2`,children:[`Genutzt von `,o,`.`,D]}),t[34]=o,t[35]=D,t[36]=O):O=t[36];let k;t[37]!==s||t[38]!==a||t[39]!==r.name?(k=!a&&(0,I.jsx)(i,{variant:`outline`,size:`sm`,className:`mt-auto self-start`,onClick:()=>s.mutate(r.name),disabled:s.isPending,children:`Jetzt laden`}),t[37]=s,t[38]=a,t[39]=r.name,t[40]=k):k=t[40];let A;return t[41]!==E||t[42]!==O||t[43]!==k||t[44]!==_||t[45]!==v?(A=(0,I.jsxs)(`article`,{className:`flex flex-col gap-3.5 rounded-2xl border border-linie bg-panel p-5`,children:[_,v,E,O,k]}),t[41]=E,t[42]=O,t[43]=k,t[44]=_,t[45]=v,t[46]=A):A=t[46],A}function U(e){let t=(0,P.c)(51),{nutzung:n}=e;if(!n)return null;let r;t[0]===n.absender?r=t[1]:(r=Math.max(1,...n.absender.map(q)),t[0]=n.absender,t[1]=r);let i=r,a,o,s,c,l,u,d,f,p,m,h,g;if(t[2]!==i||t[3]!==n.absender||t[4]!==n.letzte_24h||t[5]!==n.tage){let e=n.letzte_24h.map(G),r=Math.max(1,...e);a=C,g=`Wer nutzt die Modelle`,t[18]===n.tage?o=t[19]:(o=(0,I.jsxs)(`span`,{className:`ziffern text-xs text-text-3`,children:[`letzte `,n.tage,` Tage`]}),t[18]=n.tage,t[19]=o),t[20]===n.absender.length?s=t[21]:(s=n.absender.length===0&&(0,I.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine Anfragen aufgezeichnet.`}),t[20]=n.absender.length,t[21]=s);let v;if(t[22]!==i||t[23]!==n.absender){let e;t[25]===i?e=t[26]:(e=e=>(0,I.jsxs)(`li`,{className:`flex flex-col gap-1.5`,children:[(0,I.jsxs)(`div`,{className:`flex justify-between gap-3 text-sm`,children:[(0,I.jsx)(`span`,{children:e.name}),(0,I.jsx)(`span`,{className:`ziffern`,children:_(e.anfragen)})]}),(0,I.jsx)(`div`,{className:`h-2 rounded-full bg-erhaben`,children:(0,I.jsx)(`div`,{className:`h-2 rounded-full bg-cyan`,style:{width:`${e.anfragen/i*100}%`}})})]},e.name),t[25]=i,t[26]=e),v=n.absender.map(e),t[22]=i,t[23]=n.absender,t[24]=v}else v=t[24];t[27]===v?c=t[28]:(c=(0,I.jsx)(`ul`,{className:`m-0 flex list-none flex-col gap-3.5 p-0`,children:v}),t[27]=v,t[28]=c),m=`flex flex-col gap-1.5`,t[29]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,I.jsx)(`span`,{className:`schild text-xs text-text-3`,children:`Anfragen je Stunde, letzte 24 h`}),t[29]=h):h=t[29],l=`0 0 240 64`,u=`h-16 w-full`,d=`img`,f=`Anfragen je Stunde in den letzten 24 Stunden`;let y;t[30]===r?y=t[31]:(y=(e,t)=>{let n=e?Math.max(3,e/r*50):2;return(0,I.jsx)(`rect`,{x:t*10+1.5,y:52-n,width:7,height:n,rx:1.5,fill:e?`var(--cyan)`:`var(--linie)`},t)},t[30]=r,t[31]=y),p=e.map(y),t[2]=i,t[3]=n.absender,t[4]=n.letzte_24h,t[5]=n.tage,t[6]=a,t[7]=o,t[8]=s,t[9]=c,t[10]=l,t[11]=u,t[12]=d,t[13]=f,t[14]=p,t[15]=m,t[16]=h,t[17]=g}else a=t[6],o=t[7],s=t[8],c=t[9],l=t[10],u=t[11],d=t[12],f=t[13],p=t[14],m=t[15],h=t[16],g=t[17];let v;t[32]===Symbol.for(`react.memo_cache_sentinel`)?(v=[0,6,12,18].map(W),t[32]=v):v=t[32];let y;t[33]!==l||t[34]!==u||t[35]!==d||t[36]!==f||t[37]!==p?(y=(0,I.jsxs)(`svg`,{viewBox:l,className:u,role:d,"aria-label":f,children:[p,v]}),t[33]=l,t[34]=u,t[35]=d,t[36]=f,t[37]=p,t[38]=y):y=t[38];let b;t[39]!==y||t[40]!==m||t[41]!==h?(b=(0,I.jsxs)(`div`,{className:m,children:[h,y]}),t[39]=y,t[40]=m,t[41]=h,t[42]=b):b=t[42];let x;t[43]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,I.jsx)(`p`,{className:`text-xs text-text-3`,children:`Anfragen an llama-swap. NerdQuiz geht direkt dorthin, alles andere über MC2.`}),t[43]=x):x=t[43];let S;return t[44]!==a||t[45]!==o||t[46]!==s||t[47]!==c||t[48]!==b||t[49]!==g?(S=(0,I.jsxs)(a,{titel:g,rechts:o,children:[s,c,b,x]}),t[44]=a,t[45]=o,t[46]=s,t[47]=c,t[48]=b,t[49]=g,t[50]=S):S=t[50],S}function W(e){return(0,I.jsx)(`text`,{x:e*10+5,y:63,textAnchor:`middle`,style:{fontSize:9,fill:`var(--text-3)`,fontFamily:`var(--font-mono)`},children:e},e)}function G(e){return Object.values(e.je_absender).reduce(K,0)}function K(e,t){return e+t}function q(e){return e.anfragen}var J={bestanden:`gruen`,durchgefallen:`rot`,wartet:`cyan`,neu:`cyan`,getestet:`grau`,uebernommen:`gruen`,verworfen:`grau`};function Y(e){let t=(0,P.c)(31),{k:n}=e,r=w(),a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=[`bestanden`,`wartet`,`neu`],t[0]=a):a=t[0];let o=a.includes(n.status),s;t[1]===n.name?s=t[2]:(s=(0,I.jsx)(`span`,{className:`ziffern text-[15px] font-medium`,children:n.name}),t[1]=n.name,t[2]=s);let c=n.rolle===`hirn`?`fürs Hirn`:`fürs Coden`,l;t[3]===c?l=t[4]:(l=(0,I.jsx)(h,{art:`cyan`,children:c}),t[3]=c,t[4]=l);let u=n.eng?`bernstein`:n.passt?`gruen`:`rot`,d=n.eng?`passt knapp`:n.passt?`passt`:`passt nicht`,f;t[5]!==u||t[6]!==d?(f=(0,I.jsx)(h,{art:u,children:d}),t[5]=u,t[6]=d,t[7]=f):f=t[7];let p=J[n.status]??`grau`,m;t[8]!==n.status||t[9]!==p?(m=(0,I.jsx)(h,{art:p,children:n.status}),t[8]=n.status,t[9]=p,t[10]=m):m=t[10];let g;t[11]!==s||t[12]!==l||t[13]!==f||t[14]!==m?(g=(0,I.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[s,l,f,m]}),t[11]=s,t[12]=l,t[13]=f,t[14]=m,t[15]=g):g=t[15];let _;t[16]===n.groesse_gb?_=t[17]:(_=n.groesse_gb==null?``:`${n.groesse_gb.toLocaleString(`de-DE`)} GB. `,t[16]=n.groesse_gb,t[17]=_);let v;t[18]!==n.begruendung||t[19]!==_?(v=(0,I.jsxs)(`p`,{className:`text-sm text-text-2`,children:[_,n.begruendung]}),t[18]=n.begruendung,t[19]=_,t[20]=v):v=t[20];let y;t[21]!==r||t[22]!==n.id||t[23]!==n.name||t[24]!==n.status||t[25]!==o?(y=o&&(0,I.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[n.status===`bestanden`&&(0,I.jsx)(i,{size:`sm`,disabled:r.isPending,onClick:()=>r.mutate({id:n.id,aktion:`uebernehmen`,name:n.name}),children:`Übernehmen`}),(0,I.jsx)(i,{variant:`outline`,size:`sm`,disabled:r.isPending,onClick:()=>r.mutate({id:n.id,aktion:`verwerfen`,name:n.name}),children:`Verwerfen`})]}),t[21]=r,t[22]=n.id,t[23]=n.name,t[24]=n.status,t[25]=o,t[26]=y):y=t[26];let b;return t[27]!==g||t[28]!==v||t[29]!==y?(b=(0,I.jsxs)(`li`,{className:`flex flex-col gap-2 border-t border-linie py-3.5`,children:[g,v,y]}),t[27]=g,t[28]=v,t[29]=y,t[30]=b):b=t[30],b}function X(){let e=(0,P.c)(18),t=d(),n=E();if(t.isError){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,I.jsx)(C,{titel:`Modell-Radar`,id:`radar`,children:(0,I.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Das Radar ist auf dieser Box noch nicht eingerichtet.`})}),e[0]=t):t=e[0],t}let r=t.data,a;e[1]===n?a=e[2]:(a=()=>n.mutate(void 0),e[1]=n,e[2]=a);let o;e[3]!==n.isPending||e[4]!==a?(o=(0,I.jsx)(i,{variant:`info`,size:`sm`,onClick:a,disabled:n.isPending,children:`Jetzt suchen`}),e[3]=n.isPending,e[4]=a,e[5]=o):o=e[5];let s;e[6]===r?s=e[7]:(s=r?.naechster_test?` Nächster Test: ${b(r.naechster_test)}.`:``,e[6]=r,e[7]=s);let c;e[8]===s?c=e[9]:(c=(0,I.jsxs)(`p`,{className:`-mt-2 text-sm text-text-2`,children:[`Testet nachts zwischen 00:30 und 02:30 selbst, höchstens einen Kandidaten pro Woche.`,s]}),e[8]=s,e[9]=c);let l,u;e[10]===r?(l=e[11],u=e[12]):(l=r?r.kandidaten.length===0?(0,I.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Nichts Besseres in Sicht.`}):(0,I.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:r.kandidaten.map(Q)}):(0,I.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}),u=r&&r.tests.length>0&&(0,I.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,I.jsx)(`h3`,{className:`schild text-xs text-text-3`,children:`Letzte Tests`}),r.tests.slice(0,3).map(Z)]}),e[10]=r,e[11]=l,e[12]=u);let f;return e[13]!==o||e[14]!==c||e[15]!==l||e[16]!==u?(f=(0,I.jsxs)(C,{titel:`Modell-Radar`,id:`radar`,rechts:o,children:[c,l,u]}),e[13]=o,e[14]=c,e[15]=l,e[16]=u,e[17]=f):f=e[17],f}function Z(e){return(0,I.jsxs)(`p`,{className:`text-sm text-text-2`,children:[(0,I.jsx)(`span`,{className:`ziffern text-text-3`,children:b(e.datum)}),` · `,e.zusammenfassung]},e.id)}function Q(e){return(0,I.jsx)(Y,{k:e},e.id)}function $(){let e=(0,P.c)(52),t=v(),n=m(),[r,a]=(0,F.useState)(!1);if(t.isPending){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,I.jsx)(f,{text:`Modelle werden gelesen …`}),e[0]=t):t=e[0],t}if(t.error||!t.data){let n=`Die Modell-Liste fehlt: ${t.error?.message??`keine Daten`}`,r;return e[1]===n?r=e[2]:(r=(0,I.jsx)(f,{fehler:!0,text:n}),e[1]=n,e[2]=r),r}let o=t.data.models,s=t.data.running,c,l,u,d,h,g,_,y;if(e[3]!==s||e[4]!==o||e[5]!==n.data){let t=o.find(te),r=o.find(ee),f=o.filter(e=>e!==t&&e!==r),m;e[14]===n.data?.zuletzt_geladen?m=e[15]:(m=n.data?.zuletzt_geladen??{},e[14]=n.data?.zuletzt_geladen,e[15]=m);let v=m;e[16]!==s||e[17]!==o?(g=(0,I.jsx)(z,{modelle:o,laufend:s}),e[16]=s,e[17]=o,e[18]=g):g=e[18];let x=(0,I.jsx)(H,{titel:`Hirn`,modell:t,laeuft:!!t&&s.includes(t.name),nutzer:`Lucy, NerdQuiz und OpenChamber für Kleinkram`}),S=!!r&&s.includes(r.name),w;e[19]!==r||e[20]!==S?(w=(0,I.jsx)(H,{titel:`Coder`,modell:r,laeuft:S,nutzer:`OpenChamber zum Planen und Bauen und Lucys Delegation`}),e[19]=r,e[20]=S,e[21]=w):w=e[21];let T;e[22]===Symbol.for(`react.memo_cache_sentinel`)?(T=(0,I.jsx)(H,{titel:`Dritte Rolle`,laeuft:!1,nutzer:``}),e[22]=T):T=e[22],e[23]!==w||e[24]!==x?(_=(0,I.jsxs)(`section`,{"aria-label":`Rollen`,className:`grid gap-5 md:grid-cols-3 md:gap-6`,children:[x,w,T]}),e[23]=w,e[24]=x,e[25]=_):_=e[25];let E;e[26]===n.data?E=e[27]:(E=(0,I.jsx)(U,{nutzung:n.data}),e[26]=n.data,e[27]=E);let D;e[28]===Symbol.for(`react.memo_cache_sentinel`)?(D=(0,I.jsx)(X,{}),e[28]=D):D=e[28],e[29]===E?y=e[30]:(y=(0,I.jsxs)(`div`,{className:`grid gap-5 md:gap-6 lg:grid-cols-[minmax(0,1fr)_minmax(0,1.3fr)]`,children:[E,D]}),e[29]=E,e[30]=y),c=C,d=`Weitere Einträge`,e[31]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,I.jsxs)(i,{variant:`outline`,size:`sm`,onClick:()=>a(!0),children:[(0,I.jsx)(N,{"aria-hidden":!0}),` Modelle selbst suchen`]}),e[31]=h):h=e[31],l=`m-0 flex list-none flex-col p-0`;let O;e[32]!==s||e[33]!==v?(O=e=>(0,I.jsxs)(`li`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-3 border-t border-linie py-2.5 sm:grid-cols-[minmax(0,1fr)_120px_160px]`,children:[(0,I.jsxs)(`span`,{className:`min-w-0`,children:[(0,I.jsx)(`span`,{className:`ziffern block text-sm break-all`,children:e.name}),(0,I.jsx)(`span`,{className:`text-xs text-text-3`,children:e.aliases.length?e.aliases.join(`, `):`ohne Rolle`})]}),(0,I.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:p(e.size_bytes)}),(0,I.jsx)(`span`,{className:`ziffern hidden text-xs text-text-3 sm:block`,children:s.includes(e.name)?`geladen`:v[e.name]?`zuletzt ${b(v[e.name])}`:`länger nicht geladen`})]},e.name),e[32]=s,e[33]=v,e[34]=O):O=e[34],u=f.map(O),e[3]=s,e[4]=o,e[5]=n.data,e[6]=c,e[7]=l,e[8]=u,e[9]=d,e[10]=h,e[11]=g,e[12]=_,e[13]=y}else c=e[6],l=e[7],u=e[8],d=e[9],h=e[10],g=e[11],_=e[12],y=e[13];let x;e[35]!==l||e[36]!==u?(x=(0,I.jsx)(`ul`,{className:l,children:u}),e[35]=l,e[36]=u,e[37]=x):x=e[37];let S;e[38]!==c||e[39]!==d||e[40]!==h||e[41]!==x?(S=(0,I.jsx)(c,{titel:d,rechts:h,children:x}),e[38]=c,e[39]=d,e[40]=h,e[41]=x,e[42]=S):S=e[42];let w;e[43]===Symbol.for(`react.memo_cache_sentinel`)?(w=()=>a(!1),e[43]=w):w=e[43];let T;e[44]===r?T=e[45]:(T=(0,I.jsx)(L,{offen:r,onSchliessen:w}),e[44]=r,e[45]=T);let E;return e[46]!==T||e[47]!==g||e[48]!==_||e[49]!==y||e[50]!==S?(E=(0,I.jsxs)(I.Fragment,{children:[g,_,y,S,T]}),e[46]=T,e[47]=g,e[48]=_,e[49]=y,e[50]=S,e[51]=E):E=e[51],E}function ee(e){return y(e)===`coder`}function te(e){return y(e)===`hirn`}export{$ as ModelleSeite}; |