diff --git a/web/src/locales/en-US.js b/web/src/locales/en-US.js index eb5bea91..8bde6bbe 100644 --- a/web/src/locales/en-US.js +++ b/web/src/locales/en-US.js @@ -121,6 +121,10 @@ export default { "form.button.verify": "Verify", "form.button.clean": "Clean", "form.button.clean.confim.desc": "Are you sure to clean data that is {status}?", + "form.button.clean.unavailable.nodes": "Clean unavailable nodes", + "form.button.clean.unavailable.nodes.desc": "Are you sure to clean nodes that are unavailable within seven days?", + "form.button.clean.deleted.indices": "Clean deleted indices", + "form.button.clean.deleted.indices.desc": "Are you sure to clean indices that are deleted?", "component.refreshGroup.label.title": "Auto Refresh", "component.refreshGroup.label.every": "Every", diff --git a/web/src/locales/zh-CN.js b/web/src/locales/zh-CN.js index bf3f6752..895cb22b 100644 --- a/web/src/locales/zh-CN.js +++ b/web/src/locales/zh-CN.js @@ -126,6 +126,10 @@ export default { "form.button.verify": "校验", "form.button.clean": "清除", "form.button.clean.confim.desc": "确定删除状态为 {status} 的数据吗?", + "form.button.clean.unavailable.nodes": "清除不可用节点", + "form.button.clean.unavailable.nodes.desc": "确定清除7天内不可用的节点吗?", + "form.button.clean.deleted.indices": "清除已删除索引", + "form.button.clean.deleted.indices.desc": "确定清除已删除的索引吗?", "component.refreshGroup.label.title": "自动刷新", "component.refreshGroup.label.every": "每隔", diff --git a/web/src/pages/Platform/Overview/Indices/index.tsx b/web/src/pages/Platform/Overview/Indices/index.tsx index ae3449f2..30b3364b 100644 --- a/web/src/pages/Platform/Overview/Indices/index.tsx +++ b/web/src/pages/Platform/Overview/Indices/index.tsx @@ -4,7 +4,6 @@ import Infos from "./Detail/Infos"; import Card from "./Card"; import Table from "./Table"; import Overview from "@/components/Overview"; -import CleanData from "../components/CleanData"; const facetLabels = { "metadata.cluster_name": "cluster", @@ -75,11 +74,6 @@ export default () => { getStatus: (item) => item._source?.metadata?.labels.health_status || "unavailable", }} - headerConfig={{ - getExtra: (props) => [ - , - ], - }} /> ); }; diff --git a/web/src/pages/Platform/Overview/Node/index.tsx b/web/src/pages/Platform/Overview/Node/index.tsx index bd4f1b8f..e3060961 100644 --- a/web/src/pages/Platform/Overview/Node/index.tsx +++ b/web/src/pages/Platform/Overview/Node/index.tsx @@ -5,7 +5,6 @@ import Card from "./Card"; import Table from "./Table"; import Overview from "@/components/Overview"; import Logs from "./Detail/Logs"; -import CleanData from "../components/CleanData"; const facetLabels = { "metadata.cluster_name": "cluster", @@ -85,11 +84,6 @@ export default () => { getStatus: (item) => item._source?.metadata?.labels?.status || "unavailable", }} - headerConfig={{ - getExtra: (props) => [ - , - ], - }} /> ); }; diff --git a/web/src/pages/Platform/Overview/components/CleanData/index.jsx b/web/src/pages/Platform/Overview/components/CleanData/index.jsx deleted file mode 100644 index 94dfd829..00000000 --- a/web/src/pages/Platform/Overview/components/CleanData/index.jsx +++ /dev/null @@ -1,31 +0,0 @@ -import { ESPrefix } from "@/services/common"; -import request from "@/utils/request"; -import { Button, Popconfirm } from "antd" -import { useState } from "react"; -import { formatMessage } from "umi/locale"; - -export default (props) => { - - const { status, type, onSuccess } = props; - const [loading, setLoading] = useState(false) - - const onDelete = async () => { - setLoading(true) - const res = await request(`${ESPrefix}/metadata/${type}`, { - method: 'DELETE' - }) - if (res?.acknowledged) { - if (onSuccess) onSuccess() - } - setLoading(false) - } - - return ( - onDelete()} - > - - - ) -} \ No newline at end of file diff --git a/web/src/pages/System/Cluster/index.jsx b/web/src/pages/System/Cluster/index.jsx index 04cc6f68..a409ae70 100644 --- a/web/src/pages/System/Cluster/index.jsx +++ b/web/src/pages/System/Cluster/index.jsx @@ -18,6 +18,7 @@ import Link from "umi/link"; import request from "@/utils/request"; import { hasAuthority } from "@/utils/authority"; import { useGlobal } from "@/layouts/GlobalContext"; +import { ESPrefix } from "@/services/common"; export default (props) => { const ref = useRef(null); @@ -92,6 +93,32 @@ export default (props) => { }); }, []); + const onClean = async (type) => { + setIsLoading(true) + const res = await request(`${ESPrefix}/metadata/${type}`, { + method: 'DELETE' + }) + if (res?.acknowledged) { + message.success(formatMessage({ id: "app.message.operate.success"})) + } + setIsLoading(false) + } + + const showCleanConfirm = (type) => { + let title + if (type === 'node') { + title = formatMessage({ id: "form.button.clean.unavailable.nodes.desc" }) + } else if (type === 'index') { + title = formatMessage({ id: "form.button.clean.unavailable.indices.desc" }) + } + Modal.confirm({ + title, + onOk() { + onClean(type) + }, + }); + }; + const formatTableData = async (value) => { let dataNew = formatESSearchResult(value); //更新扩展数据 @@ -212,6 +239,12 @@ export default (props) => { render: (text, record) => { const onMenuClick = ({ key }) => { switch (key) { + case "clean_nodes": + showCleanConfirm('node'); + break; + case "clean_indices": + showCleanConfirm('index'); + break; case "delete": showDeleteConfirm(record); break; @@ -233,6 +266,14 @@ export default (props) => { ), }); + menuItems.push({ + key: "clean_nodes", + content: formatMessage({ id: "form.button.clean.unavailable.nodes" }), + }); + menuItems.push({ + key: "clean_indices", + content: formatMessage({ id: "form.button.clean.deleted.indices" }), + }); if (!record.reserved) { menuItems.push({ key: "delete",