diff --git a/public/app/features/explore/Wrapper.tsx b/public/app/features/explore/Wrapper.tsx index 770b6bd6588..aca2e6d8cbd 100644 --- a/public/app/features/explore/Wrapper.tsx +++ b/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 { } } + 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)); diff --git a/public/app/features/explore/state/actionTypes.ts b/public/app/features/explore/state/actionTypes.ts index 219e3fb6fc9..21918e1c013 100644 --- a/public/app/features/explore/state/actionTypes.ts +++ b/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; diff --git a/public/app/features/explore/state/actions.ts b/public/app/features/explore/state/actions.ts index d4c42ffa9c7..f09612322ae 100644 --- a/public/app/features/explore/state/actions.ts +++ b/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 = ThunkAction; /** @@ -766,3 +765,12 @@ export function toggleTable(exploreId: ExploreId): ThunkResult { } }; } + +/** + * Resets state for explore. + */ +export function resetExplore(): ThunkResult { + return dispatch => { + dispatch({ type: ActionTypes.ResetExplore, payload: {} }); + }; +} diff --git a/public/app/features/explore/state/reducers.ts b/public/app/features/explore/state/reducers.ts index ccad9392c06..7a240350cb6 100644 --- a/public/app/features/explore/state/reducers.ts +++ b/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; } }