import React, { useState, useEffect, ReactNode } from 'react';
import {
Grid,
Card,
Typography,
Divider,
Skeleton,
Link
} from '@arco-design/web-react';
import { useSelector } from 'react-redux';
import axios from 'axios';
import locale from './locale';
import useLocale from '@/utils/useLocale';
import styles from './style/overview.module.less';
import IconCalendar from './assets/calendar.svg';
import IconComments from './assets/comments.svg';
import IconContent from './assets/content.svg';
import IconIncrease from './assets/increase.svg';
import HeatMap from '@/components/Chart/heat-map';
import { getOverviewHome } from '@/api/overview';
const { Row, Col } = Grid;
type StatisticItemType = {
icon?: ReactNode;
title?: ReactNode;
count?: ReactNode;
loading?: boolean;
unit?: ReactNode;
};
function StatisticItem(props: StatisticItemType) {
const { icon, title, count, loading, unit } = props;
return (
);
}
type DataType = {
sceneNum?: string | number;
compNum?: string | number;
appNum?: string | number;
instanceNum?: string | number;
chartData?: { count?: number; date?: string }[];
down?: boolean;
};
function Overview() {
const [data, setData] = useState({});
const [loading, setLoading] = useState(true);
const t = useLocale(locale);
const userInfo = useSelector((state: any) => state.user?.userInfo || {});
const fetchData = async () => {
setLoading(true);
const res: any = await getOverviewHome();
if (res.code === 200) setData(res.data);
setLoading(false);
};
useEffect(() => {
fetchData();
}, []);
return (
{t['workplace.welcomeBack']}
{userInfo.username}
}
title="工程数量"
count={data.sceneNum}
loading={loading}
unit={t['workplace.pecs']}
/>
}
title="组件数量"
count={data.compNum}
loading={loading}
unit={t['workplace.pecs']}
/>
}
title="应用数量"
count={data.appNum}
loading={loading}
unit={t['workplace.pecs']}
/>
}
title="应用实例数量"
count={data.instanceNum}
loading={loading}
/>
{/*热力图*/}
);
}
export default Overview;