fix: cluster filter do not work in dashboard

This commit is contained in:
jialin
2025-12-24 12:20:56 +08:00
parent 530b20c633
commit a9b58a5564
4 changed files with 36 additions and 33 deletions
+2 -22
View File
@@ -1,5 +1,5 @@
import { useIntl } from '@umijs/max';
import { Card, Col, Row, Space } from 'antd';
import { Card, Col, Row } from 'antd';
import _ from 'lodash';
import React, { useContext } from 'react';
import { overviewConfigs } from '../config';
@@ -30,26 +30,6 @@ const Overview: React.FC = () => {
const intl = useIntl();
const data = useContext(DashboardContext).resource_counts || {};
const renderValue = (
value:
| number
| {
healthy: number;
warning: number;
error: number;
}
) => {
if (typeof value === 'number') {
return value;
}
return (
<Space className="value-box" size={20}>
<span className={'value-healthy'}>{value.healthy}</span>
<span className={'value-warning'}>{value.warning}</span>
<span className={'value-error'}>{value.error}</span>
</Space>
);
};
return (
<div>
<Row gutter={[20, 20]} className={styles.row}>
@@ -64,7 +44,7 @@ const Overview: React.FC = () => {
>
{renderCardItem({
label: intl.formatMessage({ id: config.label }),
value: renderValue(_.get(data, config.key, 0)),
value: _.get(data, config.key, 0),
bgColor: config.backgroundColor
})}
</Col>
+20 -10
View File
@@ -1,5 +1,6 @@
import { useMemoizedFn } from 'ahooks';
import { Spin } from 'antd';
import { omit } from 'lodash';
import { useEffect, useState } from 'react';
import PageBox from '../_components/page-box';
import { queryDashboardData } from './apis';
@@ -11,17 +12,26 @@ const Dashboard: React.FC = () => {
const [data, setData] = useState<DashboardProps>({} as DashboardProps);
const [loading, setLoading] = useState(false);
const fetchDashboardData = useMemoizedFn(async () => {
try {
setLoading(true);
const res = await queryDashboardData();
setData(res);
} catch (error) {
setData({} as DashboardProps);
} finally {
setLoading(false);
const fetchDashboardData = useMemoizedFn(
async (params?: { cluster_id?: number }) => {
try {
setLoading(true);
const res = await queryDashboardData(params);
setData((prev) => {
return params?.cluster_id
? {
...omit(prev, ['system_load']),
system_load: res.system_load
}
: res;
});
} catch (error) {
setData({} as DashboardProps);
} finally {
setLoading(false);
}
}
});
);
useEffect(() => {
fetchDashboardData();