import { css } from '@emotion/css'; import { GrafanaTheme2 } from '@grafana/data'; import { RawQuery } from '@grafana/plugin-ui'; import { Button, Card, useStyles2 } from '@grafana/ui'; import logqlGrammar from '../../syntax'; import { lokiQueryModeller } from '../LokiQueryModeller'; import { LokiQueryPattern } from '../types'; type Props = { pattern: LokiQueryPattern; hasNewQueryOption: boolean; hasPreviousQuery: boolean; selectedPatternName: string | null; setSelectedPatternName: (name: string | null) => void; onPatternSelect: (pattern: LokiQueryPattern, selectAsNewQuery?: boolean) => void; }; export const QueryPattern = (props: Props) => { const { pattern, onPatternSelect, hasNewQueryOption, hasPreviousQuery, selectedPatternName, setSelectedPatternName } = props; const styles = useStyles2(getStyles); const lang = { grammar: logqlGrammar, name: 'logql' }; return ( {pattern.name}
{selectedPatternName !== pattern.name ? ( ) : ( <>
{`If you would like to use this query, ${ hasNewQueryOption ? 'you can either replace your current query or create a new query' : 'your current query will be replaced' }.`}
{hasNewQueryOption && ( )} )}
); }; const getStyles = (theme: GrafanaTheme2) => { return { card: css({ width: '49.5%', display: 'flex', flexDirection: 'column', }), rawQueryContainer: css({ flexGrow: 1, }), rawQuery: css({ backgroundColor: theme.colors.background.primary, padding: theme.spacing(1), marginTop: theme.spacing(1), }), spacing: css({ marginBottom: theme.spacing(1), }), }; };