mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
* add support for code editor and builder * refactor cloudwatch migration * Add tooltip to editor field (#56) * add tooltip * add old tooltips * Bug bash feedback fixes (#58) * make ASC the default option * update sql preview whenever sql changes * don't allow queries without aggregation * set default value for aggregation * use new input field * cleanup * pr feedback * prevent unnecessary rerenders * use frame error instead of main error * remove not used snapshot * Use dimension filter in schema picker (#63) * use dimension key filter in group by and schema labels * add dimension filter also to code editor * add tests * fix build error * fix strict error * remove debug code * fix annotation editor (#64) * fix annotation editor * fix broken test * revert annotation backend change * PR feedback (#67) * pr feedback * removed dimension filter from group by * add spacing between common fields and rest * do not generate deep link for metric queries (#70) * update docs (#69) Co-authored-by: Erik Sundell <erik.sundell87@gmail.com> * fix lint problem caused by merge conflict Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
64 lines
2.0 KiB
TypeScript
64 lines
2.0 KiB
TypeScript
import React, { PureComponent } from 'react';
|
|
import { pick } from 'lodash';
|
|
import { QueryEditorProps, ExploreMode } from '@grafana/data';
|
|
import { Segment } from '@grafana/ui';
|
|
import { CloudWatchJsonData, CloudWatchQuery } from '../types';
|
|
import { CloudWatchDatasource } from '../datasource';
|
|
import { QueryInlineField } from './';
|
|
import { MetricsQueryEditor } from './MetricsQueryEditor';
|
|
import LogsQueryEditor from './LogsQueryEditor';
|
|
|
|
export type Props = QueryEditorProps<CloudWatchDatasource, CloudWatchQuery, CloudWatchJsonData>;
|
|
|
|
const apiModes = {
|
|
Metrics: { label: 'CloudWatch Metrics', value: 'Metrics' },
|
|
Logs: { label: 'CloudWatch Logs', value: 'Logs' },
|
|
};
|
|
|
|
export class PanelQueryEditor extends PureComponent<Props> {
|
|
render() {
|
|
const { query } = this.props;
|
|
const apiMode = query.queryMode ?? 'Metrics';
|
|
|
|
return (
|
|
<>
|
|
{/* TODO: Remove this in favor of the QueryHeader */}
|
|
{apiMode === ExploreMode.Logs && (
|
|
<QueryInlineField label="Query Mode">
|
|
<Segment
|
|
value={apiModes[apiMode]}
|
|
options={Object.values(apiModes)}
|
|
onChange={({ value }) => {
|
|
const newMode = (value as 'Metrics' | 'Logs') ?? 'Metrics';
|
|
if (newMode !== apiModes[apiMode].value) {
|
|
const commonProps = pick(
|
|
query,
|
|
'id',
|
|
'region',
|
|
'namespace',
|
|
'refId',
|
|
'hide',
|
|
'key',
|
|
'queryType',
|
|
'datasource'
|
|
);
|
|
|
|
this.props.onChange({
|
|
...commonProps,
|
|
queryMode: newMode,
|
|
} as CloudWatchQuery);
|
|
}
|
|
}}
|
|
/>
|
|
</QueryInlineField>
|
|
)}
|
|
{apiMode === ExploreMode.Logs ? (
|
|
<LogsQueryEditor {...this.props} allowCustomValue />
|
|
) : (
|
|
<MetricsQueryEditor {...this.props} />
|
|
)}
|
|
</>
|
|
);
|
|
}
|
|
}
|