UNPKG

@grafana/ui

Version:
1 lines 7.28 kB
{"version":3,"file":"GraphContextMenu.mjs","sources":["../../../../src/graveyard/Graph/GraphContextMenu.tsx"],"sourcesContent":["import { css } from '@emotion/css';\n\nimport {\n FlotDataPoint,\n getValueFromDimension,\n Dimensions,\n dateTimeFormat,\n TimeZone,\n FormattedValue,\n GrafanaTheme2,\n} from '@grafana/data';\n\nimport { ContextMenu, ContextMenuProps } from '../../components/ContextMenu/ContextMenu';\nimport { FormattedValueDisplay } from '../../components/FormattedValueDisplay/FormattedValueDisplay';\nimport { HorizontalGroup } from '../../components/Layout/Layout';\nimport { MenuGroup, MenuGroupProps } from '../../components/Menu/MenuGroup';\nimport { MenuItem } from '../../components/Menu/MenuItem';\nimport { SeriesIcon } from '../../components/VizLegend/SeriesIcon';\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nimport { GraphDimensions } from './GraphTooltip/types';\n\n/** @deprecated */\nexport type ContextDimensions<T extends Dimensions = any> = { [key in keyof T]: [number, number | undefined] | null };\n\n/** @deprecated */\nexport type GraphContextMenuProps = ContextMenuProps & {\n getContextMenuSource: () => FlotDataPoint | null;\n timeZone?: TimeZone;\n itemsGroup?: MenuGroupProps[];\n dimensions?: GraphDimensions;\n contextDimensions?: ContextDimensions;\n};\n\n/** @internal */\nexport const GraphContextMenu = ({\n getContextMenuSource,\n timeZone,\n itemsGroup,\n dimensions,\n contextDimensions,\n ...otherProps\n}: GraphContextMenuProps) => {\n const source = getContextMenuSource();\n\n // Do not render items that do not have label specified\n const itemsToRender = itemsGroup\n ? itemsGroup.map((group) => ({\n ...group,\n items: group.items?.filter((item) => item.label),\n }))\n : [];\n\n const renderHeader = () => {\n if (!source) {\n return null;\n }\n\n // If dimensions supplied, we can calculate and display value\n let value;\n if (dimensions?.yAxis && contextDimensions?.yAxis?.[1]) {\n const valueFromDimensions = getValueFromDimension(\n dimensions.yAxis,\n contextDimensions.yAxis[0],\n contextDimensions.yAxis[1]\n );\n const display = source.series.valueField.display!;\n value = display(valueFromDimensions);\n }\n\n const formattedValue = dateTimeFormat(source.datapoint[0], {\n defaultWithMS: source.series.hasMsResolution,\n timeZone,\n });\n\n return (\n <GraphContextMenuHeader\n timestamp={formattedValue}\n seriesColor={source.series.color}\n displayName={source.series.alias || source.series.label}\n displayValue={value}\n />\n );\n };\n const renderMenuGroupItems = () => {\n return itemsToRender?.map((group, index) => (\n <MenuGroup key={`${group.label}${index}`} label={group.label}>\n {(group.items || []).map((item) => (\n <MenuItem\n key={`${item.label}`}\n url={item.url}\n label={item.label}\n target={item.target}\n icon={item.icon}\n active={item.active}\n onClick={item.onClick}\n />\n ))}\n </MenuGroup>\n ));\n };\n\n return <ContextMenu {...otherProps} renderMenuItems={renderMenuGroupItems} renderHeader={renderHeader} />;\n};\n\n/** @internal */\nexport const GraphContextMenuHeader = ({\n timestamp,\n seriesColor,\n displayName,\n displayValue,\n}: {\n timestamp: string;\n seriesColor: string;\n displayName: string;\n displayValue: FormattedValue;\n}) => {\n const styles = useStyles2(getStyles);\n\n return (\n <div className={styles.wrapper}>\n <strong>{timestamp}</strong>\n <HorizontalGroup>\n <div>\n <SeriesIcon color={seriesColor} />\n <span className={styles.displayName}>{displayName}</span>\n </div>\n {displayValue && <FormattedValueDisplay value={displayValue} />}\n </HorizontalGroup>\n </div>\n );\n};\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n wrapper: css({\n padding: theme.spacing(0.5, 1),\n fontSize: theme.typography.size.sm,\n zIndex: theme.zIndex.tooltip,\n }),\n displayName: css({\n whiteSpace: 'nowrap',\n paddingLeft: theme.spacing(0.5),\n }),\n };\n}\n"],"names":[],"mappings":"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"}