diff --git a/docs/content.en/docs/release-notes/_index.md b/docs/content.en/docs/release-notes/_index.md index 934868f7..936ca5df 100644 --- a/docs/content.en/docs/release-notes/_index.md +++ b/docs/content.en/docs/release-notes/_index.md @@ -12,11 +12,14 @@ Information about release notes of INFINI Console is provided here. ### Breaking changes ### Features +- add allocation to activities if is cluster health change and changed to red. ### Bug fix - fix: query thread pool metrics when cluster uuid is empty ### Improvements +- Optimize UI of agent list when its columns are overflow. +- add loading to each row in overview table. ## 1.27.0 (2024-12-09) diff --git a/web/src/pages/Platform/Overview/Cluster/Table/index.jsx b/web/src/pages/Platform/Overview/Cluster/Table/index.jsx index 7ce235f7..69d0c49d 100644 --- a/web/src/pages/Platform/Overview/Cluster/Table/index.jsx +++ b/web/src/pages/Platform/Overview/Cluster/Table/index.jsx @@ -1,5 +1,5 @@ import React, { useState, useEffect, useMemo } from "react"; -import { Table, Tooltip, Progress } from "antd"; +import { Table, Tooltip, Progress, Spin } from "antd"; import { formatter } from "@/utils/format"; import { formatMessage } from "umi/locale"; import { SearchEngineIcon } from "@/lib/search_engines"; @@ -18,36 +18,39 @@ export default (props) => { dataIndex: "name", render: (text, record) => { return ( - - Host: {record.metadata?.host} -
- Provider:{" "} - {formatMessage({ - id: `cluster.providers.${record.metadata?.location - ?.provider ?? Providers.OnPremises}`, - })} -
- Region: {record.metadata?.location?.region ?? ""} -
- Version: {record.metadata?.version ?? ""} -
- Tags:{" "} - {record.metadata?.tags ? record.metadata.tags.toString() : ""} - - } - > -
- - {record.metadata?.name} -
-
+ <> + + Host: {record.metadata?.host} +
+ Provider:{" "} + {formatMessage({ + id: `cluster.providers.${record.metadata?.location + ?.provider ?? Providers.OnPremises}`, + })} +
+ Region: {record.metadata?.location?.region ?? ""} +
+ Version: {record.metadata?.version ?? ""} +
+ Tags:{" "} + {record.metadata?.tags ? record.metadata.tags.toString() : ""} + + } + > +
+ + {record.metadata?.name} +
+
+ + ); }, }, diff --git a/web/src/pages/Platform/Overview/Indices/Table/index.jsx b/web/src/pages/Platform/Overview/Indices/Table/index.jsx index 2e1f777f..d1d31a03 100644 --- a/web/src/pages/Platform/Overview/Indices/Table/index.jsx +++ b/web/src/pages/Platform/Overview/Indices/Table/index.jsx @@ -1,5 +1,5 @@ import React, { useState, useEffect, useMemo } from "react"; -import { Tooltip, Progress, Icon } from "antd"; +import { Tooltip, Progress, Icon, Spin } from "antd"; import { formatter } from "@/utils/format"; import { formatUtcTimeToLocal } from "@/utils/utils"; import { formatMessage } from "umi/locale"; @@ -18,25 +18,28 @@ export default (props) => { dataIndex: "name", render: (text, record) => { return ( - - Cluster: {record.metadata?.cluster_name} -
- Aliases: {record.metadata?.aliases?.join(",")} -
- Timestamp: {record.timestamp} - - } - > -
- - - - {record.metadata?.index_name} -
-
+ <> + + Cluster: {record.metadata?.cluster_name} +
+ Aliases: {record.metadata?.aliases?.join(",")} +
+ Timestamp: {record.timestamp} + + } + > +
+ + + + {record.metadata?.index_name} +
+
+ + ); }, }, diff --git a/web/src/pages/Platform/Overview/Node/Table/index.jsx b/web/src/pages/Platform/Overview/Node/Table/index.jsx index 375a5bf3..5410f3dc 100644 --- a/web/src/pages/Platform/Overview/Node/Table/index.jsx +++ b/web/src/pages/Platform/Overview/Node/Table/index.jsx @@ -1,5 +1,5 @@ import React, { useState, useEffect, useMemo } from "react"; -import { Tooltip, Progress, Icon } from "antd"; +import { Tooltip, Progress, Icon, Spin } from "antd"; import { formatter } from "@/utils/format"; import { HealthStatusView } from "@/components/infini/health_status_view"; import { StatusBlockGroup } from "@/components/infini/status_block"; @@ -15,35 +15,38 @@ export default (props) => { dataIndex: "name", render: (text, record) => { return ( - - Transport Address:{" "} - {record.metadata?.labels?.transport_address} -
- Cluster: {record.metadata?.cluster_name ?? ""} -
- Version: {record.metadata?.labels?.version ?? ""} -
- Roles:{" "} - {record.metadata?.labels?.roles - ? record.metadata?.labels?.roles?.toString() - : ""} - - } - > -
- - {record.summary?.is_master_node ? ( - - ) : ( - - )} - - {record.metadata?.node_name} -
-
+ <> + + Transport Address:{" "} + {record.metadata?.labels?.transport_address} +
+ Cluster: {record.metadata?.cluster_name ?? ""} +
+ Version: {record.metadata?.labels?.version ?? ""} +
+ Roles:{" "} + {record.metadata?.labels?.roles + ? record.metadata?.labels?.roles?.toString() + : ""} + + } + > +
+ + {record.summary?.is_master_node ? ( + + ) : ( + + )} + + {record.metadata?.node_name} +
+
+ + ); }, }, diff --git a/web/src/pages/Platform/Overview/components/CommonTable/index.jsx b/web/src/pages/Platform/Overview/components/CommonTable/index.jsx index 3d141935..49266099 100644 --- a/web/src/pages/Platform/Overview/components/CommonTable/index.jsx +++ b/web/src/pages/Platform/Overview/components/CommonTable/index.jsx @@ -27,24 +27,31 @@ export default (props) => { } = props; const [infos, setInfos] = useState({}); + const [loadings, setLoadings] = useState({}); const fetchListInfo = async (data) => { - const res = await Promise.all(data?.map((item) => request(infoAction, { - method: "POST", - body: [item.id], - }, false, false))); - if (res) { - let newInfos = {} - res.forEach((item) => { - if (item && !item.error) { - newInfos = { - ...newInfos, - ...item - } + data?.forEach((item) => { + setLoadings((loadings) => ({ + ...loadings, + [item.id]: true + })) + request(infoAction, { + method: "POST", + body: [item.id], + }, false, false).then((res) => { + if (res && !res.error) { + setInfos((infos) => ({ + ...infos, + ...res + })); } + }).finally(() => { + setLoadings((loadings) => ({ + ...loadings, + [item.id]: false + })) }) - setInfos(newInfos); - } + }) }; useEffect(() => { @@ -84,7 +91,7 @@ export default (props) => { }, }; }} - rowClassName={() => styles.rowPointer} + rowClassName={(record) => `${styles.rowPointer} ${loadings[record.id] && !parentLoading ? styles.loading : ''}`} /> ); diff --git a/web/src/pages/Platform/Overview/components/CommonTable/index.less b/web/src/pages/Platform/Overview/components/CommonTable/index.less index cdb1794f..5c508966 100644 --- a/web/src/pages/Platform/Overview/components/CommonTable/index.less +++ b/web/src/pages/Platform/Overview/components/CommonTable/index.less @@ -1,3 +1,28 @@ .rowPointer { cursor: pointer; + :global { + .ant-spin-spinning { + display: none; + } + } +} + +.loading { + position: relative; + cursor: default; + pointer-events: none; + opacity: 0.5; + :global { + .ant-spin-spinning { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + z-index: 1; + } + } } \ No newline at end of file