import { css } from '@emotion/css'; import { GrafanaTheme2 } from '@grafana/data'; import { selectors } from '@grafana/e2e-selectors'; import { Trans } from '@grafana/i18n'; import { locationService } from '@grafana/runtime'; import { Button, useStyles2, Text, Box, Stack } from '@grafana/ui'; import { DashboardModel } from 'app/features/dashboard/state/DashboardModel'; import { onAddLibraryPanel as onAddLibraryPanelImpl, onCreateNewPanel, onImportDashboard, } from 'app/features/dashboard/utils/dashboard'; import { buildPanelEditScene } from 'app/features/dashboard-scene/panel-edit/PanelEditor'; import { DashboardScene } from 'app/features/dashboard-scene/scene/DashboardScene'; import { DashboardInteractions } from 'app/features/dashboard-scene/utils/interactions'; import { useDispatch, useSelector } from 'app/types'; import { setInitialDatasource } from '../state/reducers'; export interface Props { dashboard: DashboardModel | DashboardScene; canCreate: boolean; } const DashboardEmpty = ({ dashboard, canCreate }: Props) => { const styles = useStyles2(getStyles); const dispatch = useDispatch(); const initialDatasource = useSelector((state) => state.dashboard.initialDatasource); const onAddVisualization = () => { let id; if (dashboard instanceof DashboardScene) { const panel = dashboard.onCreateNewPanel(); dashboard.setState({ editPanel: buildPanelEditScene(panel, true) }); locationService.partial({ firstPanel: true }); } else { id = onCreateNewPanel(dashboard, initialDatasource); dispatch(setInitialDatasource(undefined)); locationService.partial({ editPanel: id, firstPanel: true }); } DashboardInteractions.emptyDashboardButtonClicked({ item: 'add_visualization' }); }; const onAddLibraryPanel = () => { DashboardInteractions.emptyDashboardButtonClicked({ item: 'import_from_library' }); if (dashboard instanceof DashboardScene) { dashboard.onShowAddLibraryPanelDrawer(); } else { onAddLibraryPanelImpl(dashboard); } }; const isProvisioned = dashboard instanceof DashboardScene && dashboard.isManagedRepository(); return (
Start your new dashboard by adding a visualization Select a data source and then query and visualize your data with charts, stats and tables or create lists, markdowns and other widgets. Import panel Add visualizations that are shared with other dashboards. Import a dashboard Import dashboards from files or grafana.com.
); }; export default DashboardEmpty; function getStyles(theme: GrafanaTheme2) { return { wrapper: css({ label: 'dashboard-empty-wrapper', flexDirection: 'column', maxWidth: '890px', gap: theme.spacing.gridSize * 4, paddingTop: theme.spacing(2), [theme.breakpoints.up('sm')]: { paddingTop: theme.spacing(12), }, }), }; }