import { css } from '@emotion/css'; import React from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { Button, Card, useStyles2 } from '@grafana/ui'; import { RawQuery } from 'app/plugins/datasource/prometheus/querybuilder/shared/RawQuery'; import promqlGrammar from '../promql'; import { promQueryModeller } from './PromQueryModeller'; import { PromQueryPattern } from './types'; type Props = { pattern: PromQueryPattern; hasNewQueryOption: boolean; hasPreviousQuery: boolean | string; selectedPatternName: string | null; setSelectedPatternName: (name: string | null) => void; onPatternSelect: (pattern: PromQueryPattern, selectAsNewQuery?: boolean) => void; }; export const QueryPattern = (props: Props) => { const { pattern, onPatternSelect, hasNewQueryOption, hasPreviousQuery, selectedPatternName, setSelectedPatternName } = props; const styles = useStyles2(getStyles); const lang = { grammar: promqlGrammar, name: 'promql' }; return ( {pattern.name}
{selectedPatternName !== pattern.name ? ( ) : ( <>
{`If you would like to use this query, ${ hasNewQueryOption ? 'you can either apply this query pattern or create a new query' : 'this query pattern will be applied to your current query' }.`}
{hasNewQueryOption && ( )} )}
); }; const getStyles = (theme: GrafanaTheme2) => { return { card: css` width: 49.5%; display: flex; flex-direction: column; `, rawQueryContainer: css` flex-grow: 1; `, rawQuery: css` background-color: ${theme.colors.background.primary}; padding: ${theme.spacing(1)}; margin-top: ${theme.spacing(1)}; `, spacing: css` margin-bottom: ${theme.spacing(1)}; `, }; };