Explore: Add typings for queryTransaction.request (#18847)

This commit is contained in:
Andrej Ocenas
2019-09-03 22:04:33 +02:00
committed by GitHub
parent 0cbbb43222
commit e0e3a4db54
3 changed files with 19 additions and 17 deletions

View File

@@ -12,12 +12,13 @@ import {
LogRowModel,
LogsModel,
LogsDedupStrategy,
DefaultTimeZone,
} from '@grafana/data';
import { renderUrl } from 'app/core/utils/url';
import store from 'app/core/store';
import { getNextRefIdChar } from './query';
// Types
import { DataQuery, DataSourceApi, DataQueryError } from '@grafana/ui';
import { DataQuery, DataSourceApi, DataQueryError, DataQueryRequest } from '@grafana/ui';
import {
ExploreUrlState,
HistoryItem,
@@ -49,7 +50,6 @@ export const lastUsedDatasourceKeyForOrgId = (orgId: number) => `${LAST_USED_DAT
/**
* Returns an Explore-URL that contains a panel's queries and the dashboard time range.
*
* @param panel Origin panel of the jump to Explore
* @param panelTargets The origin panel's query targets
* @param panelDatasource The origin panel's datasource
* @param datasourceSrv Datasource service to query other datasources in case the panel datasource is mixed
@@ -107,19 +107,23 @@ export function buildQueryTransaction(
return combinedKey;
}, '');
// Clone range for query request
// const queryRange: RawTimeRange = { ...range };
// const { from, to, raw } = this.timeSrv.timeRange();
// Most datasource is using `panelId + query.refId` for cancellation logic.
// Using `format` here because it relates to the view panel that the request is for.
// However, some datasources don't use `panelId + query.refId`, but only `panelId`.
// Therefore panel id has to be unique.
const panelId = `${key}`;
const options = {
const request: DataQueryRequest = {
dashboardId: 0,
// TODO probably should be taken from preferences but does not seem to be used anyway.
timezone: DefaultTimeZone,
// This is set to correct time later on before the query is actually run.
startTime: 0,
interval,
intervalMs,
panelId,
// TODO: the query request expects number and we are using string here. Seems like it works so far but can create
// issues down the road.
panelId: panelId as any,
targets: configuredQueries, // Datasources rely on DataQueries being passed under the targets key.
range,
requestId: 'explore',
@@ -133,7 +137,7 @@ export function buildQueryTransaction(
return {
queries,
options,
request,
scanning,
id: generateKey(), // reusing for unique ID
done: false,

View File

@@ -19,7 +19,7 @@ import {
updateHistory,
} from 'app/core/utils/explore';
// Types
import { ThunkResult, ExploreUrlState } from 'app/types';
import { ThunkResult, ExploreUrlState, ExploreItemState } from 'app/types';
import { DataSourceApi, DataQuery, DataSourceSelectItem, QueryFixAction, PanelData } from '@grafana/ui';
import {
@@ -31,7 +31,7 @@ import {
isDateTime,
dateTimeForTimeZone,
} from '@grafana/data';
import { ExploreId, ExploreUIState, QueryTransaction, ExploreMode } from 'app/types/explore';
import { ExploreId, ExploreUIState, ExploreMode } from 'app/types/explore';
import {
updateDatasourceInstanceAction,
changeQueryAction,
@@ -466,7 +466,7 @@ export function runQueries(exploreId: ExploreId): ThunkResult<void> {
dispatch(queryStartAction({ exploreId }));
queryState
.execute(datasourceInstance, transaction.options)
.execute(datasourceInstance, transaction.request)
.then((response: PanelData) => {
if (!response.error) {
// Side-effect: Saving history in localstorage
@@ -493,7 +493,7 @@ export function runQueries(exploreId: ExploreId): ThunkResult<void> {
dispatch(
queryEndedAction({
exploreId,
response: { error, legacy: [], series: [], request: transaction.options, state: LoadingState.Error },
response: { error, legacy: [], series: [], request: transaction.request, state: LoadingState.Error },
})
);
});
@@ -649,12 +649,9 @@ export function splitOpen(): ThunkResult<void> {
const leftState = getState().explore[ExploreId.left];
const queryState = getState().location.query[ExploreId.left] as string;
const urlState = parseUrlState(queryState);
const queryTransactions: QueryTransaction[] = [];
const itemState = {
const itemState: ExploreItemState = {
...leftState,
queryTransactions,
queries: leftState.queries.slice(),
exploreId: ExploreId.right,
urlState,
};
dispatch(splitOpenAction({ itemState }));

View File

@@ -6,6 +6,7 @@ import {
QueryHint,
ExploreStartPageProps,
PanelData,
DataQueryRequest,
} from '@grafana/ui';
import {
@@ -338,7 +339,7 @@ export interface QueryTransaction {
error?: string | JSX.Element;
hints?: QueryHint[];
latency: number;
options: any;
request: DataQueryRequest;
queries: DataQuery[];
result?: any; // Table model / Timeseries[] / Logs
scanning?: boolean;