Commit 3a65e27e by Hugo Häggmark

Fixes #15739

parent 328eea3a
...@@ -39,6 +39,16 @@ export interface DataQueryError { ...@@ -39,6 +39,16 @@ export interface DataQueryError {
statusText?: string; statusText?: string;
} }
export interface ScopedVar {
text: any;
value: any;
[key: string]: any;
}
export interface ScopedVars {
[key: string]: ScopedVar;
}
export interface DataQueryOptions<TQuery extends DataQuery = DataQuery> { export interface DataQueryOptions<TQuery extends DataQuery = DataQuery> {
timezone: string; timezone: string;
range: TimeRange; range: TimeRange;
...@@ -50,7 +60,7 @@ export interface DataQueryOptions<TQuery extends DataQuery = DataQuery> { ...@@ -50,7 +60,7 @@ export interface DataQueryOptions<TQuery extends DataQuery = DataQuery> {
interval: string; interval: string;
intervalMs: number; intervalMs: number;
maxDataPoints: number; maxDataPoints: number;
scopedVars: object; scopedVars: ScopedVars;
} }
export interface QueryFix { export interface QueryFix {
......
...@@ -15,6 +15,7 @@ import { ...@@ -15,6 +15,7 @@ import {
TableData, TableData,
TimeRange, TimeRange,
TimeSeries, TimeSeries,
ScopedVars,
} from '@grafana/ui'; } from '@grafana/ui';
interface RenderProps { interface RenderProps {
...@@ -33,6 +34,7 @@ export interface Props { ...@@ -33,6 +34,7 @@ export interface Props {
refreshCounter: number; refreshCounter: number;
minInterval?: string; minInterval?: string;
maxDataPoints?: number; maxDataPoints?: number;
scopedVars?: ScopedVars;
children: (r: RenderProps) => JSX.Element; children: (r: RenderProps) => JSX.Element;
onDataResponse?: (data: DataQueryResponse) => void; onDataResponse?: (data: DataQueryResponse) => void;
onError: (message: string, error: DataQueryError) => void; onError: (message: string, error: DataQueryError) => void;
...@@ -95,6 +97,7 @@ export class DataPanel extends Component<Props, State> { ...@@ -95,6 +97,7 @@ export class DataPanel extends Component<Props, State> {
timeRange, timeRange,
widthPixels, widthPixels,
maxDataPoints, maxDataPoints,
scopedVars,
onDataResponse, onDataResponse,
onError, onError,
} = this.props; } = this.props;
...@@ -127,7 +130,7 @@ export class DataPanel extends Component<Props, State> { ...@@ -127,7 +130,7 @@ export class DataPanel extends Component<Props, State> {
intervalMs: intervalRes.intervalMs, intervalMs: intervalRes.intervalMs,
targets: queries, targets: queries,
maxDataPoints: maxDataPoints || widthPixels, maxDataPoints: maxDataPoints || widthPixels,
scopedVars: {}, scopedVars: scopedVars || {},
cacheTimeout: null, cacheTimeout: null,
}; };
......
...@@ -179,6 +179,7 @@ export class PanelChrome extends PureComponent<Props, State> { ...@@ -179,6 +179,7 @@ export class PanelChrome extends PureComponent<Props, State> {
isVisible={this.isVisible} isVisible={this.isVisible}
widthPixels={width} widthPixels={width}
refreshCounter={refreshCounter} refreshCounter={refreshCounter}
scopedVars={panel.scopedVars}
onDataResponse={this.onDataResponse} onDataResponse={this.onDataResponse}
onError={this.onDataError} onError={this.onDataError}
> >
......
import React, { Component } from 'react'; import React, { Component } from 'react';
import classNames from 'classnames'; import classNames from 'classnames';
import { isEqual } from 'lodash'; import { isEqual } from 'lodash';
import { ScopedVars } from '@grafana/ui';
import PanelHeaderCorner from './PanelHeaderCorner'; import PanelHeaderCorner from './PanelHeaderCorner';
import { PanelHeaderMenu } from './PanelHeaderMenu'; import { PanelHeaderMenu } from './PanelHeaderMenu';
...@@ -16,7 +17,7 @@ export interface Props { ...@@ -16,7 +17,7 @@ export interface Props {
timeInfo: string; timeInfo: string;
title?: string; title?: string;
description?: string; description?: string;
scopedVars?: string; scopedVars?: ScopedVars;
links?: []; links?: [];
error?: string; error?: string;
isFullscreen: boolean; isFullscreen: boolean;
......
import React, { Component } from 'react'; import React, { Component } from 'react';
import Remarkable from 'remarkable'; import Remarkable from 'remarkable';
import { Tooltip } from '@grafana/ui'; import { Tooltip, ScopedVars } from '@grafana/ui';
import { PanelModel } from 'app/features/dashboard/state/PanelModel'; import { PanelModel } from 'app/features/dashboard/state/PanelModel';
import templateSrv from 'app/features/templating/template_srv'; import templateSrv from 'app/features/templating/template_srv';
import { LinkSrv } from 'app/features/panel/panellinks/link_srv'; import { LinkSrv } from 'app/features/panel/panellinks/link_srv';
...@@ -16,7 +17,7 @@ interface Props { ...@@ -16,7 +17,7 @@ interface Props {
panel: PanelModel; panel: PanelModel;
title?: string; title?: string;
description?: string; description?: string;
scopedVars?: string; scopedVars?: ScopedVars;
links?: []; links?: [];
error?: string; error?: string;
} }
......
...@@ -3,7 +3,7 @@ import _ from 'lodash'; ...@@ -3,7 +3,7 @@ import _ from 'lodash';
// Types // Types
import { Emitter } from 'app/core/utils/emitter'; import { Emitter } from 'app/core/utils/emitter';
import { DataQuery, TimeSeries, Threshold } from '@grafana/ui'; import { DataQuery, TimeSeries, Threshold, ScopedVars } from '@grafana/ui';
import { TableData } from '@grafana/ui/src'; import { TableData } from '@grafana/ui/src';
export interface GridPos { export interface GridPos {
...@@ -71,7 +71,7 @@ export class PanelModel { ...@@ -71,7 +71,7 @@ export class PanelModel {
type: string; type: string;
title: string; title: string;
alert?: any; alert?: any;
scopedVars?: any; scopedVars?: ScopedVars;
repeat?: string; repeat?: string;
repeatIteration?: number; repeatIteration?: number;
repeatPanelId?: number; repeatPanelId?: number;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment