import type { VFC } from 'react';
import type { InstanceInsightsSchemaMetricsSummaryTrendsItem } from 'openapi';
import { Box, Divider, Paper, styled, Typography } from '@mui/material';
import type { TooltipState } from 'component/insights/components/LineChart/ChartTooltip/ChartTooltip';
import { ConditionallyRender } from '../../../../common/ConditionallyRender/ConditionallyRender';
const StyledTooltipItemContainer = styled(Paper)(({ theme }) => ({
padding: theme.spacing(2),
}));
const StyledItemHeader = styled(Box)(({ theme }) => ({
display: 'flex',
justifyContent: 'space-between',
gap: theme.spacing(2),
alignItems: 'center',
}));
const InfoLine = ({
iconChar,
title,
color,
}: {
iconChar: string;
title: string;
color: 'info' | 'success' | 'error';
}) => (
theme.palette[color].main,
}}
>
{iconChar}
{title}
);
export const InfoSummary = ({
data,
}: { data: { key: string; value: string | number }[] }) => (
{data.map(({ key, value }) => (
))}
);
export const MetricsSummaryTooltip: VFC<{ tooltip: TooltipState | null }> = ({
tooltip,
}) => {
const data = tooltip?.dataPoints.map((point) => {
return {
label: point.label,
title: point.dataset.label,
color: point.dataset.borderColor,
value: point.raw as InstanceInsightsSchemaMetricsSummaryTrendsItem & {
total: number;
},
};
});
const limitedData = data?.slice(0, 5);
return (
({
display: 'flex',
flexDirection: 'column',
gap: theme.spacing(2),
width: '300px',
})}
>
{limitedData?.map((point, index) => (
{'● '}
{point.title}
{point.label}
({ margin: theme.spacing(1.5, 0) })}
/>
({
margin: theme.spacing(1.5, 0),
})}
/>
>
}
/>
)) || null}
);
};