Explorar o código

Firing off an action instead of listening to location changes

Hugo Häggmark %!s(int64=7) %!d(string=hai) anos
pai
achega
6b0400eed2

+ 7 - 1
public/app/features/explore/Wrapper.tsx

@@ -7,7 +7,7 @@ import { StoreState } from 'app/types';
 import { ExploreId, ExploreUrlState } from 'app/types/explore';
 import { parseUrlState } from 'app/core/utils/explore';
 
-import { initializeExploreSplit } from './state/actions';
+import { initializeExploreSplit, resetExplore } from './state/actions';
 import ErrorBoundary from './ErrorBoundary';
 import Explore from './Explore';
 import { CustomScrollbar } from '@grafana/ui';
@@ -16,6 +16,7 @@ interface WrapperProps {
   initializeExploreSplit: typeof initializeExploreSplit;
   split: boolean;
   updateLocation: typeof updateLocation;
+  resetExplore: typeof resetExplore;
   urlStates: { [key: string]: string };
 }
 
@@ -42,6 +43,10 @@ export class Wrapper extends Component<WrapperProps> {
     }
   }
 
+  componentWillUnmount() {
+    this.props.resetExplore();
+  }
+
   render() {
     const { split } = this.props;
     const { leftState, rightState } = this.urlStates;
@@ -74,6 +79,7 @@ const mapStateToProps = (state: StoreState) => {
 const mapDispatchToProps = {
   initializeExploreSplit,
   updateLocation,
+  resetExplore,
 };
 
 export default hot(module)(connect(mapStateToProps, mapDispatchToProps)(Wrapper));

+ 7 - 2
public/app/features/explore/state/actionTypes.ts

@@ -9,7 +9,6 @@ import {
   ResultType,
   QueryTransaction,
 } from 'app/types/explore';
-import { UpdateLocationAction } from 'app/core/actions/location';
 
 export enum ActionTypes {
   AddQueryRow = 'explore/ADD_QUERY_ROW',
@@ -42,6 +41,7 @@ export enum ActionTypes {
   ToggleGraph = 'explore/TOGGLE_GRAPH',
   ToggleLogs = 'explore/TOGGLE_LOGS',
   ToggleTable = 'explore/TOGGLE_TABLE',
+  ResetExplore = 'explore/RESET_EXPLORE',
 }
 
 export interface AddQueryRowAction {
@@ -271,6 +271,11 @@ export interface ToggleLogsAction {
   };
 }
 
+export interface ResetExploreAction {
+  type: ActionTypes.ResetExplore;
+  payload: {};
+}
+
 export type Action =
   | AddQueryRowAction
   | ChangeQueryAction
@@ -299,4 +304,4 @@ export type Action =
   | ToggleGraphAction
   | ToggleLogsAction
   | ToggleTableAction
-  | UpdateLocationAction;
+  | ResetExploreAction;

+ 10 - 2
public/app/features/explore/state/actions.ts

@@ -21,7 +21,7 @@ import { updateLocation } from 'app/core/actions';
 
 // Types
 import { StoreState } from 'app/types';
-import { DataQuery, DataSourceSelectItem, QueryHint  } from '@grafana/ui/src/types';
+import { DataQuery, DataSourceSelectItem, QueryHint } from '@grafana/ui/src/types';
 import { getDatasourceSrv } from 'app/features/plugins/datasource_srv';
 import {
   ExploreId,
@@ -48,7 +48,6 @@ import {
   ScanStopAction,
 } from './actionTypes';
 
-
 type ThunkResult<R> = ThunkAction<R, StoreState, undefined, ThunkableAction>;
 
 /**
@@ -766,3 +765,12 @@ export function toggleTable(exploreId: ExploreId): ThunkResult<void> {
     }
   };
 }
+
+/**
+ * Resets state for explore.
+ */
+export function resetExplore(): ThunkResult<void> {
+  return dispatch => {
+    dispatch({ type: ActionTypes.ResetExplore, payload: {} });
+  };
+}

+ 2 - 7
public/app/features/explore/state/reducers.ts

@@ -8,7 +8,6 @@ import { ExploreItemState, ExploreState, QueryTransaction } from 'app/types/expl
 import { DataQuery } from '@grafana/ui/src/types';
 
 import { Action, ActionTypes } from './actionTypes';
-import { CoreActionTypes } from 'app/core/actions/location';
 
 export const DEFAULT_RANGE = {
   from: 'now-6h',
@@ -440,12 +439,8 @@ export const exploreReducer = (state = initialExploreState, action: Action): Exp
       return { ...state, split: true };
     }
 
-    case CoreActionTypes.UpdateLocation: {
-      if (action.payload.path && action.payload.path !== '/explore') {
-        return initialExploreState;
-      }
-
-      return state;
+    case ActionTypes.ResetExplore: {
+      return initialExploreState;
     }
   }