import { PREFIX_CLS } from '../../../common/constants'; import { formatMetric } from '../../../utils/utils'; import ApplyAuth from '../ApplyAuth'; import { DrillDownDimensionType, MsgDataType } from '../../../common/type'; import PeriodCompareItem from './PeriodCompareItem'; import DrillDownDimensions from '../../DrillDownDimensions'; import { Spin } from 'antd'; import classNames from 'classnames'; import FilterSection from '../FilterSection'; type Props = { data: MsgDataType; drillDownDimension?: DrillDownDimensionType; loading: boolean; onSelectDimension: (dimension?: DrillDownDimensionType) => void; onApplyAuth?: (model: string) => void; }; const MetricCard: React.FC = ({ data, drillDownDimension, loading, onSelectDimension, onApplyAuth, }) => { const { queryMode, queryColumns, queryResults, entityInfo, aggregateInfo, chatContext } = data; const { metricInfos } = aggregateInfo || {}; const { dateInfo, dimensionFilters } = chatContext || {}; const { startDate } = dateInfo || {}; const indicatorColumn = queryColumns?.find(column => column.showType === 'NUMBER'); const indicatorColumnName = indicatorColumn?.nameEn || ''; const prefixCls = `${PREFIX_CLS}-metric-card`; const indicatorClass = classNames(`${prefixCls}-indicator`, { [`${prefixCls}-indicator-period-compare`]: metricInfos?.length > 0, }); const hasFilterSection = dimensionFilters?.length > 0; return (
{indicatorColumn?.name ? (
{indicatorColumn?.name}
) : (
)} {(hasFilterSection || drillDownDimension) && (
(
{drillDownDimension && (
下钻维度:
{drillDownDimension.name}
)}
)
)}
{startDate}
{indicatorColumn && !indicatorColumn?.authorized ? ( ) : (
{formatMetric(queryResults?.[0]?.[indicatorColumnName]) || '-'}
)} {metricInfos?.length > 0 && (
{Object.keys(metricInfos[0].statistics).map((key: any) => ( ))}
)}
{queryMode.includes('METRIC') && (
)}
); }; export default MetricCard;