D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
self
/
root
/
usr
/
share
/
grafana
/
public
/
app
/
features
/
variables
/
pickers
/
Filename :
PickerRenderer.tsx
back
Copy
import React, { PropsWithChildren, ReactElement, useMemo } from 'react'; import { selectors } from '@grafana/e2e-selectors'; import { Tooltip } from '@grafana/ui'; import { variableAdapters } from '../adapters'; import { VARIABLE_PREFIX } from '../constants'; import { VariableHide, VariableModel } from '../types'; interface Props { variable: VariableModel; readOnly?: boolean; } export const PickerRenderer = (props: Props) => { const PickerToRender = useMemo(() => variableAdapters.get(props.variable.type).picker, [props.variable]); if (!props.variable) { return <div>Couldn't load variable</div>; } return ( <div className="gf-form"> <PickerLabel variable={props.variable} /> {props.variable.hide !== VariableHide.hideVariable && PickerToRender && ( <PickerToRender variable={props.variable} readOnly={props.readOnly ?? false} /> )} </div> ); }; function PickerLabel({ variable }: PropsWithChildren<Props>): ReactElement | null { const labelOrName = useMemo(() => variable.label || variable.name, [variable]); if (variable.hide !== VariableHide.dontHide) { return null; } const elementId = VARIABLE_PREFIX + variable.id; if (variable.description) { return ( <Tooltip content={variable.description} placement={'bottom'}> <label className="gf-form-label gf-form-label--variable" data-testid={selectors.pages.Dashboard.SubMenu.submenuItemLabels(labelOrName)} htmlFor={elementId} > {labelOrName} </label> </Tooltip> ); } return ( <label className="gf-form-label gf-form-label--variable" data-testid={selectors.pages.Dashboard.SubMenu.submenuItemLabels(labelOrName)} htmlFor={elementId} > {labelOrName} </label> ); }