- 新增 log_datasource.go / log_proxy.go / user_api_token.go 后端控制器 - 新增 log_datasource.go model - 新增 monitor/log-center.ts API 模块 - 新增 LogCenter 前端组件及页面 - 重构 deployment 相关组件 (HPDA/UpdateImageModal/bundle-yaml 等) - 新增 ResetPasswordDialog / code-snippet-block / copy-button 等 UI 组件 - 重构多个 k8s 相关组件 (TopologyView/ResourceVisualEditor/PodFileBrowser 等) - 更新多个 API 和工具函数 (auth.ts/monitor/index.ts/request.ts 等) - 更新静态资源 (index.html + 新 JS/CSS bundle) - 删除废弃静态资源文件
11 lines
67 KiB
JavaScript
11 lines
67 KiB
JavaScript
import{r,j as e}from"./vendor-codemirror-B1SGo4xl.js";import{B as T,Q as oe,N as Pe,y as Te,w as le,R as Me,x as q,z as Y,T as Ee,A as X,P as Ae,C as Ie,m as M,D as ue,a as de,b as Fe,c as ie,d as xe,e as Ge,t as I,o as Le,ab as Oe,ac as ze,ad as Be,ae as Ue,af as ee,ag as F}from"./index-lgmWPQDG.js";import{C as G,b as W,c as $,d as pe,a as L}from"./card-CdN7vcLa.js";import{I as z}from"./input-DBDfXZx0.js";import{B as y}from"./badge-Ca5YHtna.js";import{k as w}from"./index-BW7A0O1o.js";import{T as We,a as $e,b as E,c as A}from"./tabs-CVrkiNvd.js";import{i as me,a as be,R as V,aK as Ve,r as qe,L as he,at as He,au as Xe,X as Ye,P as Je,S as Qe,aP as Ze,x as et,p as tt,k as st,v as te,T as rt,l as nt,y as at}from"./vendor-icons-BlY7QrxS.js";import{R as ct,A as ot,C as lt,X as ut,Y as dt,T as it,a as se}from"./AreaChart-BeGS9sLt.js";import{T as re}from"./textarea-ym7reYBG.js";import{L as P}from"./label-Bzhjv1tR.js";import{u as xt}from"./index-5FEebgvX.js";import{x as pt,a as mt}from"./vendor-xterm-20M9KZE1.js";function bt({cluster:a,onClose:p}){const[n,g]=r.useState([]),[s,l]=r.useState([]),[x,j]=r.useState([]),[k,C]=r.useState([]),[b,f]=r.useState([]),h=r.useMemo(()=>{if(!n||n.length===0)return{cpuPct:0,memPct:0};let t=0,u=0,v=0;for(const K of n){const o=K.cpu||0,i=K.cpu_usage_m?parseFloat(String(K.cpu_usage_m).replace("m","")):0,N=o>0?i/1e3/o*100:0,S=K.memory_mb||0,O=K.mem_usage_mi?parseFloat(String(K.mem_usage_mi).replace("Mi","").replace("Ki","")):0,B=K.mem_usage_mi?.includes?.("Ki")?O/1024:K.mem_usage_mi?.includes?.("Gi")?O*1024:O,U=S>0?B/S*100:0;(N>0||U>0)&&(t+=N,u+=U,v++)}return{cpuPct:v>0?t/v:0,memPct:v>0?u/v:0}},[n]),m=r.useMemo(()=>{const t=Math.max(0,Math.min(100,Number(h.cpuPct.toFixed(1)))),u=Math.max(0,Math.min(100,Number(h.memPct.toFixed(1))));return[{time:"10m前",cpu:Math.max(0,t*.72),memory:Math.max(0,u*.78)},{time:"7m前",cpu:Math.max(0,t*.82),memory:Math.max(0,u*.85)},{time:"4m前",cpu:Math.max(0,t*.9),memory:Math.max(0,u*.93)},{time:"2m前",cpu:Math.max(0,t*.96),memory:Math.max(0,u*.97)},{time:"现在",cpu:t,memory:u}]},[h]),d=async t=>{try{const[u,v,K,o,i]=await Promise.all([w.getNodes(t).catch(()=>[]),w.getPods(t).catch(()=>[]),w.getDeployments(t).catch(()=>[]),w.getServices(t).catch(()=>[]),w.getIngresses(t).catch(()=>[])]),N=S=>Array.isArray(S)?S:S?.list||[];g(N(u)),l(N(v)),j(N(K)),C(N(o)),f(N(i))}catch(u){console.error("加载集群详情失败:",u)}};return r.useEffect(()=>{a?.id&&d(a.id)},[a?.id]),e.jsxs(G,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:97:5",className:"bg-slate-900 border-slate-800",children:[e.jsx(W,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:98:7",children:e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:99:9",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:100:11",className:"flex items-center gap-3",children:[e.jsx(me,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:101:13",className:"h-6 w-6 text-blue-400"}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:102:13",children:[e.jsx($,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:103:15",className:"text-slate-100",children:a.name}),e.jsxs(pe,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:104:15",className:"text-slate-500",children:[a.version," · ",a.node_count||0," 节点 · 创建于"," ",a.created_at?new Date(a.created_at).toLocaleDateString():"-"]})]})]}),e.jsxs(T,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:110:11",variant:"ghost",size:"sm",className:"text-slate-400 hover:text-slate-100",onClick:p,children:[e.jsx(be,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:116:13",className:"h-4 w-4 mr-2"}),"关闭"]})]})}),e.jsx(L,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:121:7",children:e.jsxs(We,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:122:9",defaultValue:"overview",className:"w-full",children:[e.jsxs($e,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:123:11",className:"bg-slate-800 border border-slate-700 flex-wrap h-auto",children:[e.jsx(E,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:124:13",value:"overview",className:"data-[state=active]:bg-slate-700",children:"概览"}),e.jsxs(E,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:127:13",value:"nodes",className:"data-[state=active]:bg-slate-700",children:["节点 (",n.length,")"]}),e.jsxs(E,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:130:13",value:"pods",className:"data-[state=active]:bg-slate-700",children:["Pod (",s.length,")"]}),e.jsxs(E,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:133:13",value:"deployments",className:"data-[state=active]:bg-slate-700",children:["Deployment (",x.length,")"]}),e.jsxs(E,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:136:13",value:"services",className:"data-[state=active]:bg-slate-700",children:["Service (",k.length,")"]}),e.jsxs(E,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:139:13",value:"ingresses",className:"data-[state=active]:bg-slate-700",children:["Ingress (",b.length,")"]}),e.jsx(E,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:142:13",value:"events",className:"data-[state=active]:bg-slate-700",children:"事件"})]}),e.jsx(A,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:147:11",value:"overview",className:"mt-4 space-y-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:148:13",className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[e.jsxs(G,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:149:15",className:"bg-slate-800/50 border-slate-700",children:[e.jsx(W,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:150:17",className:"pb-2",children:e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:151:19",className:"flex items-center justify-between w-full",children:[e.jsx($,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:152:21",className:"text-sm text-slate-400",children:"资源使用趋势(模拟最近变化)"}),e.jsx(T,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:153:21",variant:"ghost",size:"sm",className:"h-6 w-6 p-0 text-slate-400 hover:text-slate-200",onClick:()=>a?.id&&d(a.id),title:"刷新节点指标",children:e.jsx(V,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:160:23",className:"h-3.5 w-3.5"})})]})}),e.jsxs(L,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:164:17",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:165:19",className:"h-[200px]",children:e.jsx(ct,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:166:21",width:"100%",height:"100%",children:e.jsxs(ot,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:167:23",data:m,margin:{top:5,right:10,left:0,bottom:5},children:[e.jsxs("defs",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:168:25",children:[e.jsxs("linearGradient",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:169:27",id:"colorCpu",x1:"0",y1:"0",x2:"0",y2:"1",children:[e.jsx("stop",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:170:29",offset:"5%",stopColor:"#3b82f6",stopOpacity:.35}),e.jsx("stop",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:171:29",offset:"95%",stopColor:"#3b82f6",stopOpacity:.05})]}),e.jsxs("linearGradient",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:173:27",id:"colorMemory",x1:"0",y1:"0",x2:"0",y2:"1",children:[e.jsx("stop",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:174:29",offset:"5%",stopColor:"#10b981",stopOpacity:.35}),e.jsx("stop",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:175:29",offset:"95%",stopColor:"#10b981",stopOpacity:.05})]})]}),e.jsx(lt,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:178:25",strokeDasharray:"2 2",stroke:"#1e293b"}),e.jsx(ut,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:179:25",dataKey:"time",stroke:"#475569",fontSize:11,tickLine:!1}),e.jsx(dt,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:180:25",stroke:"#475569",fontSize:11,domain:[0,100],unit:"%",tickLine:!1}),e.jsx(it,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:181:25",contentStyle:{backgroundColor:"#0f172a",border:"1px solid #1e293b",borderRadius:"6px",color:"#f8fafc",fontSize:"12px"}}),e.jsx(se,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:190:25",type:"monotone",dataKey:"cpu",stroke:"#3b82f6",strokeWidth:2,fill:"url(#colorCpu)",dot:!1,activeDot:{r:3,fill:"#3b82f6"},name:"CPU(%)"}),e.jsx(se,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:200:25",type:"monotone",dataKey:"memory",stroke:"#10b981",strokeWidth:2,fill:"url(#colorMemory)",dot:!1,activeDot:{r:3,fill:"#10b981"},name:"内存(%)"})]})})}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:213:19",className:"flex justify-center gap-6 mt-2 text-xs text-slate-400",children:[e.jsxs("span",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:214:21",children:["CPU: ",e.jsxs("span",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:214:32",className:"text-blue-400 font-bold",children:[h.cpuPct.toFixed(1),"%"]})]}),e.jsxs("span",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:215:21",children:["内存: ",e.jsxs("span",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:215:31",className:"text-emerald-400 font-bold",children:[h.memPct.toFixed(1),"%"]})]})]})]})]}),e.jsxs(G,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:220:15",className:"bg-slate-800/50 border-slate-700",children:[e.jsx(W,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:221:17",className:"pb-2",children:e.jsx($,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:222:19",className:"text-sm text-slate-400",children:"资源分布"})}),e.jsx(L,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:224:17",children:e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:225:19",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:226:21",className:"text-center p-4 rounded-lg bg-slate-800",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:227:23",className:"text-3xl font-bold text-blue-400",children:a.pod_count||0}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:228:23",className:"text-sm text-slate-500 mt-1",children:"Pod"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:230:21",className:"text-center p-4 rounded-lg bg-slate-800",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:231:23",className:"text-3xl font-bold text-emerald-400",children:a.service_count||0}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:232:23",className:"text-sm text-slate-500 mt-1",children:"Service"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:234:21",className:"text-center p-4 rounded-lg bg-slate-800",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:235:23",className:"text-3xl font-bold text-purple-400",children:a.deployment_count||0}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:236:23",className:"text-sm text-slate-500 mt-1",children:"Deployment"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:238:21",className:"text-center p-4 rounded-lg bg-slate-800",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:239:23",className:"text-3xl font-bold text-amber-400",children:a.node_count||0}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:240:23",className:"text-sm text-slate-500 mt-1",children:"节点"})]})]})})]})]})}),e.jsx(A,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:248:11",value:"nodes",className:"mt-4",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:249:13",className:"border rounded-lg border-slate-700 overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:250:15",className:"w-full",children:[e.jsx("thead",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:251:17",className:"bg-slate-800",children:e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:252:19",children:[e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:253:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"名称"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:254:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"角色"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:255:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"状态"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:256:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"CPU"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:257:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"内存"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:258:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"Pod"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:259:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"操作系统"})]})}),e.jsx("tbody",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:262:17",className:"divide-y divide-slate-800",children:n.length===0?e.jsx("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:264:21",children:e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:265:23",colSpan:7,className:"px-4 py-8 text-center text-slate-500",children:"暂无节点数据"})}):n.map(t=>e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:269:21",className:"hover:bg-slate-800/50",children:[e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:270:23",className:"px-4 py-3 text-sm text-slate-200",children:t.name}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:271:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:272:25",variant:"outline",className:t.role==="master"?"border-purple-500/30 text-purple-400 bg-purple-500/10":"border-blue-500/30 text-blue-400 bg-blue-500/10",children:t.role==="master"?"Master":"Worker"})}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:283:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:284:25",variant:"outline",className:(t.status||"").toLowerCase()==="ready"?"border-emerald-500/30 text-emerald-400 bg-emerald-500/10":"border-red-500/30 text-red-400 bg-red-500/10",children:(t.status||"").toLowerCase()==="ready"?"Ready":"NotReady"})}),e.jsxs("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:295:23",className:"px-4 py-3 text-sm text-slate-300",children:[t.cpu_usage_m||"0m"," / ",t.cpu,"核"]}),e.jsxs("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:298:23",className:"px-4 py-3 text-sm text-slate-300",children:[t.mem_usage_mi||"0Mi"," / ",t.memory_mb?(t.memory_mb/1024).toFixed(0)+"GB":"-"]}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:301:23",className:"px-4 py-3 text-sm text-slate-300",children:t.max_pods??0}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:302:23",className:"px-4 py-3 text-sm text-slate-400",children:t.os})]},t.id||t.name))})]})})}),e.jsx(A,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:311:11",value:"pods",className:"mt-4",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:312:13",className:"border rounded-lg border-slate-700 overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:313:15",className:"w-full",children:[e.jsx("thead",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:314:17",className:"bg-slate-800",children:e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:315:19",children:[e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:316:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"名称"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:317:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"命名空间"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:318:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"状态"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:319:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"重启次数"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:320:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"CPU"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:321:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"内存"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:322:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"节点"})]})}),e.jsx("tbody",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:325:17",className:"divide-y divide-slate-800",children:s.length===0?e.jsx("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:327:21",children:e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:328:23",colSpan:7,className:"px-4 py-8 text-center text-slate-500",children:"暂无Pod数据"})}):s.map(t=>e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:332:21",className:"hover:bg-slate-800/50",children:[e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:333:23",className:"px-4 py-3 text-sm text-slate-200",children:t.name}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:334:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:335:25",variant:"outline",className:"border-slate-700 text-slate-400",children:t.namespace})}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:339:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:340:25",variant:"outline",className:(t.status||"").toLowerCase()==="running"?"border-emerald-500/30 text-emerald-400 bg-emerald-500/10":(t.status||"").toLowerCase()==="pending"?"border-amber-500/30 text-amber-400 bg-amber-500/10":"border-red-500/30 text-red-400 bg-red-500/10",children:t.status})}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:353:23",className:"px-4 py-3 text-sm text-slate-300",children:t.restart_count??0}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:354:23",className:"px-4 py-3 text-sm text-slate-300",children:t.cpu_usage_m||"0m"}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:355:23",className:"px-4 py-3 text-sm text-slate-300",children:t.mem_usage_mi||"0Mi"}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:356:23",className:"px-4 py-3 text-sm text-slate-400",children:t.node_name})]},t.id||t.name))})]})})}),e.jsx(A,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:365:11",value:"deployments",className:"mt-4",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:366:13",className:"border rounded-lg border-slate-700 overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:367:15",className:"w-full",children:[e.jsx("thead",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:368:17",className:"bg-slate-800",children:e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:369:19",children:[e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:370:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"名称"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:371:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"命名空间"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:372:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"副本数"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:373:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"可用副本"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:374:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"镜像"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:375:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"创建时间"})]})}),e.jsx("tbody",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:378:17",className:"divide-y divide-slate-800",children:x.length===0?e.jsx("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:380:21",children:e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:381:23",colSpan:6,className:"px-4 py-8 text-center text-slate-500",children:"暂无Deployment数据"})}):x.map(t=>e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:385:21",className:"hover:bg-slate-800/50",children:[e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:386:23",className:"px-4 py-3 text-sm text-slate-200",children:t.name}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:387:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:388:25",variant:"outline",className:"border-slate-700 text-slate-400",children:t.namespace})}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:392:23",className:"px-4 py-3 text-sm text-slate-300",children:t.replicas}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:393:23",className:"px-4 py-3",children:e.jsxs("span",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:394:25",className:`text-sm ${(t.available_replicas??t.availableReplicas)===t.replicas?"text-emerald-400":"text-amber-400"}`,children:[t.available_replicas??t.availableReplicas," / ",t.replicas]})}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:398:23",className:"px-4 py-3 text-sm text-slate-400 truncate max-w-[200px]",children:t.image}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:399:23",className:"px-4 py-3 text-sm text-slate-400",children:t.created_at||t.createdAt})]},t.id||t.name))})]})})}),e.jsx(A,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:408:11",value:"services",className:"mt-4",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:409:13",className:"border rounded-lg border-slate-700 overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:410:15",className:"w-full",children:[e.jsx("thead",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:411:17",className:"bg-slate-800",children:e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:412:19",children:[e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:413:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"名称"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:414:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"命名空间"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:415:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"类型"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:416:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"ClusterIP"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:417:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"端口"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:418:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"Selector"})]})}),e.jsx("tbody",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:421:17",className:"divide-y divide-slate-800",children:k.length===0?e.jsx("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:423:21",children:e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:424:23",colSpan:6,className:"px-4 py-8 text-center text-slate-500",children:"暂无Service数据"})}):k.map(t=>e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:428:21",className:"hover:bg-slate-800/50",children:[e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:429:23",className:"px-4 py-3 text-sm text-slate-200",children:t.name}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:430:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:431:25",variant:"outline",className:"border-slate-700 text-slate-400",children:t.namespace})}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:435:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:436:25",variant:"outline",className:t.type==="ClusterIP"?"border-blue-500/30 text-blue-400 bg-blue-500/10":t.type==="NodePort"?"border-purple-500/30 text-purple-400 bg-purple-500/10":"border-emerald-500/30 text-emerald-400 bg-emerald-500/10",children:t.type})}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:449:23",className:"px-4 py-3 text-sm text-slate-300",children:t.cluster_ip??t.clusterIP}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:450:23",className:"px-4 py-3 text-sm text-slate-300",children:t.ports}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:451:23",className:"px-4 py-3 text-sm text-slate-400",children:t.selector})]},t.id||t.name))})]})})}),e.jsx(A,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:460:11",value:"ingresses",className:"mt-4",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:461:13",className:"border rounded-lg border-slate-700 overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:462:15",className:"w-full",children:[e.jsx("thead",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:463:17",className:"bg-slate-800",children:e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:464:19",children:[e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:465:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"名称"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:466:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"命名空间"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:467:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"Hosts"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:468:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"后端服务"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:469:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"TLS"})]})}),e.jsx("tbody",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:472:17",className:"divide-y divide-slate-800",children:b.length===0?e.jsx("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:474:21",children:e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:475:23",colSpan:5,className:"px-4 py-8 text-center text-slate-500",children:"暂无Ingress数据"})}):b.map(t=>e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:479:21",className:"hover:bg-slate-800/50",children:[e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:480:23",className:"px-4 py-3 text-sm text-slate-200",children:t.name}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:481:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:482:25",variant:"outline",className:"border-slate-700 text-slate-400",children:t.namespace})}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:486:23",className:"px-4 py-3 text-sm text-slate-300",children:t.hosts}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:487:23",className:"px-4 py-3 text-sm text-slate-300",children:t.backend}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:488:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:489:25",variant:"outline",className:t.tls?"border-emerald-500/30 text-emerald-400 bg-emerald-500/10":"border-slate-700 text-slate-400",children:t.tls?"已启用":"未启用"})})]},t.id||t.name))})]})})}),e.jsx(A,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:508:11",value:"events",className:"mt-4",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:509:13",className:"space-y-2",children:[{type:"Normal",reason:"Started",message:"Started container nginx",time:"2分钟前"},{type:"Normal",reason:"Created",message:"Created pod nginx-deployment-xxx",time:"5分钟前"},{type:"Warning",reason:"FailedScheduling",message:"0/3 nodes are available",time:"10分钟前"},{type:"Normal",reason:"Pulling",message:'Pulling image "nginx:latest"',time:"15分钟前"},{type:"Normal",reason:"Pulled",message:"Successfully pulled image",time:"12分钟前"}].map((t,u)=>e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:517:17",className:"flex items-center gap-3 p-3 rounded-lg bg-slate-800/50",children:[e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:521:19",variant:"outline",className:t.type==="Normal"?"border-emerald-500/30 text-emerald-400 bg-emerald-500/10":"border-amber-500/30 text-amber-400 bg-amber-500/10",children:t.type}),e.jsx("span",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:531:19",className:"text-sm font-medium text-slate-300 min-w-[120px]",children:t.reason}),e.jsx("span",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:532:19",className:"text-sm text-slate-400 flex-1",children:t.message}),e.jsx("span",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:533:19",className:"text-xs text-slate-500",children:t.time})]},u))})})]})})]})}var J="Radio",[ht,ge]=le(J),[gt,Ct]=ht(J),Ce=r.forwardRef((a,p)=>{const{__scopeRadio:n,name:g,checked:s=!1,required:l,disabled:x,value:j="on",onCheck:k,form:C,...b}=a,[f,h]=r.useState(null),m=Y(p,u=>h(u)),d=r.useRef(!1),t=f?C||!!f.closest("form"):!0;return e.jsxs(gt,{scope:n,checked:s,disabled:x,children:[e.jsx(q.button,{type:"button",role:"radio","aria-checked":s,"data-state":Ke(s),"data-disabled":x?"":void 0,disabled:x,value:j,...b,ref:m,onClick:X(a.onClick,u=>{s||k?.(),t&&(d.current=u.isPropagationStopped(),d.current||u.stopPropagation())})}),t&&e.jsx(je,{control:f,bubbles:!d.current,name:g,value:j,checked:s,required:l,disabled:x,form:C,style:{transform:"translateX(-100%)"}})]})});Ce.displayName=J;var ke="RadioIndicator",fe=r.forwardRef((a,p)=>{const{__scopeRadio:n,forceMount:g,...s}=a,l=Ct(ke,n);return e.jsx(Ae,{present:g||l.checked,children:e.jsx(q.span,{"data-state":Ke(l.checked),"data-disabled":l.disabled?"":void 0,...s,ref:p})})});fe.displayName=ke;var kt="RadioBubbleInput",je=r.forwardRef(({__scopeRadio:a,control:p,checked:n,bubbles:g=!0,...s},l)=>{const x=r.useRef(null),j=Y(x,l),k=xt(n),C=Ie(p);return r.useEffect(()=>{const b=x.current;if(!b)return;const f=window.HTMLInputElement.prototype,m=Object.getOwnPropertyDescriptor(f,"checked").set;if(k!==n&&m){const d=new Event("click",{bubbles:g});m.call(b,n),b.dispatchEvent(d)}},[k,n,g]),e.jsx(q.input,{type:"radio","aria-hidden":!0,defaultChecked:n,...s,tabIndex:-1,ref:j,style:{...s.style,...C,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});je.displayName=kt;function Ke(a){return a?"checked":"unchecked"}var ft=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],H="RadioGroup",[jt]=le(H,[oe,ge]),ve=oe(),Ne=ge(),[Kt,vt]=jt(H),De=r.forwardRef((a,p)=>{const{__scopeRadioGroup:n,name:g,defaultValue:s,value:l,required:x=!1,disabled:j=!1,orientation:k,dir:C,loop:b=!0,onValueChange:f,...h}=a,m=ve(n),d=Pe(C),[t,u]=Te({prop:l,defaultProp:s??null,onChange:f,caller:H});return e.jsx(Kt,{scope:n,name:g,required:x,disabled:j,value:t,onValueChange:u,children:e.jsx(Me,{asChild:!0,...m,orientation:k,dir:d,loop:b,children:e.jsx(q.div,{role:"radiogroup","aria-required":x,"aria-orientation":k,"data-disabled":j?"":void 0,dir:d,...h,ref:p})})})});De.displayName=H;var ye="RadioGroupItem",we=r.forwardRef((a,p)=>{const{__scopeRadioGroup:n,disabled:g,...s}=a,l=vt(ye,n),x=l.disabled||g,j=ve(n),k=Ne(n),C=r.useRef(null),b=Y(p,C),f=l.value===s.value,h=r.useRef(!1);return r.useEffect(()=>{const m=t=>{ft.includes(t.key)&&(h.current=!0)},d=()=>h.current=!1;return document.addEventListener("keydown",m),document.addEventListener("keyup",d),()=>{document.removeEventListener("keydown",m),document.removeEventListener("keyup",d)}},[]),e.jsx(Ee,{asChild:!0,...j,focusable:!x,active:f,children:e.jsx(Ce,{disabled:x,required:l.required,checked:f,...k,...s,name:l.name,ref:b,onCheck:()=>l.onValueChange(s.value),onKeyDown:X(m=>{m.key==="Enter"&&m.preventDefault()}),onFocus:X(s.onFocus,()=>{h.current&&C.current?.click()})})})});we.displayName=ye;var Nt="RadioGroupIndicator",Se=r.forwardRef((a,p)=>{const{__scopeRadioGroup:n,...g}=a,s=Ne(n);return e.jsx(fe,{...s,...g,ref:p})});Se.displayName=Nt;var Dt=De,yt=we,wt=Se;function St({className:a,...p}){return e.jsx(Dt,{"code-path":"src/components/ui/radio-group.tsx:14:5","data-slot":"radio-group",className:M("grid gap-3",a),...p})}function ne({className:a,...p}){return e.jsx(yt,{"code-path":"src/components/ui/radio-group.tsx:27:5","data-slot":"radio-group-item",className:M("border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",a),...p,children:e.jsx(wt,{"code-path":"src/components/ui/radio-group.tsx:35:7","data-slot":"radio-group-indicator",className:"relative flex items-center justify-center",children:e.jsx(Ve,{"code-path":"src/components/ui/radio-group.tsx:39:9",className:"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2"})})})}const ae=/^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?$/,ce={name:"",version:"",description:"",config_type:1,api_server:"",token:"",kube_config:""};function _t({open:a,onOpenChange:p,editingCluster:n,onSaved:g}){const[s,l]=r.useState({...ce}),[x,j]=r.useState(!1),[k,C]=r.useState(!1),[b,f]=r.useState(!1),[h,m]=r.useState("");r.useEffect(()=>{a&&(n&&n.id?w.getClusterDetail(n.id).then(o=>{const i=o||{};C(!!i.has_token),f(!!i.has_kube_config),l({name:i.name||"",version:i.version||"",description:i.description||"",config_type:Number(i.config_type??1),api_server:i.api_server||"",token:"",kube_config:""}),m("")}).catch(()=>{l({name:n.name||"",version:n.version||"",description:n.description||"",config_type:Number(n.config_type??1),api_server:n.api_server||"",token:"",kube_config:""}),m("")}):(C(!1),f(!1),l({...ce}),m("")))},[a,n]);const d=o=>{l({...s,name:o}),o.trim()?ae.test(o)?m(""):m("只允许英文、数字和连字符(-),首尾不能是连字符"):m("")},t=o=>{const i=o.match(/^\s*server:\s*(\S+)\s*$/m);return i?i[1]:""},u=o=>{const i=t(o);l(N=>({...N,kube_config:o,api_server:i||N.api_server}))},v=async()=>{if(!s.name.trim()||!ae.test(s.name.trim())){I.error("请输入有效的集群名称(英文/数字/连字符)");return}try{j(!0);const o={name:s.name.trim(),code:s.name.trim(),version:s.version,description:s.description,config_type:s.config_type,api_server:s.api_server,token:s.config_type===0?s.token:"",kube_config:s.config_type===1?s.kube_config:""};n?await w.updateCluster(n.id,o):await w.createCluster(o),p(!1),g()}catch(o){console.error("保存集群失败:",o)}finally{j(!1)}},K=x||!s.name.trim()||!!h;return e.jsx(ue,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:143:5",open:a,onOpenChange:p,children:e.jsxs(de,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:144:7",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] max-w-2xl",children:[e.jsxs(Fe,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:145:9",children:[e.jsx(ie,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:146:11",className:"text-[var(--dg-text-primary)]",children:n?"编辑集群":"添加集群"}),e.jsx(xe,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:149:11",className:"text-[var(--dg-text-secondary)]",children:n?"修改集群接入配置":"配置新的 Kubernetes 集群接入信息"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:153:9",className:"space-y-4 py-2 max-h-[60vh] overflow-y-auto pr-1",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:154:11",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:155:13",className:"space-y-2",children:[e.jsx(P,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:156:15",className:"text-[var(--dg-text-secondary)]",children:"集群名称"}),e.jsx(z,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:157:15",value:s.name,onChange:o=>d(o.target.value),placeholder:"如: prod-cluster",className:`bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)] ${h?"border-red-500":""}`}),h&&e.jsx("p",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:163:29",className:"text-xs text-red-400",children:h}),e.jsx("p",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:164:15",className:"text-xs text-[var(--dg-text-muted)]",children:"只允许英文、数字和连字符(-),首尾不能是连字符。名称将作为集群唯一标识。"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:168:13",className:"space-y-2",children:[e.jsx(P,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:169:15",className:"text-[var(--dg-text-secondary)]",children:"版本(可选)"}),e.jsx(z,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:170:15",value:s.version,onChange:o=>l({...s,version:o.target.value}),placeholder:"如: 1.28.0",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)]"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:179:11",className:"space-y-2",children:[e.jsx(P,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:180:13",className:"text-[var(--dg-text-secondary)]",children:"描述"}),e.jsx(z,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:181:13",value:s.description,onChange:o=>l({...s,description:o.target.value}),placeholder:"集群用途描述",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:189:11",className:"space-y-2",children:[e.jsx(P,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:190:13",className:"text-[var(--dg-text-secondary)]",children:"接入方式"}),e.jsxs(St,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:191:13",value:String(s.config_type),onValueChange:o=>l({...s,config_type:Number(o)}),className:"flex gap-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:196:15",className:"flex items-center gap-2 px-3 py-2 rounded-md border border-[var(--dg-border)] cursor-pointer hover:bg-[var(--dg-bg-hover)]",children:[e.jsx(ne,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:197:17",value:"0",id:"ct-0"}),e.jsx(P,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:198:17",htmlFor:"ct-0",className:"cursor-pointer text-[var(--dg-text-primary)] font-normal",children:"Token"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:200:15",className:"flex items-center gap-2 px-3 py-2 rounded-md border border-[var(--dg-border)] cursor-pointer hover:bg-[var(--dg-bg-hover)]",children:[e.jsx(ne,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:201:17",value:"1",id:"ct-1"}),e.jsx(P,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:202:17",htmlFor:"ct-1",className:"cursor-pointer text-[var(--dg-text-primary)] font-normal",children:"Kubeconfig"})]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:207:11",className:"space-y-2",children:[e.jsx(P,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:208:13",className:"text-[var(--dg-text-secondary)]",children:"API Server"}),e.jsx(z,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:209:13",value:s.api_server,onChange:o=>l({...s,api_server:o.target.value}),placeholder:"https://10.0.0.1:6443",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)]"})]}),s.config_type===0?e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:218:13",className:"space-y-2",children:[e.jsxs(P,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:219:15",className:"text-[var(--dg-text-secondary)]",children:["Token ",k&&e.jsx("span",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:220:36",className:"text-emerald-400 text-xs ml-1",children:"✓ 已配置(留空不修改)"})]}),e.jsx(re,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:222:15",value:s.token,onChange:o=>l({...s,token:o.target.value}),placeholder:k?"已配置,输入新值覆盖...":"粘贴 Service Account Token...",rows:4,className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)] font-mono text-xs"})]}):e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:231:13",className:"space-y-2",children:[e.jsxs(P,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:232:15",className:"text-[var(--dg-text-secondary)]",children:["Kubeconfig ",b&&e.jsx("span",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:233:46",className:"text-emerald-400 text-xs ml-1",children:"✓ 已配置(留空不修改)"})]}),e.jsx(re,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:235:15",value:s.kube_config,onChange:o=>u(o.target.value),placeholder:b?"已配置,输入新值覆盖...":`apiVersion: v1
|
|
kind: Config
|
|
clusters:
|
|
- cluster:
|
|
server: https://10.0.0.1:6443
|
|
...`,rows:10,className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)] font-mono text-xs"}),!b&&e.jsx("p",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:243:17",className:"text-xs text-[var(--dg-text-muted)]",children:"粘贴 kubeconfig 内容后将自动解析 API Server 地址"})]})]}),e.jsxs(Ge,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:250:9",children:[e.jsx(T,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:251:11",variant:"outline",onClick:()=>{p(!1)},className:"border-[var(--dg-border)] text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)] hover:bg-[var(--dg-bg-hover)]",children:"取消"}),e.jsx(T,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:258:11",onClick:v,disabled:K,className:"bg-[var(--dg-blue)] hover:opacity-90 text-white",children:x?"保存中...":n?"保存":"添加"})]})]})})}function Rt({open:a,onOpenChange:p,clusterId:n,clusterName:g}){const s=r.useRef(null),l=r.useRef(null),x=r.useRef(null),j=r.useRef(null),[k,C]=r.useState(!1),[b,f]=r.useState(!1),[h,m]=r.useState("");return r.useEffect(()=>{a||f(!1)},[a]),r.useEffect(()=>{if(!a||!n)return;const d=new pt.Terminal({cursorBlink:!0,fontSize:14,fontFamily:'Menlo, Monaco, "Courier New", monospace',allowProposedApi:!0,theme:{background:"#0f172a",foreground:"#e2e8f0",cursor:"#38bdf8",selectionBackground:"#1e40af",black:"#1e293b",red:"#ef4444",green:"#10b981",yellow:"#f59e0b",blue:"#3b82f6",magenta:"#a855f7",cyan:"#06b6d4",white:"#e2e8f0",brightBlack:"#475569",brightRed:"#f87171",brightGreen:"#34d399",brightYellow:"#fbbf24",brightBlue:"#60a5fa",brightMagenta:"#c084fc",brightCyan:"#22d3ee",brightWhite:"#f8fafc"}}),t=new mt.FitAddon;d.loadAddon(t),l.current=d,j.current=t;const v=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}`,K=Le.getState().token||"",o=`${v.replace(/^http/,"ws").replace("/api/v1","")}/ws/kubectl?token=${encodeURIComponent(K)}&id=${n}`,i=new WebSocket(o);return x.current=i,d.onData(N=>{i.readyState===WebSocket.OPEN&&i.send(JSON.stringify({status:0,data:N}))}),i.onmessage=N=>{try{const S=JSON.parse(N.data);S.status===0&&typeof S.data=="string"&&d.write(S.data)}catch{typeof N.data=="string"&&d.write(N.data)}},i.onopen=()=>{C(!0),m(""),s.current&&(d.open(s.current),requestAnimationFrame(()=>{try{t.fit()}catch{}}),setTimeout(()=>{try{d.focus()}catch{}},150))},i.onclose=()=>{C(!1),d.write(`\r
|
|
\x1B[31m[连接已断开]\x1B[0m\r
|
|
`)},i.onerror=()=>{m("WebSocket 连接失败"),d.write(`\r
|
|
\x1B[31m[连接发生错误]\x1B[0m\r
|
|
`)},()=>{try{(i.readyState===WebSocket.OPEN||i.readyState===WebSocket.CONNECTING)&&i.close(),d.dispose()}catch{}l.current=null,x.current=null,C(!1)}},[a,n]),r.useEffect(()=>{if(!a)return;const d=s.current;if(!d)return;let t;const u=new ResizeObserver(()=>{clearTimeout(t),t=setTimeout(()=>{if(j.current&&l.current&&x.current)try{j.current.fit(),l.current.focus();const{cols:v,rows:K}=l.current;x.current.readyState===WebSocket.OPEN&&x.current.send(JSON.stringify({status:1,cols:v,rows:K}))}catch{}},60)});return u.observe(d),()=>{clearTimeout(t),u.disconnect()}},[a]),e.jsx(ue,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:161:5",open:a,onOpenChange:p,children:e.jsxs(de,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:162:7",showCloseButton:!1,onOpenAutoFocus:d=>d.preventDefault(),className:M("bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] p-0 gap-0","!duration-0 !transition-none",b?"!max-w-none !w-screen !h-screen !rounded-none !translate-x-0 !translate-y-0 !left-0 !top-0":""),style:b?{maxWidth:"100vw",width:"100vw",height:"100vh"}:{maxWidth:"900px",width:"90vw"},children:[e.jsxs(ie,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:174:9",className:"sr-only",children:["kubectl — ",g]}),e.jsx(xe,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:175:9",className:"sr-only",children:"Kubernetes 集群命令行终端"}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:178:9",className:"flex items-center justify-between px-4 py-2 border-b border-[var(--dg-border)]",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:179:11",className:"flex items-center gap-2 text-sm",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:180:13",className:M("w-2 h-2 rounded-full",k?"bg-emerald-400":h?"bg-red-400":"bg-yellow-400")}),e.jsx(qe,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:181:13",className:"h-4 w-4 text-blue-400"}),e.jsxs("span",{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:182:13",className:"text-[var(--dg-text-primary)] font-medium",children:["kubectl — ",g]}),!k&&!h&&e.jsx(he,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:183:38",className:"h-3 w-3 animate-spin text-[var(--dg-text-muted)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:185:11",className:"flex items-center gap-1",children:[e.jsx("button",{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:186:13",onClick:()=>f(!b),className:"p-1.5 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-secondary)]",children:b?e.jsx(He,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:190:29",className:"h-4 w-4"}):e.jsx(Xe,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:190:65",className:"h-4 w-4"})}),e.jsx("button",{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:192:13",onClick:()=>p(!1),className:"p-1.5 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-secondary)]",children:e.jsx(Ye,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:196:15",className:"h-4 w-4"})})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:202:9",ref:s,className:"bg-[#0f172a]",style:{height:b?"calc(100vh - 49px)":"480px"}})]})})}function Wt(){const[a,p]=r.useState([]),[n,g]=r.useState(!0),[s,l]=r.useState(null),[x,j]=r.useState(""),[k,C]=r.useState(!1),[b,f]=r.useState(null),[h,m]=r.useState(null),[d,t]=r.useState(!1),[u,v]=r.useState(null),[K,o]=r.useState(!1),i=async()=>{try{g(!0);const c=await w.getClusters();p(c?.list||[])}catch(c){console.error("加载集群列表失败:",c),p([])}finally{g(!1)}};r.useEffect(()=>{i()},[]);const[,N]=r.useState(null),S=()=>{i().then(()=>{b||setTimeout(async()=>{const D=(await w.getClusters())?.list||[];D.length>0&&B(D[D.length-1].id,!0)},500)})},O=async c=>{try{await w.deleteCluster(c),i()}catch(D){console.error("删除集群失败:",D)}},B=async(c,D)=>{try{D||I.info("正在同步集群资源...");const R=await w.syncCluster(c);D||I.success(R?.message||"同步完成"),i()}catch(R){D||I.error(R?.message||"同步失败")}},U=async()=>{if(!u)return;const c=u.code||String(u.id);try{o(!0),I.info(`正在导出 ${u.name} 所有命名空间的资源...`),await w.exportAllResources(c),I.success("导出完成,已开始下载"),v(null)}catch(D){I.error(D?.message||"导出失败")}finally{o(!1)}},Q=a.filter(c=>(c.name||"").toLowerCase().includes(x.toLowerCase())||(c.version||"").includes(x)),_e=c=>{switch(c){case"healthy":return e.jsxs(y,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:137:11",variant:"outline",className:"border-emerald-500/30 text-emerald-400 bg-emerald-500/10",children:[e.jsx(at,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:138:13",className:"h-3 w-3 mr-1"}),"健康"]});case"warning":return e.jsxs(y,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:144:11",variant:"outline",className:"border-amber-500/30 text-amber-400 bg-amber-500/10",children:[e.jsx(nt,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:145:13",className:"h-3 w-3 mr-1"}),"警告"]});case"error":return e.jsxs(y,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:151:11",variant:"outline",className:"border-red-500/30 text-red-400 bg-red-500/10",children:[e.jsx(be,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:152:13",className:"h-3 w-3 mr-1"}),"异常"]});default:return null}},Z=s?a.find(c=>c.id===s):null;return e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:164:5",className:"space-y-6",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:166:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:167:9",children:[e.jsx("h1",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:168:11",className:"text-2xl font-bold text-slate-100",children:"集群列表"}),e.jsx("p",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:169:11",className:"text-sm text-slate-500 mt-1",children:"管理Kubernetes集群资源"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:171:9",className:"flex items-center gap-2",children:[e.jsxs(T,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:172:11",variant:"outline",className:"border-slate-700 text-slate-300 hover:text-slate-100 hover:bg-slate-800",onClick:i,children:[e.jsx(V,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:177:13",className:M("h-4 w-4 mr-2",n&&"animate-spin")}),"刷新"]}),e.jsxs(T,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:180:11",className:"bg-blue-600 hover:bg-blue-700 text-white",onClick:()=>{f(null),C(!0)},children:[e.jsx(Je,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:181:13",className:"h-4 w-4 mr-2"}),"添加集群"]})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:188:7",className:"flex items-center gap-3",children:e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:189:9",className:"relative w-80",children:[e.jsx(Qe,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:190:11",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-500"}),e.jsx(z,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:191:11",placeholder:"搜索集群名称或版本...",value:x,onChange:c=>j(c.target.value),className:"pl-9 h-9 bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-500"})]})}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:201:7",className:"grid grid-cols-1 lg:grid-cols-2 xl:grid-cols-3 gap-4",children:n?e.jsx(G,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:203:11",className:"bg-slate-900 border-slate-800 col-span-full",children:e.jsxs(L,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:204:13",className:"p-12 text-center text-slate-500",children:[e.jsx(V,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:205:15",className:"h-6 w-6 animate-spin mx-auto mb-3"}),"加载中..."]})}):Q.length===0?e.jsx(G,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:210:11",className:"bg-slate-900 border-slate-800 col-span-full",children:e.jsx(L,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:211:13",className:"p-12 text-center text-slate-500",children:"暂无集群数据"})}):Q.map(c=>{const D=Number(c.cpu_usage||0),R=Number(c.memory_usage||0),Re=D>0||R>0;return e.jsxs(G,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:219:15",className:M("bg-slate-900 border-slate-800 cursor-pointer transition-all",s===c.id?"border-blue-500 ring-1 ring-blue-500/30":"hover:border-slate-700"),onClick:()=>l(c.id),children:[e.jsx(W,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:229:17",className:"pb-3",children:e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:230:19",className:"flex items-start justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:231:21",className:"flex items-center gap-3",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:232:23",className:"w-10 h-10 rounded-lg bg-blue-500/10 flex items-center justify-center",children:e.jsx(me,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:233:25",className:"h-5 w-5 text-blue-400"})}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:235:23",children:[e.jsx($,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:236:25",className:"text-base text-slate-100",children:c.name}),e.jsx(pe,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:237:25",className:"text-slate-500",children:c.version})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:240:21",className:"flex items-center gap-1",children:[_e(c.status),e.jsxs(Oe,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:242:23",children:[e.jsx(ze,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:243:25",asChild:!0,children:e.jsx(T,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:244:27",variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-slate-100",onClick:_=>_.stopPropagation(),children:e.jsx(Ze,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:250:29",className:"h-4 w-4"})})}),e.jsxs(Be,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:253:25",align:"end",className:"w-48 bg-slate-800 border-slate-700",children:[e.jsx(Ue,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:254:27",className:"text-slate-300",children:"操作"}),e.jsx(ee,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:255:27",className:"bg-slate-700"}),e.jsxs(F,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:256:27",className:"text-slate-300 focus:bg-slate-700 focus:text-slate-100",children:[e.jsx(et,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:257:29",className:"h-4 w-4 mr-2"}),"查看详情"]}),e.jsxs(F,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:260:27",className:"text-slate-300 focus:bg-slate-700 focus:text-slate-100",onClick:_=>{_.stopPropagation(),f(c),C(!0)},children:[e.jsx(tt,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:268:29",className:"h-4 w-4 mr-2"}),"配置"]}),e.jsxs(F,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:271:27",className:"text-cyan-400 focus:bg-slate-700 focus:text-cyan-300",onClick:_=>{_.stopPropagation(),B(c.id)},children:[e.jsx(V,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:278:29",className:"h-4 w-4 mr-2"}),"同步"]}),e.jsxs(F,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:281:27",className:"text-emerald-400 focus:bg-slate-700 focus:text-emerald-300",onClick:_=>{_.stopPropagation(),m({id:c.id,name:c.name}),t(!0)},children:[e.jsx(st,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:289:29",className:"h-4 w-4 mr-2"}),"kubectl"]}),e.jsxs(F,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:292:27",className:"text-blue-400 focus:bg-slate-700 focus:text-blue-300",onClick:_=>{_.stopPropagation(),v(c)},children:[e.jsx(te,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:299:29",className:"h-4 w-4 mr-2"}),"导出资源"]}),e.jsx(ee,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:302:27",className:"bg-slate-700"}),e.jsxs(F,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:303:27",className:"text-red-400 focus:bg-slate-700 focus:text-red-400",onClick:_=>{_.stopPropagation(),O(c.id)},children:[e.jsx(rt,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:310:29",className:"h-4 w-4 mr-2"}),"删除"]})]})]})]})]})}),e.jsxs(L,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:318:17",className:"pt-0",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:319:19",className:"grid grid-cols-4 gap-2 mb-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:320:21",className:"text-center p-2 rounded-lg bg-slate-800/50",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:321:23",className:"text-lg font-semibold text-slate-200",children:c.ingress_count||0}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:322:23",className:"text-xs text-slate-500",children:"Ingress"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:324:21",className:"text-center p-2 rounded-lg bg-slate-800/50",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:325:23",className:"text-lg font-semibold text-slate-200",children:c.service_count||0}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:326:23",className:"text-xs text-slate-500",children:"SVC"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:328:21",className:"text-center p-2 rounded-lg bg-slate-800/50",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:329:23",className:"text-lg font-semibold text-slate-200",children:c.deployment_count||0}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:330:23",className:"text-xs text-slate-500",children:"Deployment"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:332:21",className:"text-center p-2 rounded-lg bg-slate-800/50",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:333:23",className:"text-lg font-semibold text-slate-200",children:c.pod_count||0}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:334:23",className:"text-xs text-slate-500",children:"Pod"})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:337:19",className:"space-y-2",children:Re?e.jsxs(e.Fragment,{children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:340:25",className:"flex items-center gap-2",children:[e.jsx("span",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:341:27",className:"text-xs text-slate-500 w-10",children:"CPU"}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:342:27",className:"flex-1 h-1.5 bg-slate-800 rounded-full overflow-hidden",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:343:29",className:M("h-full rounded-full",D>80?"bg-red-400":D>60?"bg-amber-400":"bg-emerald-400"),style:{width:`${Math.min(D,100)}%`}})}),e.jsxs("span",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:351:27",className:"text-xs text-slate-400 w-10 text-right",children:[D.toFixed(1),"%"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:353:25",className:"flex items-center gap-2",children:[e.jsx("span",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:354:27",className:"text-xs text-slate-500 w-10",children:"内存"}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:355:27",className:"flex-1 h-1.5 bg-slate-800 rounded-full overflow-hidden",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:356:29",className:M("h-full rounded-full",R>80?"bg-red-400":R>60?"bg-amber-400":"bg-emerald-400"),style:{width:`${Math.min(R,100)}%`}})}),e.jsxs("span",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:364:27",className:"text-xs text-slate-400 w-10 text-right",children:[R.toFixed(1),"%"]})]})]}):e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:368:23",className:"text-xs text-slate-600 text-center",children:["Ingress ",c.ingress_count||0," · SVC ",c.service_count||0," · Deployment ",c.deployment_count||0," · Pod ",c.pod_count||0," · 资源使用率待采集"]})})]})]},c.id)})}),Z&&e.jsx(bt,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:382:9",cluster:Z,onClose:()=>l(null)}),e.jsx(_t,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:386:7",open:k,onOpenChange:C,editingCluster:b,onSaved:S}),h&&e.jsx(Rt,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:395:9",open:d,onOpenChange:c=>{t(c),c||m(null)},clusterId:h.id,clusterName:h.name}),u&&e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:408:9",className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:()=>{K||v(null)},children:e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:412:11",className:"bg-slate-900 border border-slate-700 rounded-lg p-5 w-[420px] shadow-xl",onClick:c=>c.stopPropagation(),children:[e.jsx("h3",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:413:13",className:"text-base font-semibold text-slate-100 mb-1",children:"导出集群资源"}),K?e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:415:15",className:"flex flex-col items-center py-6 gap-3",children:[e.jsx(he,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:416:17",className:"h-9 w-9 animate-spin text-blue-400"}),e.jsxs("p",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:417:17",className:"text-sm text-slate-200",children:["正在导出 ",u.name]}),e.jsxs("p",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:418:17",className:"text-xs text-slate-500 text-center leading-relaxed px-2",children:["正在拉取所有命名空间的 Deployment、Service、Ingress、ConfigMap、Secret 并打包为 tar.gz",e.jsx("br",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:420:19"}),"资源较多时可能需要 1~3 分钟,请稍候勿关闭页面"]})]}):e.jsxs(e.Fragment,{children:[e.jsxs("p",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:426:17",className:"text-xs text-slate-400 mb-4 leading-relaxed",children:["导出 ",e.jsx("span",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:427:22",className:"text-slate-300",children:u.name})," 所有命名空间的 Deployment、Service、Ingress、ConfigMap、Secret 为 tar.gz"]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:430:17",className:"flex justify-end gap-2",children:[e.jsx(T,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:431:19",variant:"outline",className:"border-slate-700 text-slate-300",onClick:()=>v(null),children:"取消"}),e.jsxs(T,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:432:19",className:"bg-blue-600 hover:bg-blue-700 text-white",onClick:U,children:[e.jsx(te,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:433:21",className:"h-4 w-4 mr-1.5"}),"确认导出"]})]})]})]})})]})}export{Wt as KubernetesClusters};
|