{"version":3,"file":"static/js/4.ec468108.chunk.js","mappings":"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","sources":["assets/images/icons/shape-avatar.svg","ui-component/SvgColor.js","ui-component/cards/UserCard.js","ui-component/cards/Skeleton/EarningCard.js","views/Dashboard/component/StatisticalLineChartCard.js","ui-component/cards/Skeleton/TotalGrowthBarChart.js","views/Dashboard/component/StatisticalBarChart.js","utils/chart.js","views/Dashboard/index.js"],"sourcesContent":["var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgShapeAvatar(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n height: 62,\n viewBox: \"0 0 144 62\",\n width: 144,\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m111.34 23.88c-10.62-10.46-18.5-23.88-38.74-23.88h-1.2c-20.24 0-28.12 13.42-38.74 23.88-7.72 9.64-19.44 11.74-32.66 12.12v26h144v-26c-13.22-.38-24.94-2.48-32.66-12.12z\",\n fill: \"#fff\",\n fillRule: \"evenodd\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgShapeAvatar);\nexport default __webpack_public_path__ + \"static/media/shape-avatar.096ea8015d2d14ba4ce707d949a97823.svg\";\nexport { ForwardRef as ReactComponent };","import PropTypes from 'prop-types';\nimport { forwardRef } from 'react';\n\nimport Box from '@mui/material/Box';\n\n// ----------------------------------------------------------------------\n\nconst SvgColor = forwardRef(({ src, sx, ...other }, ref) => (\n \n));\n\nSvgColor.propTypes = {\n src: PropTypes.string,\n sx: PropTypes.object\n};\n\nexport default SvgColor;\n","/*\n * UserCard.js\n *\n * This file uses code from the Minimal UI project, available at\n * https://github.com/minimal-ui-kit/material-kit-react/blob/main/src/sections/blog/post-card.jsx\n *\n * Minimal UI is licensed under the MIT License. A copy of the license is included below:\n *\n * MIT License\n *\n * Copyright (c) 2021 Minimal UI (https://minimals.cc/)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nimport { Box, Avatar } from '@mui/material';\nimport { alpha } from '@mui/material/styles';\nimport Card from '@mui/material/Card';\nimport shapeAvatar from 'assets/images/icons/shape-avatar.svg';\nimport coverAvatar from 'assets/images/invite/cover.jpg';\nimport userAvatar from 'assets/images/users/user-round.svg';\nimport SvgColor from 'ui-component/SvgColor';\n\nimport React from 'react';\n\nexport default function UserCard({ children }) {\n const renderShape = (\n \n );\n\n const renderAvatar = (\n theme.spacing(-4)\n }}\n />\n );\n\n const renderCover = (\n \n );\n\n return (\n \n alpha(theme.palette.primary.main, 0.42)\n },\n pt: {\n xs: 'calc(100% / 3)',\n sm: 'calc(100% / 4.66)'\n }\n }}\n >\n {renderShape}\n {renderAvatar}\n {renderCover}\n \n theme.spacing(4, 3, 3, 3)\n }}\n >\n {children}\n \n \n );\n}\n","// material-ui\nimport { Card, CardContent, Grid } from '@mui/material';\nimport Skeleton from '@mui/material/Skeleton';\n\n// ==============================|| SKELETON - EARNING CARD ||============================== //\n\nconst EarningCard = () => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default EarningCard;\n","import PropTypes from 'prop-types';\nimport { useTheme, styled } from '@mui/material/styles';\nimport { Box, Grid, Typography } from '@mui/material';\nimport Chart from 'react-apexcharts';\nimport MainCard from 'ui-component/cards/MainCard';\nimport SkeletonTotalOrderCard from 'ui-component/cards/Skeleton/EarningCard';\n\nconst CardWrapper = styled(MainCard)(({ theme }) => ({\n ...theme.typography.CardWrapper,\n color: '#fff',\n overflow: 'hidden',\n position: 'relative',\n '&>div': {\n position: 'relative',\n zIndex: 5\n },\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n width: 210,\n height: 210,\n background: theme.palette.primary[800],\n borderRadius: '50%',\n zIndex: 1,\n top: -85,\n right: -95,\n [theme.breakpoints.down('sm')]: {\n top: -105,\n right: -140\n }\n },\n '&:before': {\n content: '\"\"',\n position: 'absolute',\n zIndex: 1,\n width: 210,\n height: 210,\n background: theme.palette.primary[800],\n borderRadius: '50%',\n top: -125,\n right: -15,\n opacity: 0.5,\n [theme.breakpoints.down('sm')]: {\n top: -155,\n right: -70\n }\n }\n}));\n\nconst StatisticalLineChartCard = ({ isLoading, title, chartData, todayValue }) => {\n const theme = useTheme();\n\n return (\n <>\n {isLoading ? (\n \n ) : (\n \n \n \n \n \n \n \n \n \n {todayValue || '0'}\n \n \n \n \n {title}\n \n \n \n \n \n {chartData ? (\n \n ) : (\n \n 无数据\n \n )}\n \n \n \n \n \n \n )}\n \n );\n};\n\nStatisticalLineChartCard.propTypes = {\n isLoading: PropTypes.bool,\n title: PropTypes.string,\n chartData: PropTypes.object,\n todayValue: PropTypes.string\n};\n\nexport default StatisticalLineChartCard;\n","// material-ui\nimport { Card, CardContent, Grid } from '@mui/material';\nimport Skeleton from '@mui/material/Skeleton';\n\n// project imports\nimport { gridSpacing } from 'store/constant';\n\n// ==============================|| SKELETON TOTAL GROWTH BAR CHART ||============================== //\n\nconst TotalGrowthBarChart = () => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default TotalGrowthBarChart;\n","import PropTypes from 'prop-types';\nimport { Grid, Typography, Box, CircularProgress, TextField } from '@mui/material';\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport { DatePicker } from '@mui/x-date-pickers/DatePicker';\nimport Chart from 'react-apexcharts';\nimport SkeletonTotalGrowthBarChart from 'ui-component/cards/Skeleton/TotalGrowthBarChart';\nimport MainCard from 'ui-component/cards/MainCard';\nimport { gridSpacing } from 'store/constant';\n\nconst StatisticalBarChart = ({ isLoading, isRefreshing, chartDatas, startDate, endDate, onDateChange }) => {\n const renderChart = () => {\n if (!chartDatas || !chartDatas.xaxis || !chartDatas.data) {\n return 无可用数据;\n }\n \n const updatedChartData = {\n ...defaultChartData,\n options: {\n ...defaultChartData.options,\n xaxis: { ...defaultChartData.options.xaxis, categories: chartDatas.xaxis },\n },\n series: chartDatas.data,\n };\n \n return (\n \n {isRefreshing && (\n \n \n \n )}\n \n \n );\n };\n \n return (\n <>\n {isLoading ? (\n \n ) : (\n \n \n \n \n \n 统计\n \n \n \n \n \n onDateChange(newValue, endDate)}\n renderInput={(params) => }\n disabled={isRefreshing}\n />\n \n \n \n \n onDateChange(startDate, newValue)}\n renderInput={(params) => }\n disabled={isRefreshing}\n />\n \n \n \n \n \n \n \n {renderChart()}\n \n \n \n )}\n \n );\n};\n\nStatisticalBarChart.propTypes = {\n isLoading: PropTypes.bool,\n isRefreshing: PropTypes.bool,\n chartDatas: PropTypes.shape({\n xaxis: PropTypes.arrayOf(PropTypes.string).isRequired,\n data: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n data: PropTypes.arrayOf(PropTypes.number).isRequired,\n })\n ).isRequired,\n }).isRequired,\n startDate: PropTypes.instanceOf(Date).isRequired,\n endDate: PropTypes.instanceOf(Date).isRequired,\n onDateChange: PropTypes.func.isRequired,\n};\n\nexport default StatisticalBarChart;\n\nconst defaultChartData = {\n height: 480,\n type: 'bar',\n options: {\n chart: {\n id: 'bar-chart',\n stacked: true,\n toolbar: {\n show: true\n },\n zoom: {\n enabled: true\n }\n },\n responsive: [\n {\n breakpoint: 480,\n options: {\n legend: {\n position: 'bottom',\n offsetX: -10,\n offsetY: 0\n }\n }\n }\n ],\n plotOptions: {\n bar: {\n horizontal: false,\n columnWidth: '50%'\n }\n },\n xaxis: {\n type: 'category',\n categories: []\n },\n legend: {\n show: true,\n fontSize: '14px',\n fontFamily: `'Roboto', sans-serif`,\n position: 'bottom',\n offsetX: 20,\n labels: {\n useSeriesColors: false\n },\n markers: {\n width: 16,\n height: 16,\n radius: 5\n },\n itemMargin: {\n horizontal: 15,\n vertical: 8\n }\n },\n fill: {\n type: 'solid'\n },\n dataLabels: {\n enabled: false\n },\n grid: {\n show: true\n },\n tooltip: {\n theme: 'dark',\n fixed: {\n enabled: false\n },\n y: {\n formatter: function (val) {\n return '$' + val;\n }\n },\n marker: {\n show: false\n }\n }\n },\n series: []\n};\n","export function getLastSevenDays() {\n const dates = [];\n for (let i = 6; i >= 0; i--) {\n const d = new Date();\n d.setDate(d.getDate() - i);\n const month = '' + (d.getMonth() + 1);\n const day = '' + d.getDate();\n const year = d.getFullYear();\n\n const formattedDate = [year, month.padStart(2, '0'), day.padStart(2, '0')].join('-');\n dates.push(formattedDate);\n }\n return dates;\n}\n\nexport function getTodayDay() {\n let today = new Date();\n return today.toISOString().slice(0, 10);\n}\nexport const getDaysBetween = (startDate, endDate) => {\n const days = [];\n let currentDate = new Date(startDate);\n\n while (currentDate <= endDate) {\n days.push(currentDate.toISOString().split('T')[0]);\n currentDate.setDate(currentDate.getDate() + 1);\n }\n\n return days;\n};\nexport function generateChartOptions(data, unit) {\n const dates = data.map((item) => item.date);\n const values = data.map((item) => item.value);\n\n const minDate = dates[0];\n const maxDate = dates[dates.length - 1];\n\n const minValue = Math.min(...values);\n const maxValue = Math.max(...values);\n\n return {\n series: [\n {\n data: values\n }\n ],\n type: 'line',\n height: 90,\n options: {\n chart: {\n sparkline: {\n enabled: true\n },\n background: 'transparent'\n },\n dataLabels: {\n enabled: false\n },\n colors: ['#fff'],\n fill: {\n type: 'solid',\n opacity: 1\n },\n stroke: {\n curve: 'smooth',\n width: 3\n },\n xaxis: {\n categories: dates,\n labels: {\n show: false\n },\n min: minDate,\n max: maxDate\n },\n yaxis: {\n min: minValue,\n max: maxValue,\n labels: {\n show: false\n }\n },\n tooltip: {\n theme: 'dark',\n fixed: {\n enabled: false\n },\n x: {\n format: 'yyyy-MM-dd'\n },\n y: {\n formatter: function (val) {\n return val + ` ${unit}`;\n },\n title: {\n formatter: function () {\n return '';\n }\n }\n },\n marker: {\n show: false\n }\n }\n }\n };\n}\n","import { useEffect, useState, useCallback } from 'react';\nimport { Grid, Typography, Box, Skeleton } from '@mui/material';\nimport { gridSpacing } from 'store/constant';\nimport StatisticalLineChartCard from './component/StatisticalLineChartCard';\nimport StatisticalBarChart from './component/StatisticalBarChart';\nimport { generateChartOptions, getDaysBetween, getTodayDay } from 'utils/chart';\nimport { API } from 'utils/api';\nimport { showError, calculateQuota, renderNumber } from 'utils/common';\nimport UserCard from 'ui-component/cards/UserCard';\nimport { useSelector } from 'react-redux';\nimport AccountBalanceWalletIcon from '@mui/icons-material/AccountBalanceWallet';\nimport PaymentsIcon from '@mui/icons-material/Payments';\nimport ApiIcon from '@mui/icons-material/Api';\n\nconst Dashboard = () => {\n const [isLoading, setLoading] = useState(true);\n const [isRefreshing, setIsRefreshing] = useState(false);\n const [statisticalData, setStatisticalData] = useState({ data: [], xaxis: [] });\n const [requestChart, setRequestChart] = useState(null);\n const [quotaChart, setQuotaChart] = useState(null);\n const [tokenChart, setTokenChart] = useState(null);\n const [users, setUsers] = useState([]);\n const account = useSelector((state) => state.account);\n const [startDate, setStartDate] = useState(new Date(new Date().setDate(new Date().getDate() - 7)));\n const [endDate, setEndDate] = useState(new Date());\n\n const fetchDashboardData = useCallback(async () => {\n setIsRefreshing(true);\n try {\n const startTimestamp = Math.floor(startDate.getTime() / 1000);\n const endTimestamp = Math.floor(endDate.getTime() / 1000);\n const res = await API.get(`/api/user/dashboard?start=${startTimestamp}&end=${endTimestamp}`);\n const { success, data } = res.data;\n if (success && Array.isArray(data)) {\n const lineData = getLineDataGroup(data, startDate, endDate);\n setRequestChart(getLineCardOption(lineData, 'RequestCount'));\n setQuotaChart(getLineCardOption(lineData, 'Quota'));\n setTokenChart(getLineCardOption(lineData, 'PromptTokens'));\n setStatisticalData(getBarDataGroup(data, startDate, endDate));\n }\n } catch (error) {\n showError(`获取仪表盘数据时出错: ${error.message}`);\n } finally {\n setIsRefreshing(false);\n }\n }, [startDate, endDate]);\n\n const loadUser = async () => {\n try {\n const res = await API.get('/api/user/self');\n const { success, message, data } = res.data;\n if (success) {\n setUsers(data);\n } else {\n showError(message || '获取用户数据失败');\n }\n } catch (error) {\n showError(`获取用户数据时出错: ${error.message}`);\n }\n };\n\n useEffect(() => {\n if (account.user) {\n setLoading(true);\n Promise.all([fetchDashboardData(), loadUser()]).finally(() => {\n setLoading(false);\n });\n }\n }, [account.user, fetchDashboardData]);\n\n const handleDateChange = (newStartDate, newEndDate) => {\n setStartDate(newStartDate);\n setEndDate(newEndDate);\n fetchDashboardData();\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n theme.palette.mode === 'dark' \n ? 'rgba(0, 0, 0, 0.1)' \n : 'rgba(94, 53, 177, 0.1)',\n borderRadius: 2,\n padding: 2\n }}\n >\n \n \n 余额\n \n {isLoading ? (\n \n ) : (\n '$' + calculateQuota(users?.quota || 0)\n )}\n \n \n \n \n\n \n theme.palette.mode === 'dark' \n ? 'rgba(245, 124, 0, 0.15)' \n : 'rgba(245, 124, 0, 0.1)',\n borderRadius: 2,\n padding: 2\n }}\n >\n \n \n 已使用\n \n {isLoading ? (\n \n ) : (\n '$' + calculateQuota(users?.used_quota || 0)\n )}\n \n \n \n \n\n \n theme.palette.mode === 'dark' \n ? 'rgba(0, 200, 83, 0.15)' \n : 'rgba(0, 200, 83, 0.1)',\n borderRadius: 2,\n padding: 2\n }}\n >\n \n \n 调用次数\n \n {isLoading ? (\n \n ) : (\n renderNumber(users?.request_count || 0)\n )}\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default Dashboard;\n\n\nconst getLineDataGroup = (statisticalData, startDate, endDate) => {\n let groupedData = statisticalData.reduce((acc, cur) => {\n if (!acc[cur.Day]) {\n acc[cur.Day] = {\n date: cur.Day,\n RequestCount: 0,\n Quota: 0,\n PromptTokens: 0,\n CompletionTokens: 0\n };\n }\n acc[cur.Day].RequestCount += cur.RequestCount;\n acc[cur.Day].Quota += cur.Quota;\n acc[cur.Day].PromptTokens += cur.PromptTokens;\n acc[cur.Day].CompletionTokens += cur.CompletionTokens;\n return acc;\n }, {});\n\n const days = getDaysBetween(startDate, endDate);\n return days.map((day) => {\n if (!groupedData[day]) {\n return {\n date: day,\n RequestCount: 0,\n Quota: 0,\n PromptTokens: 0,\n CompletionTokens: 0\n };\n } else {\n return groupedData[day];\n }\n });\n};\n\n// Dashboard.js (continued)\n\nconst getBarDataGroup = (data, startDate, endDate) => {\n const days = getDaysBetween(startDate, endDate);\n const result = [];\n const map = new Map();\n\n for (const item of data) {\n if (!map.has(item.ModelName)) {\n const newData = { name: item.ModelName, data: new Array(days.length).fill(0) };\n map.set(item.ModelName, newData);\n result.push(newData);\n }\n const index = days.indexOf(item.Day);\n if (index !== -1) {\n const rawQuotaValue = item.Quota;\n const calculatedQuotaValue = parseFloat(calculateQuota(rawQuotaValue));\n\n if (!isNaN(calculatedQuotaValue)) {\n map.get(item.ModelName).data[index] += calculatedQuotaValue;\n } else {\n console.error(`Error: Calculated quota value is not a number for ModelName: ${item.ModelName} on Day: ${item.Day}`);\n }\n }\n }\n\n return { data: result, xaxis: days };\n};\n\nconst getLineCardOption = (lineDataGroup, field) => {\n const today = getTodayDay();\n let todayValue = 0;\n let chartData = null;\n\n const lineData = lineDataGroup.map((item) => {\n const tmp = {\n date: item.date,\n value: item[field]\n };\n if (field === 'Quota') {\n tmp.value = calculateQuota(item.Quota);\n } else if (field === 'PromptTokens') {\n tmp.value += item.CompletionTokens;\n }\n if (item.date === today) {\n todayValue = tmp.value;\n }\n return tmp;\n });\n\n switch (field) {\n case 'RequestCount':\n chartData = generateChartOptions(lineData, '次');\n todayValue = renderNumber(todayValue);\n break;\n case 'Quota':\n chartData = generateChartOptions(lineData, '美元');\n todayValue = '$' + renderNumber(todayValue);\n break;\n case 'PromptTokens':\n chartData = generateChartOptions(lineData, '');\n todayValue = renderNumber(todayValue);\n break;\n default:\n break;\n }\n\n return { chartData, todayValue };\n};\n"],"names":["SvgColor","forwardRef","_ref","ref","src","sx","other","_jsx","Box","component","className","width","height","display","bgcolor","mask","concat","WebkitMask","propTypes","PropTypes","UserCard","children","renderShape","color","shapeAvatar","zIndex","bottom","position","renderAvatar","Avatar","userAvatar","alignItems","marginLeft","marginRight","left","right","theme","spacing","renderCover","coverAvatar","top","objectFit","_jsxs","Card","content","alpha","palette","primary","main","pt","xs","sm","p","EarningCard","CardContent","Grid","container","direction","item","justifyContent","Skeleton","variant","my","CardWrapper","styled","MainCard","typography","overflow","background","borderRadius","breakpoints","down","opacity","_ref2","isLoading","title","chartData","todayValue","useTheme","_Fragment","SkeletonTotalOrderCard","border","minHeight","mb","Typography","fontSize","fontWeight","mr","mt","Chart","TotalGrowthBarChart","gridSpacing","zeroMinWidth","isRefreshing","chartDatas","startDate","endDate","onDateChange","SkeletonTotalGrowthBarChart","LocalizationProvider","dateAdapter","AdapterDateFns","DatePicker","label","value","onChange","newValue","renderInput","params","TextField","disabled","renderChart","xaxis","data","updatedChartData","defaultChartData","options","categories","series","CircularProgress","type","chart","id","stacked","toolbar","show","zoom","enabled","responsive","breakpoint","legend","offsetX","offsetY","plotOptions","bar","horizontal","columnWidth","fontFamily","labels","useSeriesColors","markers","radius","itemMargin","vertical","fill","dataLabels","grid","tooltip","fixed","y","formatter","val","marker","getDaysBetween","days","currentDate","Date","push","toISOString","split","setDate","getDate","generateChartOptions","unit","dates","map","date","values","sparkline","colors","stroke","curve","min","max","length","yaxis","Math","x","format","Dashboard","setLoading","useState","setIsRefreshing","statisticalData","setStatisticalData","requestChart","setRequestChart","quotaChart","setQuotaChart","tokenChart","setTokenChart","users","setUsers","account","useSelector","state","setStartDate","setEndDate","fetchDashboardData","useCallback","async","startTimestamp","floor","getTime","endTimestamp","res","API","get","success","Array","isArray","lineData","getLineDataGroup","getLineCardOption","getBarDataGroup","error","showError","message","loadUser","useEffect","user","Promise","all","finally","lg","StatisticalLineChartCard","StatisticalBarChart","handleDateChange","newStartDate","newEndDate","padding","md","backgroundColor","mode","AccountBalanceWalletIcon","calculateQuota","quota","PaymentsIcon","used_quota","ApiIcon","renderNumber","request_count","groupedData","reduce","acc","cur","Day","RequestCount","Quota","PromptTokens","CompletionTokens","day","result","Map","has","ModelName","newData","name","set","index","indexOf","rawQuotaValue","calculatedQuotaValue","parseFloat","isNaN","console","lineDataGroup","field","today","slice","tmp"],"sourceRoot":""}