update hidden fields style

pull/106857/head
Adela Almasan 3 days ago
parent 5033074704
commit 863fbea903
  1. 20
      packages/grafana-ui/src/components/VizTooltip/VizTooltipColorIndicator.tsx
  2. 3
      packages/grafana-ui/src/components/VizTooltip/VizTooltipContent.tsx
  3. 9
      packages/grafana-ui/src/components/VizTooltip/VizTooltipRow.tsx
  4. 1
      packages/grafana-ui/src/components/VizTooltip/types.ts
  5. 44
      packages/grafana-ui/src/components/VizTooltip/utils.ts
  6. 13
      public/app/plugins/panel/timeseries/TimeSeriesTooltip.tsx

@ -3,7 +3,7 @@ import { css, cx } from '@emotion/css';
import { FALLBACK_COLOR, GrafanaTheme2 } from '@grafana/data'; import { FALLBACK_COLOR, GrafanaTheme2 } from '@grafana/data';
import { LineStyle } from '@grafana/schema'; import { LineStyle } from '@grafana/schema';
import { useStyles2 } from '../../themes/ThemeContext'; import { useStyles2, useTheme2 } from '../../themes/ThemeContext';
import { SeriesIcon } from '../VizLegend/SeriesIcon'; import { SeriesIcon } from '../VizLegend/SeriesIcon';
import { ColorIndicator, DEFAULT_COLOR_INDICATOR } from './types'; import { ColorIndicator, DEFAULT_COLOR_INDICATOR } from './types';
@ -19,6 +19,7 @@ interface Props {
colorIndicator?: ColorIndicator; colorIndicator?: ColorIndicator;
position?: ColorIndicatorPosition; position?: ColorIndicatorPosition;
lineStyle?: LineStyle; lineStyle?: LineStyle;
isHidden?: boolean; // for hidden metadata
} }
export type ColorIndicatorStyles = ReturnType<typeof getStyles>; export type ColorIndicatorStyles = ReturnType<typeof getStyles>;
@ -28,8 +29,19 @@ export const VizTooltipColorIndicator = ({
colorIndicator = DEFAULT_COLOR_INDICATOR, colorIndicator = DEFAULT_COLOR_INDICATOR,
position = ColorIndicatorPosition.Leading, position = ColorIndicatorPosition.Leading,
lineStyle, lineStyle,
isHidden,
}: Props) => { }: Props) => {
const styles = useStyles2(getStyles); const styles = useStyles2(getStyles);
const theme = useTheme2();
if (isHidden) {
return (
<div
style={{ border: `1px solid ${color}`, borderRadius: theme.shape.radius.pill }}
className={cx(position === ColorIndicatorPosition.Leading ? styles.leading : styles.trailing, styles.container)}
/>
);
}
if (colorIndicator === ColorIndicator.series) { if (colorIndicator === ColorIndicator.series) {
return ( return (
@ -89,4 +101,10 @@ const getStyles = (theme: GrafanaTheme2) => ({
borderRadius: theme.shape.radius.circle, borderRadius: theme.shape.radius.circle,
minWidth: '12px', minWidth: '12px',
}), }),
container: css({
marginRight: '8px',
display: 'inline-block',
width: '14px',
height: '4px',
}),
}); });

@ -34,7 +34,7 @@ export const VizTooltipContent = ({
return ( return (
<div className={styles.wrapper} style={scrollableStyle}> <div className={styles.wrapper} style={scrollableStyle}>
{items.map(({ label, value, color, colorIndicator, colorPlacement, isActive, lineStyle }, i) => ( {items.map(({ label, value, color, colorIndicator, colorPlacement, isActive, lineStyle, isHidden }, i) => (
<VizTooltipRow <VizTooltipRow
key={i} key={i}
label={label} label={label}
@ -47,6 +47,7 @@ export const VizTooltipContent = ({
isPinned={isPinned} isPinned={isPinned}
lineStyle={lineStyle} lineStyle={lineStyle}
showValueScroll={!scrollable} showValueScroll={!scrollable}
isHidden={isHidden}
/> />
))} ))}
{children} {children}

@ -18,6 +18,7 @@ interface VizTooltipRowProps extends Omit<VizTooltipItem, 'value'> {
marginRight?: string; marginRight?: string;
isPinned: boolean; isPinned: boolean;
showValueScroll?: boolean; showValueScroll?: boolean;
isHidden?: boolean; // for hidden series
} }
enum LabelValueTypes { enum LabelValueTypes {
@ -41,6 +42,7 @@ export const VizTooltipRow = ({
isPinned, isPinned,
lineStyle, lineStyle,
showValueScroll, showValueScroll,
isHidden,
}: VizTooltipRowProps) => { }: VizTooltipRowProps) => {
const styles = useStyles2(getStyles, justify, marginRight); const styles = useStyles2(getStyles, justify, marginRight);
@ -132,7 +134,12 @@ export const VizTooltipRow = ({
{(color || label) && ( {(color || label) && (
<div className={styles.valueWrapper}> <div className={styles.valueWrapper}>
{color && colorPlacement === ColorPlacement.first && ( {color && colorPlacement === ColorPlacement.first && (
<VizTooltipColorIndicator color={color} colorIndicator={colorIndicator} lineStyle={lineStyle} /> <VizTooltipColorIndicator
color={color}
colorIndicator={colorIndicator}
lineStyle={lineStyle}
isHidden={isHidden}
/>
)} )}
{!isPinned ? ( {!isPinned ? (
<div className={cx(styles.label, isActive && styles.activeSeries)}>{label}</div> <div className={cx(styles.label, isActive && styles.activeSeries)}>{label}</div>

@ -27,6 +27,7 @@ export interface VizTooltipItem {
colorPlacement?: ColorPlacement; colorPlacement?: ColorPlacement;
isActive?: boolean; isActive?: boolean;
lineStyle?: LineStyle; lineStyle?: LineStyle;
isHidden?: boolean;
// internal/tmp for sorting // internal/tmp for sorting
numeric?: number; numeric?: number;

@ -80,7 +80,8 @@ export const getContentItems = (
mode: TooltipDisplayMode, mode: TooltipDisplayMode,
sortOrder: SortOrder, sortOrder: SortOrder,
fieldFilter = (field: Field) => true, fieldFilter = (field: Field) => true,
hideZeros = false hideZeros = false,
_restFields?: Field[]
): VizTooltipItem[] => { ): VizTooltipItem[] => {
let rows: VizTooltipItem[] = []; let rows: VizTooltipItem[] = [];
@ -129,15 +130,7 @@ export const getContentItems = (
? Number.MIN_SAFE_INTEGER ? Number.MIN_SAFE_INTEGER
: Number.MAX_SAFE_INTEGER; : Number.MAX_SAFE_INTEGER;
const colorMode = getFieldColorModeForField(field); const { colorIndicator, colorPlacement } = getIndicatorAndPlacement(field);
let colorIndicator = ColorIndicator.series;
let colorPlacement = ColorPlacement.first;
if (colorMode.isByValue) {
colorIndicator = ColorIndicator.value;
colorPlacement = ColorPlacement.trailing;
}
rows.push({ rows.push({
label: field.state?.displayName ?? field.name, label: field.state?.displayName ?? field.name,
@ -151,6 +144,23 @@ export const getContentItems = (
}); });
} }
_restFields?.forEach((field) => {
if (!field.config.custom?.hideFrom?.tooltip) {
const { colorIndicator, colorPlacement } = getIndicatorAndPlacement(field);
const display = field.display!(field.values[dataIdxs[0]!]);
rows.push({
label: field.state?.displayName ?? field.name,
value: formattedValueToString(display),
color: FALLBACK_COLOR,
colorIndicator,
colorPlacement,
lineStyle: field.config.custom?.lineStyle,
isHidden: true,
});
}
});
if (sortOrder !== SortOrder.None && rows.length > 1) { if (sortOrder !== SortOrder.None && rows.length > 1) {
const cmp = allNumeric ? numberCmp : stringCmp; const cmp = allNumeric ? numberCmp : stringCmp;
const mult = sortOrder === SortOrder.Descending ? -1 : 1; const mult = sortOrder === SortOrder.Descending ? -1 : 1;
@ -159,3 +169,17 @@ export const getContentItems = (
return rows; return rows;
}; };
const getIndicatorAndPlacement = (field: Field) => {
const colorMode = getFieldColorModeForField(field);
let colorIndicator = ColorIndicator.series;
let colorPlacement = ColorPlacement.first;
if (colorMode.isByValue) {
colorIndicator = ColorIndicator.value;
colorPlacement = ColorPlacement.trailing;
}
return { colorIndicator, colorPlacement };
};

@ -12,7 +12,6 @@ import {
} from '@grafana/ui/internal'; } from '@grafana/ui/internal';
import { getFieldActions } from '../status-history/utils'; import { getFieldActions } from '../status-history/utils';
import { fmt } from '../xychart/utils';
import { isTooltipScrollable } from './utils'; import { isTooltipScrollable } from './utils';
@ -68,18 +67,10 @@ export const TimeSeriesTooltip = ({
mode, mode,
sortOrder, sortOrder,
(field) => field.type === FieldType.number || field.type === FieldType.enum, (field) => field.type === FieldType.number || field.type === FieldType.enum,
hideZeros hideZeros,
_rest
); );
_rest?.forEach((field) => {
if (!field.config.custom?.hideFrom?.tooltip) {
contentItems.push({
label: field.state?.displayName ?? field.name,
value: fmt(field, field.values[dataIdxs[0]!]),
});
}
});
let footer: ReactNode; let footer: ReactNode;
if (seriesIdx != null) { if (seriesIdx != null) {

Loading…
Cancel
Save