mirror of
https://github.com/songquanpeng/one-api.git
synced 2025-09-29 22:56:39 +08:00
168 lines
3.5 KiB
JavaScript
168 lines
3.5 KiB
JavaScript
import PropTypes from 'prop-types';
|
|
|
|
// material-ui
|
|
import { Grid, Typography } from '@mui/material';
|
|
|
|
// third-party
|
|
import Chart from 'react-apexcharts';
|
|
|
|
// project imports
|
|
import SkeletonTotalGrowthBarChart from 'ui-component/cards/Skeleton/TotalGrowthBarChart';
|
|
import MainCard from 'ui-component/cards/MainCard';
|
|
import { gridSpacing } from 'store/constant';
|
|
import { Box } from '@mui/material';
|
|
|
|
// ==============================|| DASHBOARD DEFAULT - TOTAL GROWTH BAR CHART ||============================== //
|
|
|
|
const BubbleChard = ({ isLoading, chartDatas, title = '统计' }) => {
|
|
chartData.options.xaxis.categories = chartDatas.xaxis;
|
|
chartData.series = chartDatas.data;
|
|
|
|
return (
|
|
<>
|
|
{isLoading ? (
|
|
<SkeletonTotalGrowthBarChart />
|
|
) : (
|
|
<MainCard>
|
|
<Grid container spacing={gridSpacing}>
|
|
<Grid item xs={12}>
|
|
<Grid container alignItems="center" justifyContent="space-between">
|
|
<Grid item>
|
|
<Typography variant="h3">{title}</Typography>
|
|
</Grid>
|
|
</Grid>
|
|
</Grid>
|
|
<Grid item xs={12}>
|
|
{chartData.series ? (
|
|
<Chart {...chartData} />
|
|
) : (
|
|
<Box
|
|
sx={{
|
|
minHeight: '490px',
|
|
display: 'flex',
|
|
alignItems: 'center',
|
|
justifyContent: 'center'
|
|
}}
|
|
>
|
|
<Typography variant="h3" color={'#697586'}>
|
|
暂无数据
|
|
</Typography>
|
|
</Box>
|
|
)}
|
|
</Grid>
|
|
</Grid>
|
|
</MainCard>
|
|
)}
|
|
</>
|
|
);
|
|
};
|
|
|
|
BubbleChard.propTypes = {
|
|
isLoading: PropTypes.bool,
|
|
chartDatas: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),
|
|
title: PropTypes.string
|
|
};
|
|
|
|
export default BubbleChard;
|
|
|
|
const chartData = {
|
|
height: 480,
|
|
type: 'bubble',
|
|
options: {
|
|
colors: [
|
|
'#008FFB',
|
|
'#00E396',
|
|
'#FEB019',
|
|
'#FF4560',
|
|
'#775DD0',
|
|
'#55efc4',
|
|
'#81ecec',
|
|
'#74b9ff',
|
|
'#a29bfe',
|
|
'#00b894',
|
|
'#00cec9',
|
|
'#0984e3',
|
|
'#6c5ce7',
|
|
'#ffeaa7',
|
|
'#fab1a0',
|
|
'#ff7675',
|
|
'#fd79a8',
|
|
'#fdcb6e',
|
|
'#e17055',
|
|
'#d63031',
|
|
'#e84393'
|
|
],
|
|
chart: {
|
|
id: 'bubble',
|
|
stacked: true,
|
|
toolbar: {
|
|
show: true
|
|
},
|
|
zoom: {
|
|
enabled: true
|
|
},
|
|
background: 'transparent'
|
|
},
|
|
responsive: [
|
|
{
|
|
breakpoint: 480,
|
|
options: {
|
|
legend: {
|
|
position: 'bottom',
|
|
offsetX: -10,
|
|
offsetY: 0
|
|
}
|
|
}
|
|
}
|
|
],
|
|
plotOptions: {
|
|
bar: {
|
|
horizontal: false,
|
|
columnWidth: '50%'
|
|
}
|
|
},
|
|
xaxis: {
|
|
type: 'category',
|
|
categories: []
|
|
},
|
|
legend: {
|
|
show: true,
|
|
fontSize: '14px',
|
|
fontFamily: `'Roboto', sans-serif`,
|
|
position: 'bottom',
|
|
offsetX: 20,
|
|
labels: {
|
|
useSeriesColors: false
|
|
},
|
|
markers: {
|
|
width: 16,
|
|
height: 16,
|
|
radius: 5
|
|
},
|
|
itemMargin: {
|
|
horizontal: 15,
|
|
vertical: 8
|
|
}
|
|
},
|
|
fill: {
|
|
type: 'solid'
|
|
},
|
|
dataLabels: {
|
|
enabled: false
|
|
},
|
|
grid: {
|
|
show: true
|
|
},
|
|
tooltip: {
|
|
theme: 'dark',
|
|
fixed: {
|
|
enabled: false
|
|
},
|
|
marker: {
|
|
show: false
|
|
}
|
|
}
|
|
},
|
|
series: []
|
|
};
|