diff --git a/public/app/core/components/TimePicker/TimePickerWithHistory.tsx b/public/app/core/components/TimePicker/TimePickerWithHistory.tsx index 60167b599c0c9..cb0d84bcc3583 100644 --- a/public/app/core/components/TimePicker/TimePickerWithHistory.tsx +++ b/public/app/core/components/TimePicker/TimePickerWithHistory.tsx @@ -1,9 +1,11 @@ +import { merge } from 'lodash'; import React, { CSSProperties } from 'react'; -import { useSelector } from 'react-redux'; +// eslint-disable-next-line no-restricted-imports +import { useDispatch, useSelector } from 'react-redux'; import { TimeRange, isDateTime, toUtc } from '@grafana/data'; import { TimeRangePickerProps, TimeRangePicker, useTheme2 } from '@grafana/ui'; -import { FnGlobalState } from 'app/core/reducers/fn-slice'; +import { FnGlobalState, updatePartialFnStates } from 'app/core/reducers/fn-slice'; import { StoreState } from 'app/types'; import { LocalStorageValueProvider } from '../LocalStorageValueProvider'; @@ -22,14 +24,22 @@ const FnText: React.FC = () => { }; export const TimePickerWithHistory: React.FC = (props) => { + const { fnGlobalTimeRange } = useSelector(({ fnGlobalState }) => fnGlobalState); + const dispatch = useDispatch(); + return ( storageKey={LOCAL_STORAGE_KEY} defaultValue={[]}> {(values, onSaveToStore) => { return ( { + dispatch( + updatePartialFnStates({ + fnGlobalTimeRange: value, + }) + ); onAppendToHistory(value, values, onSaveToStore); props.onChange(value); }} diff --git a/public/app/core/reducers/fn-slice.ts b/public/app/core/reducers/fn-slice.ts index 0d9128ade0ae6..d977b2b3635dd 100644 --- a/public/app/core/reducers/fn-slice.ts +++ b/public/app/core/reducers/fn-slice.ts @@ -1,6 +1,6 @@ import { createSlice, PayloadAction, SliceCaseReducers } from '@reduxjs/toolkit'; -import { GrafanaThemeType } from '@grafana/data'; +import { GrafanaThemeType, TimeRange } from '@grafana/data'; import { AnyObject } from '../../fn-app/types'; @@ -13,6 +13,7 @@ export interface FnGlobalState { pageTitle: string; queryParams: AnyObject; hiddenVariables: readonly string[]; + fnGlobalTimeRange: TimeRange | null; } export type UpdateFNGlobalStateAction = PayloadAction>; @@ -55,6 +56,7 @@ export const INITIAL_FN_STATE: FnGlobalState = { pageTitle: '', queryParams: {}, hiddenVariables: [], + fnGlobalTimeRange: null, } as const; const reducers: SliceCaseReducers = {