Merge pull request #15752 from grafana/hugoh/bug-repeated-row-gauge

Passing scopedVars down to DataPanel from PanelChrome
This commit is contained in:
Torkel Ödegaard 2019-03-04 10:53:07 +00:00 committed by GitHub
commit 28cac0976d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 23 additions and 7 deletions

View File

@ -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> {
interval: string; interval: string;
intervalMs: number; intervalMs: number;
maxDataPoints: number; maxDataPoints: number;
scopedVars: object; scopedVars: ScopedVars;
} }
export interface QueryFix { export interface QueryFix {

View File

@ -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 {
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> {
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> {
intervalMs: intervalRes.intervalMs, intervalMs: intervalRes.intervalMs,
targets: queries, targets: queries,
maxDataPoints: maxDataPoints || widthPixels, maxDataPoints: maxDataPoints || widthPixels,
scopedVars: {}, scopedVars: scopedVars || {},
cacheTimeout: null, cacheTimeout: null,
}; };

View File

@ -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}
> >

View File

@ -1,6 +1,7 @@
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 {
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;

View File

@ -1,6 +1,7 @@
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 {
panel: PanelModel; panel: PanelModel;
title?: string; title?: string;
description?: string; description?: string;
scopedVars?: string; scopedVars?: ScopedVars;
links?: []; links?: [];
error?: string; error?: string;
} }

View File

@ -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 {
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;