import { StatisticCard } from "@ant-design/pro-components"; import { message } from "antd"; import { useEffect, useState } from "react"; import { useIntl } from "react-intl"; import { get } from "../../request"; import type { IUserStatisticResponse } from "../../api/Exp"; import ExpPie, { type IPieData } from "./ExpPie"; const { Divider } = StatisticCard; interface IWidget { studioName?: string; } const ExpStatisticCardWidget = ({ studioName }: IWidget) => { const intl = useIntl(); const [expSum, setExpSum] = useState(); const [wbwCount, setWbwCount] = useState(); const [lookupCount, setLookupCount] = useState(); const [translationCount, setTranslationCount] = useState(); const [translationPieData, setTranslationPieData] = useState(); const [termCount, setTermCount] = useState(); const [termPieData, setTermPieData] = useState(); const [dictCount, setDictCount] = useState(); useEffect(() => { const url = `/v2/user-statistic/${studioName}`; console.info("api request", url); get(url).then((json) => { if (json.ok) { setExpSum(Math.ceil(json.data.exp.sum / 1000 / 60 / 60)); setWbwCount(json.data.wbw.count); setLookupCount(json.data.lookup.count); setTranslationCount(json.data.translation.count); setTranslationPieData([ { type: "公开", value: json.data.translation.count_pub }, { type: "未公开", value: json.data.translation.count - json.data.translation.count_pub, }, ]); setTermCount(json.data.term.count); setTermPieData([ { type: "百科", value: json.data.term.count_with_note }, { type: "仅术语", value: json.data.term.count - json.data.term.count_with_note, }, ]); setDictCount(json.data.dict.count); } else { message.error(json.message); } }); }, [studioName]); return ( } /> } /> ); }; export default ExpStatisticCardWidget;