From 4d0204d0126723cbf759d978845c8faddf48e54a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Thu, 31 Mar 2022 10:14:13 +0200 Subject: [PATCH] Prometheus: Highlight run query after changing query (#47043) * Prometheus: Highlight run query after changing query * fixed ts issue * Updated --- .../querybuilder/PromQueryModeller.ts | 8 ++-- .../components/PromQueryEditorSelector.tsx | 38 +++++++++---------- 2 files changed, 21 insertions(+), 25 deletions(-) diff --git a/public/app/plugins/datasource/prometheus/querybuilder/PromQueryModeller.ts b/public/app/plugins/datasource/prometheus/querybuilder/PromQueryModeller.ts index 0a440bf22f8..558e7e52a15 100644 --- a/public/app/plugins/datasource/prometheus/querybuilder/PromQueryModeller.ts +++ b/public/app/plugins/datasource/prometheus/querybuilder/PromQueryModeller.ts @@ -32,14 +32,14 @@ export class PromQueryModeller extends LokiAndPromQueryModellerBase { { name: 'Rate then sum', operations: [ - { id: 'rate', params: ['auto'] }, + { id: 'rate', params: ['$__rate_interval'] }, { id: 'sum', params: [] }, ], }, { name: 'Rate then sum by(label) then avg', operations: [ - { id: 'rate', params: ['auto'] }, + { id: 'rate', params: ['$__rate_interval'] }, { id: '__sum_by', params: [''] }, { id: 'avg', params: [] }, ], @@ -47,7 +47,7 @@ export class PromQueryModeller extends LokiAndPromQueryModellerBase { { name: 'Histogram quantile on rate', operations: [ - { id: 'rate', params: ['auto'] }, + { id: 'rate', params: ['$__rate_interval'] }, { id: '__sum_by', params: ['le'] }, { id: 'histogram_quantile', params: [0.95] }, ], @@ -55,7 +55,7 @@ export class PromQueryModeller extends LokiAndPromQueryModellerBase { { name: 'Histogram quantile on increase ', operations: [ - { id: 'increase', params: ['auto'] }, + { id: 'increase', params: ['$__rate_interval'] }, { id: '__max_by', params: ['le'] }, { id: 'histogram_quantile', params: [0.95] }, ], diff --git a/public/app/plugins/datasource/prometheus/querybuilder/components/PromQueryEditorSelector.tsx b/public/app/plugins/datasource/prometheus/querybuilder/components/PromQueryEditorSelector.tsx index 49a98f1b025..bfcd143c9f1 100644 --- a/public/app/plugins/datasource/prometheus/querybuilder/components/PromQueryEditorSelector.tsx +++ b/public/app/plugins/datasource/prometheus/querybuilder/components/PromQueryEditorSelector.tsx @@ -1,8 +1,7 @@ -import React, { SyntheticEvent, useCallback, useState } from 'react'; -import { css } from '@emotion/css'; -import { GrafanaTheme2, LoadingState } from '@grafana/data'; +import React, { SyntheticEvent, useCallback, useEffect, useState } from 'react'; +import { LoadingState } from '@grafana/data'; import { EditorHeader, EditorRows, FlexItem, InlineSelect, Space } from '@grafana/experimental'; -import { Button, ConfirmModal, useStyles2 } from '@grafana/ui'; +import { Button, ConfirmModal } from '@grafana/ui'; import { PromQueryEditorProps } from '../../components/types'; import { promQueryModeller } from '../PromQueryModeller'; import { QueryEditorModeToggle } from '../shared/QueryEditorModeToggle'; @@ -14,11 +13,13 @@ import { PromQueryCodeEditor } from './PromQueryCodeEditor'; import { PromQueryBuilderContainer } from './PromQueryBuilderContainer'; import { PromQueryBuilderOptions } from './PromQueryBuilderOptions'; import { changeEditorMode, getQueryWithDefaults } from '../state'; +import { PromQuery } from '../../types'; export const PromQueryEditorSelector = React.memo((props) => { const { onChange, onRunQuery, data } = props; - const styles = useStyles2(getStyles); const [parseModalOpen, setParseModalOpen] = useState(false); + const [dataIsStale, setDataIsStale] = useState(false); + const query = getQueryWithDefaults(props.query, props.app); const editorMode = query.editorMode!; @@ -37,12 +38,21 @@ export const PromQueryEditorSelector = React.memo((props) [onChange, query] ); + useEffect(() => { + setDataIsStale(false); + }, [data]); + const onQueryPreviewChange = (event: SyntheticEvent) => { const isEnabled = event.currentTarget.checked; onChange({ ...query, editorPreview: isEnabled }); onRunQuery(); }; + const onChangeInternal = (query: PromQuery) => { + setDataIsStale(true); + onChange(query); + }; + return ( <> ((props)