| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| import React from 'react'; |
| import { Card, Tabs, TabPane } from '@douyinfe/semi-ui'; |
| import { PieChart } from 'lucide-react'; |
| import { VChart } from '@visactor/react-vchart'; |
|
|
| const ChartsPanel = ({ |
| activeChartTab, |
| setActiveChartTab, |
| spec_line, |
| spec_model_line, |
| spec_pie, |
| spec_rank_bar, |
| CARD_PROPS, |
| CHART_CONFIG, |
| FLEX_CENTER_GAP2, |
| hasApiInfoPanel, |
| t, |
| }) => { |
| return ( |
| <Card |
| {...CARD_PROPS} |
| className={`!rounded-2xl ${hasApiInfoPanel ? 'lg:col-span-3' : ''}`} |
| title={ |
| <div className='flex flex-col lg:flex-row lg:items-center lg:justify-between w-full gap-3'> |
| <div className={FLEX_CENTER_GAP2}> |
| <PieChart size={16} /> |
| {t('模型数据分析')} |
| </div> |
| <Tabs |
| type='slash' |
| activeKey={activeChartTab} |
| onChange={setActiveChartTab} |
| > |
| <TabPane tab={<span>{t('消耗分布')}</span>} itemKey='1' /> |
| <TabPane tab={<span>{t('消耗趋势')}</span>} itemKey='2' /> |
| <TabPane tab={<span>{t('调用次数分布')}</span>} itemKey='3' /> |
| <TabPane tab={<span>{t('调用次数排行')}</span>} itemKey='4' /> |
| </Tabs> |
| </div> |
| } |
| bodyStyle={{ padding: 0 }} |
| > |
| <div className='h-96 p-2'> |
| {activeChartTab === '1' && ( |
| <VChart spec={spec_line} option={CHART_CONFIG} /> |
| )} |
| {activeChartTab === '2' && ( |
| <VChart spec={spec_model_line} option={CHART_CONFIG} /> |
| )} |
| {activeChartTab === '3' && ( |
| <VChart spec={spec_pie} option={CHART_CONFIG} /> |
| )} |
| {activeChartTab === '4' && ( |
| <VChart spec={spec_rank_bar} option={CHART_CONFIG} /> |
| )} |
| </div> |
| </Card> |
| ); |
| }; |
|
|
| export default ChartsPanel; |
|
|