feat(k8s-ui): 重写 K8s 前端 — Deployment 详情页/HPA/CronJob/操作按钮
api.ts 改造: - 修复 scaleDeployment/restartDeployment/deletePod 死桩 → 真实后端 API - 新增: getPodLogs/execPod/updateDeploymentImage (CI webhook) - 新增: getHPAs/createHPA/deleteHPA (HPA 管理) - 新增: getCronJobs/createCronJob/suspendCronJob/triggerCronJob/deleteCronJob - 新增: getNamespaces DeploymentDetail 新组件: - 副本状态卡片 (Ready/Total/Available) - 副本加减按钮 (scale control) - 滚动重启按钮 - 镜像更新表单 (CI webhook inline) - Pod 列表 (按 deployment 名前缀过滤) - Pod 日志查看器 (tail/container 参数) - HPA 管理选项卡 (列表+删除) - 创建 HPA 弹窗 (CPU/内存指标配置) K8sWorkloads 增强: - Deployment 表添加「操作」列(副本加减 + 查看详情) - 点击 Deployment 行 → 跳转 DeploymentDetail 详情页 - handleQuickScale 快速扩缩容 新增 useToast hook (轻量级 toast 通知)
This commit is contained in:
1 parent
abf2917fad
commit
1a913549fc
4 files changed
+714
-10
No files matched your search
@@ -0,0 +1,33 @@
|
||||
import { useState, useCallback } from 'react';
|
||||
|
||||
interface Toast {
|
||||
id: string;
|
||||
title: string;
|
||||
description?: string;
|
||||
variant?: 'default' | 'destructive';
|
||||
}
|
||||
|
||||
interface UseToastReturn {
|
||||
toast: (opts: { title: string; description?: string; variant?: 'default' | 'destructive' }) => void;
|
||||
toasts: Toast[];
|
||||
dismiss: (id: string) => void;
|
||||
}
|
||||
|
||||
export function useToast(): UseToastReturn {
|
||||
const [toasts, setToasts] = useState<Toast[]>([]);
|
||||
|
||||
const toast = useCallback((opts: { title: string; description?: string; variant?: 'default' | 'destructive' }) => {
|
||||
const id = Math.random().toString(36).slice(2);
|
||||
const t: Toast = { id, ...opts };
|
||||
setToasts((prev) => [...prev, t]);
|
||||
setTimeout(() => {
|
||||
setToasts((prev) => prev.filter((x) => x.id !== id));
|
||||
}, 4000);
|
||||
}, []);
|
||||
|
||||
const dismiss = useCallback((id: string) => {
|
||||
setToasts((prev) => prev.filter((t) => t.id !== id));
|
||||
}, []);
|
||||
|
||||
return { toast, toasts, dismiss };
|
||||
}
|
||||
Reference in new issue
Block a user