Stat/Gauge/BarGauge: shows default cursor when missing links (#24284)
* Stat/Gauge/BarGauge: shows default cursor when missing links * Stat/Gauge/BarGauge: shows default cursor when missing links * Refactor: changes after PR comments
This commit is contained in:
@@ -7,6 +7,7 @@ import {
|
||||
DataFrame,
|
||||
DisplayValue,
|
||||
DisplayValueAlignmentFactors,
|
||||
Field,
|
||||
FieldConfig,
|
||||
FieldConfigSource,
|
||||
FieldType,
|
||||
@@ -80,6 +81,7 @@ export interface FieldDisplay {
|
||||
colIndex?: number; // The field column index
|
||||
rowIndex?: number; // only filled in when the value is from a row (ie, not a reduction)
|
||||
getLinks?: () => LinkModel[];
|
||||
hasLinks: boolean;
|
||||
}
|
||||
|
||||
export interface GetFieldDisplayValuesOptions {
|
||||
@@ -168,6 +170,7 @@ export const getFieldDisplayValues = (options: GetFieldDisplayValuesOptions): Fi
|
||||
valueRowIndex: j,
|
||||
})
|
||||
: () => [],
|
||||
hasLinks: hasLinks(field),
|
||||
});
|
||||
|
||||
if (values.length >= limit) {
|
||||
@@ -210,6 +213,7 @@ export const getFieldDisplayValues = (options: GetFieldDisplayValuesOptions): Fi
|
||||
calculatedValue: displayValue,
|
||||
})
|
||||
: () => [],
|
||||
hasLinks: hasLinks(field),
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -227,6 +231,10 @@ export const getFieldDisplayValues = (options: GetFieldDisplayValuesOptions): Fi
|
||||
return values;
|
||||
};
|
||||
|
||||
export function hasLinks(field: Field): boolean {
|
||||
return field.config?.links?.length ? field.config.links.length > 0 : false;
|
||||
}
|
||||
|
||||
export function getDisplayValueAlignmentFactors(values: FieldDisplay[]): DisplayValueAlignmentFactors {
|
||||
const info: DisplayValueAlignmentFactors = {
|
||||
title: '',
|
||||
@@ -287,6 +295,7 @@ function createNoValuesFieldDisplay(options: GetFieldDisplayValuesOptions): Fiel
|
||||
numeric: 0,
|
||||
color: display.color,
|
||||
},
|
||||
hasLinks: false,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -5,15 +5,16 @@ import { linkModelToContextMenuItems } from '../../utils/dataLinks';
|
||||
import { css } from 'emotion';
|
||||
|
||||
interface DataLinksContextMenuProps {
|
||||
children: (props: { openMenu?: React.MouseEventHandler<HTMLElement>; targetClassName?: string }) => JSX.Element;
|
||||
links?: () => LinkModel[];
|
||||
children: (props: DataLinksContextMenuApi) => JSX.Element;
|
||||
links: () => LinkModel[];
|
||||
}
|
||||
|
||||
export interface DataLinksContextMenuApi {
|
||||
openMenu?: React.MouseEventHandler<HTMLElement>;
|
||||
targetClassName?: string;
|
||||
}
|
||||
|
||||
export const DataLinksContextMenu: React.FC<DataLinksContextMenuProps> = ({ children, links }) => {
|
||||
if (!links) {
|
||||
return children({});
|
||||
}
|
||||
|
||||
const getDataLinksContextMenuItems = () => {
|
||||
return [{ items: linkModelToContextMenuItems(links), label: 'Data links' }];
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user