| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | 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; |
| |
|