import React, { FC } from 'react'; import { cx } from 'emotion'; import { DataLink, PanelData } from '@grafana/data'; import { Icon } from '@grafana/ui'; import { selectors } from '@grafana/e2e-selectors'; import PanelHeaderCorner from './PanelHeaderCorner'; import { DashboardModel } from 'app/features/dashboard/state/DashboardModel'; import { PanelModel } from 'app/features/dashboard/state/PanelModel'; import { getPanelLinksSupplier } from 'app/features/panel/panellinks/linkSuppliers'; import { PanelHeaderNotices } from './PanelHeaderNotices'; import { PanelHeaderMenuTrigger } from './PanelHeaderMenuTrigger'; import { PanelHeaderLoadingIndicator } from './PanelHeaderLoadingIndicator'; import { PanelHeaderMenuWrapper } from './PanelHeaderMenuWrapper'; export interface Props { panel: PanelModel; dashboard: DashboardModel; title?: string; description?: string; links?: DataLink[]; error?: string; alertState?: string; isViewing: boolean; isEditing: boolean; data: PanelData; } export const PanelHeader: FC = ({ panel, error, isViewing, isEditing, data, alertState, dashboard }) => { const onCancelQuery = () => panel.getQueryRunner().cancelQuery(); const title = panel.replaceVariables(panel.title, {}, 'text'); const className = cx('panel-header', !(isViewing || isEditing) ? 'grid-drag-handle' : ''); return ( <>
{({ closeMenu, panelMenuOpen }) => { return (
{panel.libraryPanel && } {alertState ? ( ) : null} {title} {data.request && data.request.timeInfo && ( {data.request.timeInfo} )}
); }}
); };