diff --git a/public/app/plugins/panel/geomap/components/DataHoverRow.tsx b/public/app/plugins/panel/geomap/components/DataHoverRow.tsx index 5c8a38a6480..0aaf6a32f9a 100644 --- a/public/app/plugins/panel/geomap/components/DataHoverRow.tsx +++ b/public/app/plugins/panel/geomap/components/DataHoverRow.tsx @@ -24,5 +24,5 @@ export const DataHoverRow = ({ feature }: Props) => { data = new ArrayDataFrame([properties]); } - return ; + return ; }; diff --git a/public/app/plugins/panel/geomap/components/DataHoverView.tsx b/public/app/plugins/panel/geomap/components/DataHoverView.tsx index 23accd4617b..b0c50e6f442 100644 --- a/public/app/plugins/panel/geomap/components/DataHoverView.tsx +++ b/public/app/plugins/panel/geomap/components/DataHoverView.tsx @@ -19,25 +19,36 @@ export interface Props { columnIndex?: number | null; // the hover column sortOrder?: SortOrder; mode?: TooltipDisplayMode | null; + displayExemplarHeader?: boolean; } -export const DataHoverView = ({ data, rowIndex, columnIndex, sortOrder, mode }: Props) => { +export const DataHoverView = ({ + data, + rowIndex, + columnIndex, + sortOrder, + mode, + displayExemplarHeader = true, +}: Props) => { const styles = useStyles2(getStyles); if (!data || rowIndex == null) { return null; } + // Put the traceID field in front. const visibleFields = data.fields.filter((f) => !Boolean(f.config.custom?.hideFrom?.tooltip)); + const traceIDField = visibleFields.find((field) => field.name === 'traceID') || data.fields[0]; + const orderedVisibleFields = [traceIDField, ...visibleFields.filter((field) => traceIDField !== field)]; - if (visibleFields.length === 0) { + if (orderedVisibleFields.length === 0) { return null; } const displayValues: Array<[string, unknown, string]> = []; const links: Record>> = {}; - for (const f of visibleFields) { + for (const f of orderedVisibleFields) { const v = f.values.get(rowIndex); const disp = f.display ? f.display(v) : { text: `${v}`, numeric: +v }; if (f.getLinks) { @@ -58,23 +69,30 @@ export const DataHoverView = ({ data, rowIndex, columnIndex, sortOrder, mode }: } return ( - - - {(mode === TooltipDisplayMode.Multi || mode == null) && - displayValues.map((v, i) => ( - - - +
+ {displayExemplarHeader && ( +
+ Exemplar +
+ )} +
{v[0]}:{renderWithLinks(v[0], v[2], links)}
+ + {(mode === TooltipDisplayMode.Multi || mode == null) && + displayValues.map((v, i) => ( + + + + + ))} + {mode === TooltipDisplayMode.Single && columnIndex && ( + + + - ))} - {mode === TooltipDisplayMode.Single && columnIndex && ( - - - - - )} - -
{v[0]}:{renderWithLinks(v[0], v[2], links)}
{displayValues[columnIndex][0]}:{renderWithLinks(displayValues[columnIndex][0], displayValues[columnIndex][2], links)}
{displayValues[columnIndex][0]}:{renderWithLinks(displayValues[columnIndex][0], displayValues[columnIndex][2], links)}
+ )} + + + ); }; @@ -102,15 +120,46 @@ const renderWithLinks = (key: string, val: string, links: Record{val} ); -const getStyles = (theme: GrafanaTheme2) => ({ - infoWrap: css` - padding: 8px; - th { +const getStyles = (theme: GrafanaTheme2) => { + const bg = theme.isDark ? theme.v1.palette.dark2 : theme.v1.palette.white; + const headerBg = theme.isDark ? theme.v1.palette.dark9 : theme.v1.palette.gray5; + const tableBgOdd = theme.isDark ? theme.v1.palette.dark3 : theme.v1.palette.gray6; + + return { + wrapper: css` + background: ${bg}; + border: 1px solid ${headerBg}; + border-radius: ${theme.shape.borderRadius(2)}; + `, + header: css` + background: ${headerBg}; + padding: 6px 10px; + display: flex; + `, + title: css` font-weight: ${theme.typography.fontWeightMedium}; - padding: ${theme.spacing(0.25, 2)}; - } - `, - highlight: css` - background: ${theme.colors.action.hover}; - `, -}); + padding-right: ${theme.spacing(2)}; + overflow: hidden; + display: inline-block; + white-space: nowrap; + text-overflow: ellipsis; + flex-grow: 1; + `, + infoWrap: css` + padding: 8px; + th { + font-weight: ${theme.typography.fontWeightMedium}; + padding: ${theme.spacing(0.25, 2)}; + } + tr { + background-color: ${theme.colors.background.primary}; + &:nth-child(even) { + background-color: ${tableBgOdd}; + } + } + `, + highlight: css` + background: ${theme.colors.action.hover}; + `, + }; +}; diff --git a/public/app/plugins/panel/heatmap/HeatmapPanel.tsx b/public/app/plugins/panel/heatmap/HeatmapPanel.tsx index 73f3f9eb0b3..5c80756f07d 100644 --- a/public/app/plugins/panel/heatmap/HeatmapPanel.tsx +++ b/public/app/plugins/panel/heatmap/HeatmapPanel.tsx @@ -212,6 +212,7 @@ export const HeatmapPanel: React.FC = ({ width: '100%', display: 'flex', justifyContent: 'flex-end', + paddingBottom: '6px', }} >