From ae7f0aeb7a47625bf5e3453e38da0e18ffd73126 Mon Sep 17 00:00:00 2001 From: kay delaney <45561153+kaydelaney@users.noreply.github.com> Date: Mon, 11 May 2020 17:43:53 +0100 Subject: [PATCH] Datasource/CloudWatch: Switch to metrics mode, logs API, when choosing stats query from cheatsheet (#24398) * Datasource/CloudWatch: Switch to metrics mode, logs API, when choosing stats query from cheatsheet --- packages/grafana-data/src/types/datasource.ts | 1 + public/app/features/explore/Explore.tsx | 1 + .../cloudwatch/components/LogsCheatSheet.tsx | 49 ++++++++++++++++--- 3 files changed, 44 insertions(+), 7 deletions(-) diff --git a/packages/grafana-data/src/types/datasource.ts b/packages/grafana-data/src/types/datasource.ts index 081eeb269de..ddc73f45568 100644 --- a/packages/grafana-data/src/types/datasource.ts +++ b/packages/grafana-data/src/types/datasource.ts @@ -340,6 +340,7 @@ export interface ExploreStartPageProps { datasource?: DataSourceApi; exploreMode: ExploreMode; onClickExample: (query: DataQuery) => void; + exploreId?: any; } /** diff --git a/public/app/features/explore/Explore.tsx b/public/app/features/explore/Explore.tsx index 3c13c78acd2..be4287ceae7 100644 --- a/public/app/features/explore/Explore.tsx +++ b/public/app/features/explore/Explore.tsx @@ -342,6 +342,7 @@ export class Explore extends React.PureComponent { onClickExample={this.onClickExample} datasource={datasourceInstance} exploreMode={mode} + exploreId={exploreId} /> )} diff --git a/public/app/plugins/datasource/cloudwatch/components/LogsCheatSheet.tsx b/public/app/plugins/datasource/cloudwatch/components/LogsCheatSheet.tsx index 5ed4c8d2e62..5cfd2af5e93 100644 --- a/public/app/plugins/datasource/cloudwatch/components/LogsCheatSheet.tsx +++ b/public/app/plugins/datasource/cloudwatch/components/LogsCheatSheet.tsx @@ -1,10 +1,13 @@ import React, { PureComponent } from 'react'; import { stripIndent, stripIndents } from 'common-tags'; -import { ExploreStartPageProps, DataQuery, ExploreMode } from '@grafana/data'; +import { ExploreStartPageProps, ExploreMode } from '@grafana/data'; import Prism from 'prismjs'; import tokenizer from '../syntax'; import { flattenTokens } from '@grafana/ui/src/slate-plugins/slate-prism'; import { css, cx } from 'emotion'; +import { CloudWatchLogsQuery } from '../types'; +import { changeModeAction } from 'app/features/explore/state/actionTypes'; +import { dispatch } from 'app/store/store'; interface QueryExample { category: string; @@ -214,14 +217,33 @@ const exampleCategory = css` `; export default class LogsCheatSheet extends PureComponent { - renderExpression(expr: string, keyPrefix: string) { - const { onClickExample } = this.props; + switchToMetrics = (query: CloudWatchLogsQuery) => { + const { onClickExample, exploreId } = this.props; + const nextQuery: CloudWatchLogsQuery = { + ...(query as CloudWatchLogsQuery), + apiMode: 'Logs', + queryMode: 'Logs', + }; + + dispatch(changeModeAction({ exploreId, mode: ExploreMode.Metrics })); + onClickExample(nextQuery); + }; + + onClickExample(query: CloudWatchLogsQuery) { + if (query.expression.includes('stats')) { + this.switchToMetrics(query); + } else { + this.props.onClickExample(query); + } + } + + renderExpression(expr: string, keyPrefix: string) { return (
onClickExample({ refId: 'A', expression: expr } as DataQuery)} + onClick={e => this.onClickExample({ refId: 'A', expression: expr } as CloudWatchLogsQuery)} >
{renderHighlightedMarkup(expr, keyPrefix)}
@@ -248,8 +270,21 @@ export default class LogsCheatSheet extends PureComponent +

CloudWatch Logs Cheat Sheet

+ {CLIQ_EXAMPLES.map(cat => ( +
+
{cat.category}
+ {cat.examples.map((item, i) => ( +
+

{item.title}

+ {this.renderExpression(item.expr, `item-${i}`)} +
+ ))} +
+ ))} + + ); } }