| | |
| | | return `<div style='color:#6B7280;font-size:12px'>${params.name}</div> |
| | | <div style='font-size:14px;color:#1F2A37'>${valueFormatter((params.data as any)[yField])} |
| | | ${!CHART_TYPE_CONFIG[chartType].showTokens |
| | | ? '' |
| | | : `<span style='font-size:12px'> |
| | | ? '' |
| | | : `<span style='font-size:12px'> |
| | | <span style='margin-left:4px;color:#6B7280'>(</span> |
| | | <span style='color:#FF8A4C'>~$${get(params.data, 'total_price', 0)}</span> |
| | | <span style='color:#6B7280'>)</span> |
| | |
| | | const sumData = isAvg ? (sum(yData) / yData.length) : sum(yData) |
| | | |
| | | return ( |
| | | <div className={`flex w-full flex-col rounded-xl bg-components-chart-bg px-6 py-4 shadow-xs ${className ?? ''}`}> |
| | | <div className={`flex flex-col w-full px-6 py-4 border-[0.5px] rounded-lg border-gray-200 shadow-xs ${className ?? ''}`}> |
| | | <div className='mb-3'> |
| | | <Basic name={title} type={timePeriod} hoverTip={explanation} /> |
| | | </div> |
| | | <div className='mb-4 flex-1'> |
| | | <Basic |
| | | isExtraInLine={CHART_TYPE_CONFIG[chartType].showTokens} |
| | | name={chartType !== 'costs' ? (`${sumData.toLocaleString()} ${unit}`) : `${sumData < 1000 ? sumData : (`${formatNumber(Math.round(sumData / 1000))}k`)}`} |
| | | name={chartType !== 'costs' ? (sumData.toLocaleString() + unit) : `${sumData < 1000 ? sumData : (`${formatNumber(Math.round(sumData / 1000))}k`)}`} |
| | | type={!CHART_TYPE_CONFIG[chartType].showTokens |
| | | ? '' |
| | | : <span>{t('appOverview.analysis.tokenUsage.consumed')} Tokens<span className='text-sm'> |
| | | <span className='ml-1 text-text-tertiary'>(</span> |
| | | <span className='text-orange-400'>~{sum(statistics.map(item => Number.parseFloat(get(item, 'total_price', '0')))).toLocaleString('en-US', { style: 'currency', currency: 'USD', minimumFractionDigits: 4 })}</span> |
| | | <span className='text-text-tertiary'>)</span> |
| | | <span className='ml-1 text-gray-500'>(</span> |
| | | <span className='text-orange-400'>~{sum(statistics.map(item => parseFloat(get(item, 'total_price', '0')))).toLocaleString('en-US', { style: 'currency', currency: 'USD', minimumFractionDigits: 4 })}</span> |
| | | <span className='text-gray-500'>)</span> |
| | | </span></span>} |
| | | textStyle={{ main: `!text-3xl !font-normal ${sumData === 0 ? '!text-text-quaternary' : ''}` }} /> |
| | | textStyle={{ main: `!text-3xl !font-normal ${sumData === 0 ? '!text-gray-300' : ''}` }} /> |
| | | </div> |
| | | <ReactECharts option={options} style={{ height: 160 }} /> |
| | | </div> |
| | |
| | | isAvg |
| | | unit={t('appOverview.analysis.tokenPS') as string} |
| | | {...(noDataFlag && { yMax: 100 })} |
| | | className="min-w-0" |
| | | /> |
| | | } |
| | | |