P1: kubernetes/system API 拆为子目录模块,导出工具下沉到 lib/export-utils,
http 统一 buildApiUrl/getWsBase;HostMonitor、DeploymentEdit* 拆至子组件。
P2: 新增 hooks/api(queryKeys、useTerminalSessions、useHostMonitor),
TerminalSessionsTab 与 HostMonitor 接入 TanStack Query。
P3: 保留 services/api 路径,未迁移至 api/ 目录。
25 lines
901 B
TypeScript
25 lines
901 B
TypeScript
// 客户端导出工具 — CSV / JSON 下载 // Logan.Li
|
|
|
|
export function exportAsCSV(filename: string, data: Record<string, unknown>[]): void {
|
|
if (data.length === 0) return;
|
|
const headers = Object.keys(data[0]);
|
|
const csv = [
|
|
headers.join(','),
|
|
...data.map((row) => headers.map((h) => JSON.stringify(row[h] ?? '')).join(',')),
|
|
].join('\n');
|
|
const blob = new Blob(['\ufeff' + csv], { type: 'text/csv;charset=utf-8;' });
|
|
const a = document.createElement('a');
|
|
a.href = URL.createObjectURL(blob);
|
|
a.download = filename;
|
|
a.click();
|
|
URL.revokeObjectURL(a.href);
|
|
}
|
|
|
|
export function exportAsJSON(filename: string, data: unknown[]): void {
|
|
const blob = new Blob([JSON.stringify(data, null, 2)], { type: 'application/json' });
|
|
const a = document.createElement('a');
|
|
a.href = URL.createObjectURL(blob);
|
|
a.download = filename;
|
|
a.click();
|
|
URL.revokeObjectURL(a.href);
|
|
} |