@grafana/data#getValueFromDimension TypeScript Examples
The following examples show how to use
@grafana/data#getValueFromDimension.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: MultiModeGraphTooltip.tsx From grafana-chinese with Apache License 2.0 | 6 votes |
MultiModeGraphTooltip: React.FC<GraphTooltipContentProps & {
// We expect position to figure out correct values when not hovering over a datapoint
pos: FlotPosition;
}> = ({ dimensions, activeDimensions, pos }) => {
let activeSeriesIndex: number | null = null;
// when no x-axis provided, skip rendering
if (activeDimensions.xAxis === null) {
return null;
}
if (activeDimensions.yAxis) {
activeSeriesIndex = activeDimensions.yAxis[0];
}
// when not hovering over a point, time is undefined, and we use pos.x as time
const time = activeDimensions.xAxis[1]
? getValueFromDimension(dimensions.xAxis, activeDimensions.xAxis[0], activeDimensions.xAxis[1])
: pos.x;
const hoverInfo = getMultiSeriesGraphHoverInfo(dimensions.yAxis.columns, dimensions.xAxis.columns, time);
const timestamp = hoverInfo.time;
const series = hoverInfo.results.map((s, i) => {
return {
color: s.color,
label: s.label,
value: s.value,
isActive: activeSeriesIndex === i,
};
});
return <SeriesTable series={series} timestamp={timestamp} />;
}
Example #2
Source File: SingleModeGraphTooltip.tsx From grafana-chinese with Apache License 2.0 | 6 votes |
SingleModeGraphTooltip: React.FC<GraphTooltipContentProps> = ({ dimensions, activeDimensions }) => {
// not hovering over a point, skip rendering
if (
activeDimensions.yAxis === null ||
activeDimensions.yAxis[1] === undefined ||
activeDimensions.xAxis === null ||
activeDimensions.xAxis[1] === undefined
) {
return null;
}
const time = getValueFromDimension(dimensions.xAxis, activeDimensions.xAxis[0], activeDimensions.xAxis[1]);
const timeField = getColumnFromDimension(dimensions.xAxis, activeDimensions.xAxis[0]);
const processedTime = timeField.display ? formattedValueToString(timeField.display(time)) : time;
const valueField = getColumnFromDimension(dimensions.yAxis, activeDimensions.yAxis[0]);
const value = getValueFromDimension(dimensions.yAxis, activeDimensions.yAxis[0], activeDimensions.yAxis[1]);
const display = valueField.display ?? getDisplayProcessor({ field: valueField });
const disp = display(value);
return (
<SeriesTable
series={[
{
color: disp.color,
label: valueField.name,
value: formattedValueToString(disp),
},
]}
timestamp={processedTime}
/>
);
}
Example #3
Source File: GraphContextMenu.tsx From grafana-chinese with Apache License 2.0 | 5 votes |
GraphContextMenu: React.FC<GraphContextMenuProps> = ({
getContextMenuSource,
formatSourceDate,
items,
dimensions,
contextDimensions,
...otherProps
}) => {
const theme = useContext(ThemeContext);
const source = getContextMenuSource();
// Do not render items that do not have label specified
const itemsToRender = items
? items.map(group => ({
...group,
items: group.items.filter(item => item.label),
}))
: [];
const renderHeader = () => {
if (!source) {
return null;
}
// If dimensions supplied, we can calculate and display value
let value;
if (dimensions?.yAxis && contextDimensions?.yAxis?.[1]) {
const valueFromDimensions = getValueFromDimension(
dimensions.yAxis,
contextDimensions.yAxis[0],
contextDimensions.yAxis[1]
);
const display = source.series.valueField.display ?? getDisplayProcessor({ field: source.series.valueField });
value = display(valueFromDimensions);
}
const timeFormat = source.series.hasMsResolution ? MS_DATE_TIME_FORMAT : DEFAULT_DATE_TIME_FORMAT;
return (
<div
className={css`
padding: ${theme.spacing.xs} ${theme.spacing.sm};
font-size: ${theme.typography.size.sm};
z-index: ${theme.zIndex.tooltip};
`}
>
<strong>{formatSourceDate(source.datapoint[0], timeFormat)}</strong>
<div>
<SeriesIcon color={source.series.color} />
<span
className={css`
white-space: nowrap;
padding-left: ${theme.spacing.xs};
`}
>
{source.series.alias || source.series.label}
</span>
{value && (
<span
className={css`
white-space: nowrap;
padding-left: ${theme.spacing.md};
`}
>
{formattedValueToString(value)}
</span>
)}
</div>
</div>
);
};
return <ContextMenu {...otherProps} items={itemsToRender} renderHeader={renderHeader} />;
}