فهرست منبع

Revert "hard move"

This reverts commit a2dad6157a0e77dbdae2f6c7440b55d6a40e3864.
Peter Holmberg 6 سال پیش
والد
کامیت
7d0edb285d
2فایلهای تغییر یافته به همراه36 افزوده شده و 49 حذف شده
  1. 19 4
      public/app/features/dashboard/dashgrid/DataPanel.tsx
  2. 17 45
      public/app/features/dashboard/dashgrid/PanelChrome.tsx

+ 19 - 4
public/app/features/dashboard/dashgrid/DataPanel.tsx

@@ -2,6 +2,7 @@
 import React, { Component } from 'react';
 import React, { Component } from 'react';
 import { Tooltip } from '@grafana/ui';
 import { Tooltip } from '@grafana/ui';
 
 
+import ErrorBoundary from 'app/core/components/ErrorBoundary/ErrorBoundary';
 // Services
 // Services
 import { DatasourceSrv, getDatasourceSrv } from 'app/features/plugins/datasource_srv';
 import { DatasourceSrv, getDatasourceSrv } from 'app/features/plugins/datasource_srv';
 // Utils
 // Utils
@@ -17,6 +18,8 @@ import {
   TimeSeries,
   TimeSeries,
 } from '@grafana/ui';
 } from '@grafana/ui';
 
 
+const DEFAULT_PLUGIN_ERROR = 'Error in plugin';
+
 interface RenderProps {
 interface RenderProps {
   loading: LoadingState;
   loading: LoadingState;
   panelData: PanelData;
   panelData: PanelData;
@@ -200,10 +203,22 @@ export class DataPanel extends Component<Props, State> {
     return (
     return (
       <>
       <>
         {this.renderLoadingStates()}
         {this.renderLoadingStates()}
-        {this.props.children({
-          loading,
-          panelData,
-        })}
+        <ErrorBoundary>
+          {({ error, errorInfo }) => {
+            if (errorInfo) {
+              this.onError(error.message || DEFAULT_PLUGIN_ERROR);
+              return null;
+            }
+            return (
+              <>
+                {this.props.children({
+                  loading,
+                  panelData,
+                })}
+              </>
+            );
+          }}
+        </ErrorBoundary>
       </>
       </>
     );
     );
   }
   }

+ 17 - 45
public/app/features/dashboard/dashgrid/PanelChrome.tsx

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