|
@@ -8,7 +8,6 @@ import { getTimeSrv, TimeSrv } from '../services/TimeSrv';
|
|
|
// Components
|
|
// Components
|
|
|
import { PanelHeader } from './PanelHeader/PanelHeader';
|
|
import { PanelHeader } from './PanelHeader/PanelHeader';
|
|
|
import { DataPanel } from './DataPanel';
|
|
import { DataPanel } from './DataPanel';
|
|
|
-import ErrorBoundary from '../../../core/components/ErrorBoundary/ErrorBoundary';
|
|
|
|
|
|
|
|
|
|
// Utils
|
|
// Utils
|
|
|
import { applyPanelTimeOverrides } from 'app/features/dashboard/utils/panel';
|
|
import { applyPanelTimeOverrides } from 'app/features/dashboard/utils/panel';
|
|
@@ -24,8 +23,6 @@ import variables from 'sass/_variables.scss';
|
|
|
import templateSrv from 'app/features/templating/template_srv';
|
|
import templateSrv from 'app/features/templating/template_srv';
|
|
|
import { DataQueryResponse } from '@grafana/ui/src';
|
|
import { DataQueryResponse } from '@grafana/ui/src';
|
|
|
|
|
|
|
|
-const DEFAULT_PLUGIN_ERROR = 'Error in plugin';
|
|
|
|
|
-
|
|
|
|
|
export interface Props {
|
|
export interface Props {
|
|
|
panel: PanelModel;
|
|
panel: PanelModel;
|
|
|
dashboard: DashboardModel;
|
|
dashboard: DashboardModel;
|
|
@@ -37,9 +34,6 @@ export interface State {
|
|
|
renderCounter: number;
|
|
renderCounter: number;
|
|
|
timeInfo?: string;
|
|
timeInfo?: string;
|
|
|
timeRange?: TimeRange;
|
|
timeRange?: TimeRange;
|
|
|
- loading: LoadingState;
|
|
|
|
|
- isFirstLoad: boolean;
|
|
|
|
|
- errorMessage: string;
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
export class PanelChrome extends PureComponent<Props, State> {
|
|
export class PanelChrome extends PureComponent<Props, State> {
|
|
@@ -49,11 +43,8 @@ export class PanelChrome extends PureComponent<Props, State> {
|
|
|
super(props);
|
|
super(props);
|
|
|
|
|
|
|
|
this.state = {
|
|
this.state = {
|
|
|
- loading: LoadingState.NotStarted,
|
|
|
|
|
refreshCounter: 0,
|
|
refreshCounter: 0,
|
|
|
renderCounter: 0,
|
|
renderCounter: 0,
|
|
|
- isFirstLoad: false,
|
|
|
|
|
- errorMessage: '',
|
|
|
|
|
};
|
|
};
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -103,16 +94,6 @@ export class PanelChrome extends PureComponent<Props, State> {
|
|
|
return !this.props.dashboard.otherPanelInFullscreen(this.props.panel);
|
|
return !this.props.dashboard.otherPanelInFullscreen(this.props.panel);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- onError = (errorMessage: string) => {
|
|
|
|
|
- if (this.state.loading !== LoadingState.Error || this.state.errorMessage !== errorMessage) {
|
|
|
|
|
- this.setState({
|
|
|
|
|
- loading: LoadingState.Error,
|
|
|
|
|
- isFirstLoad: false,
|
|
|
|
|
- errorMessage: errorMessage,
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
renderPanel(loading, panelData, width, height): JSX.Element {
|
|
renderPanel(loading, panelData, width, height): JSX.Element {
|
|
|
const { panel, plugin } = this.props;
|
|
const { panel, plugin } = this.props;
|
|
|
const { timeRange, renderCounter } = this.state;
|
|
const { timeRange, renderCounter } = this.state;
|
|
@@ -164,32 +145,23 @@ export class PanelChrome extends PureComponent<Props, State> {
|
|
|
scopedVars={panel.scopedVars}
|
|
scopedVars={panel.scopedVars}
|
|
|
links={panel.links}
|
|
links={panel.links}
|
|
|
/>
|
|
/>
|
|
|
- <ErrorBoundary>
|
|
|
|
|
- {({ error, errorInfo }) => {
|
|
|
|
|
- if (errorInfo) {
|
|
|
|
|
- this.onError(error.message || DEFAULT_PLUGIN_ERROR);
|
|
|
|
|
- return null;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- return panel.snapshotData ? (
|
|
|
|
|
- this.renderPanel(false, panel.snapshotData, width, height)
|
|
|
|
|
- ) : (
|
|
|
|
|
- <DataPanel
|
|
|
|
|
- datasource={datasource}
|
|
|
|
|
- queries={targets}
|
|
|
|
|
- timeRange={timeRange}
|
|
|
|
|
- isVisible={this.isVisible}
|
|
|
|
|
- widthPixels={width}
|
|
|
|
|
- refreshCounter={refreshCounter}
|
|
|
|
|
- onDataResponse={this.onDataResponse}
|
|
|
|
|
- >
|
|
|
|
|
- {({ loading, panelData }) => {
|
|
|
|
|
- return this.renderPanel(loading, panelData, width, height);
|
|
|
|
|
- }}
|
|
|
|
|
- </DataPanel>
|
|
|
|
|
- );
|
|
|
|
|
- }}
|
|
|
|
|
- </ErrorBoundary>
|
|
|
|
|
|
|
+ {panel.snapshotData ? (
|
|
|
|
|
+ this.renderPanel(false, panel.snapshotData, width, height)
|
|
|
|
|
+ ) : (
|
|
|
|
|
+ <DataPanel
|
|
|
|
|
+ datasource={datasource}
|
|
|
|
|
+ queries={targets}
|
|
|
|
|
+ timeRange={timeRange}
|
|
|
|
|
+ isVisible={this.isVisible}
|
|
|
|
|
+ widthPixels={width}
|
|
|
|
|
+ refreshCounter={refreshCounter}
|
|
|
|
|
+ onDataResponse={this.onDataResponse}
|
|
|
|
|
+ >
|
|
|
|
|
+ {({ loading, panelData }) => {
|
|
|
|
|
+ return this.renderPanel(loading, panelData, width, height);
|
|
|
|
|
+ }}
|
|
|
|
|
+ </DataPanel>
|
|
|
|
|
+ )}
|
|
|
</div>
|
|
</div>
|
|
|
);
|
|
);
|
|
|
}}
|
|
}}
|