Files
grafana/public/app/features/explore/hooks/useTimeSrvFix.ts
Giordano Ricci 067bbcbe56 Explore: Refactor & centralize URL/state sync (#66286)
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
2023-06-06 15:31:39 +01:00

25 lines
1.0 KiB
TypeScript

import { useEffect } from 'react';
import { useGrafana } from 'app/core/context/GrafanaContext';
/**
* timeSrv (which is used internally) on init reads `from` and `to` param from the URL and updates itself
* using those value regardless of what is passed to the init method.
* The updated value is then used by Explore to get the range for each pane.
* This means that if `from` and `to` parameters are present in the URL,
* it would be impossible to change the time range in Explore.
* We are only doing this on mount for 2 reasons:
* 1: Doing it on update means we'll enter a render loop.
* 2: when parsing time in Explore (before feeding it to timeSrv) we make sure `from` is before `to` inside
* each pane state in order to not trigger un URL update from timeSrv.
*/
export function useTimeSrvFix() {
const { location } = useGrafana();
useEffect(() => {
const searchParams = location.getSearchObject();
if (searchParams.from || searchParams.to) {
location.partial({ from: undefined, to: undefined }, true);
}
}, [location]);
}