import { Chart, ChartArea, ChartAxis, ChartCursorTooltip, ChartGroup, ChartPoint, ChartThemeColor, createContainer } from '@patternfly/react-charts/victory'; interface PetData { name?: string; x?: string; y?: number | null; } export const ChartTooltipEmbeddedHtml: React.FunctionComponent = () => { const baseStyles = { color: '#f0f0f0', fontFamily: '"Red Hat Text", "RedHatText", "Noto Sans Arabic", "Noto Sans Hebrew", "Noto Sans JP", "Noto Sans KR", "Noto Sans Malayalam", "Noto Sans SC", "Noto Sans TC", "Noto Sans Thai", Helvetica, Arial, sans-serif', fontSize: '14px' }; // Note: Container order is important const CursorVoronoiContainer = createContainer('voronoi', 'cursor'); const legendData: PetData[] = [{ name: 'Cats' }, { name: 'Dogs' }, { name: 'Birds' }]; const data1: PetData[] = [ { name: 'Cats', x: '2015', y: 3 }, { name: 'Cats', x: '2016', y: 4 }, { name: 'Cats', x: '2017', y: 8 }, { name: 'Cats', x: '2018', y: 6 }, { name: 'Cats', x: '2019', y: null } ]; const data2: PetData[] = [ { name: 'Dogs', x: '2015', y: 2 }, { name: 'Dogs', x: '2016', y: 3 }, { name: 'Dogs', x: '2017', y: 4 }, { name: 'Dogs', x: '2018', y: 5 }, { name: 'Dogs', x: '2019', y: 6 } ]; const data3: PetData[] = [ { name: 'Birds', x: '2015', y: 1 }, { name: 'Birds', x: '2016', y: 2 }, { name: 'Birds', x: '2017', y: 3 }, { name: 'Birds', x: '2018', y: 2 }, { name: 'Birds', x: '2019', y: 4 } ]; // Custom HTML component to create a legend layout const HtmlLegendContent = ({ datum, legendData, text, theme, title, x, y, ..._rest }) => ( {text.map((val, index) => ( ))}
{title(datum)}
{ } {legendData[index].name} {val}
); return (
`${datum.y !== null ? datum.y : 'no data'}`} labelComponent={ width > center.x + flyoutWidth + 10 ? offset : -offset}} // flyoutComponent={} flyoutHeight={110} flyoutWidth={({ datum }) => (datum.y === null ? 160 : 125)} labelComponent={ datum.x} />} /> } mouseFollowTooltips voronoiDimension="x" voronoiPadding={50} /> } legendData={legendData} legendPosition="bottom-left" height={225} name="chart4" padding={{ bottom: 75, // Adjusted to accommodate legend left: 50, right: 50, top: 50 }} maxDomain={{ y: 9 }} themeColor={ChartThemeColor.multiUnordered} width={650} >
); };