Skip to content

Commit 0b82d09

Browse files
authored
fix (#63)
1 parent 68206be commit 0b82d09

File tree

1 file changed

+38
-20
lines changed

1 file changed

+38
-20
lines changed

public/app/core/components/TimePicker/TimePickerWithHistory.tsx

+38-20
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { merge } from 'lodash';
2-
import React, { CSSProperties } from 'react';
2+
import React, { CSSProperties, FC, useEffect } from 'react';
33
// eslint-disable-next-line no-restricted-imports
44
import { useDispatch, useSelector } from 'react-redux';
55

@@ -23,31 +23,48 @@ const FnText: React.FC = () => {
2323
return <>{FNDashboard ? <span style={{ ...FN_TEXT_STYLE, color: theme.colors.warning.main }}>UTC</span> : ''}</>;
2424
};
2525

26-
export const TimePickerWithHistory: React.FC<Props> = (props) => {
26+
export const TimePickerWithHistory: FC<Props> = (props) => (
27+
<LocalStorageValueProvider<TimeRange[]> storageKey={LOCAL_STORAGE_KEY} defaultValue={[]}>
28+
{(values, onSaveToStore) => {
29+
return <Picker values={values} onSaveToStore={onSaveToStore} pickerProps={props} />;
30+
}}
31+
</LocalStorageValueProvider>
32+
);
33+
34+
export interface PickerProps {
35+
values: TimeRange[];
36+
onSaveToStore: (value: TimeRange[]) => void;
37+
pickerProps: Props;
38+
}
39+
40+
export const Picker: FC<PickerProps> = ({ values, onSaveToStore, pickerProps }) => {
2741
const { fnGlobalTimeRange } = useSelector<StoreState, FnGlobalState>(({ fnGlobalState }) => fnGlobalState);
2842
const dispatch = useDispatch();
2943

44+
useEffect(() => {
45+
if (!fnGlobalTimeRange) {
46+
return;
47+
}
48+
onAppendToHistory(fnGlobalTimeRange, values, onSaveToStore);
49+
pickerProps.onChange(fnGlobalTimeRange);
50+
// eslint-disable-next-line react-hooks/exhaustive-deps
51+
}, []);
52+
3053
return (
31-
<LocalStorageValueProvider<TimeRange[]> storageKey={LOCAL_STORAGE_KEY} defaultValue={[]}>
32-
{(values, onSaveToStore) => {
33-
return (
34-
<TimeRangePicker
35-
{...merge({}, props, { value: fnGlobalTimeRange || props.value })}
36-
history={convertIfJson(values)}
37-
onChange={(value) => {
38-
dispatch(
39-
updatePartialFnStates({
40-
fnGlobalTimeRange: value,
41-
})
42-
);
43-
onAppendToHistory(value, values, onSaveToStore);
44-
props.onChange(value);
45-
}}
46-
fnText={<FnText />}
47-
/>
54+
<TimeRangePicker
55+
{...merge({}, pickerProps, { value: fnGlobalTimeRange || pickerProps.value })}
56+
history={convertIfJson(values)}
57+
onChange={(value) => {
58+
dispatch(
59+
updatePartialFnStates({
60+
fnGlobalTimeRange: value,
61+
})
4862
);
63+
onAppendToHistory(value, values, onSaveToStore);
64+
pickerProps.onChange(value);
4965
}}
50-
</LocalStorageValueProvider>
66+
fnText={<FnText />}
67+
/>
5168
);
5269
};
5370

@@ -69,6 +86,7 @@ function onAppendToHistory(toAppend: TimeRange, values: TimeRange[], onSaveToSto
6986
if (!isAbsolute(toAppend)) {
7087
return;
7188
}
89+
7290
const toStore = limit([toAppend, ...values]);
7391
onSaveToStore(toStore);
7492
}

0 commit comments

Comments
 (0)