D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
usr
/
share
/
grafana
/
public
/
app
/
features
/
dashboard
/
dashgrid
/
PanelHeader
/
Filename :
PanelHeaderTitleItems.tsx
back
Copy
import { css, cx } from '@emotion/css'; import React from 'react'; import { PanelData, GrafanaTheme2, PanelModel, LinkModel, AlertState, DataLink } from '@grafana/data'; import { Icon, PanelChrome, Tooltip, useStyles2, TimePickerTooltip } from '@grafana/ui'; import { PanelLinks } from '../PanelLinks'; import { PanelHeaderNotices } from './PanelHeaderNotices'; export interface Props { alertState?: string; data: PanelData; panelId: number; onShowPanelLinks?: () => Array<LinkModel<PanelModel>>; panelLinks?: DataLink[]; } export function PanelHeaderTitleItems(props: Props) { const { alertState, data, panelId, onShowPanelLinks, panelLinks } = props; const styles = useStyles2(getStyles); // panel health const alertStateItem = ( <Tooltip content={`alerting is ${alertState}`}> <PanelChrome.TitleItem className={cx({ [styles.ok]: alertState === AlertState.OK, [styles.pending]: alertState === AlertState.Pending, [styles.alerting]: alertState === AlertState.Alerting, })} > <Icon name={alertState === 'alerting' ? 'heart-break' : 'heart'} className="panel-alert-icon" size="md" /> </PanelChrome.TitleItem> </Tooltip> ); const timeshift = ( <> {data.request && data.request.timeInfo && ( <Tooltip content={<TimePickerTooltip timeRange={data.request?.range} timeZone={data.request?.timezone} />}> <PanelChrome.TitleItem className={styles.timeshift}> <Icon name="clock-nine" size="md" /> {data.request?.timeInfo} </PanelChrome.TitleItem> </Tooltip> )} </> ); return ( <> {panelLinks && panelLinks.length > 0 && onShowPanelLinks && ( <PanelLinks onShowPanelLinks={onShowPanelLinks} panelLinks={panelLinks} /> )} {<PanelHeaderNotices panelId={panelId} frames={data.series} />} {timeshift} {alertState && alertStateItem} </> ); } const getStyles = (theme: GrafanaTheme2) => { return { ok: css({ color: theme.colors.success.text, }), pending: css({ color: theme.colors.warning.text, }), alerting: css({ color: theme.colors.error.text, }), timeshift: css({ color: theme.colors.text.link, gap: theme.spacing(0.5), whiteSpace: 'nowrap', '&:hover': { color: theme.colors.emphasize(theme.colors.text.link, 0.03), }, }), }; };