2020-04-15 09:04:01 -05:00
|
|
|
import { useCallback, useState } from 'react';
|
2020-04-08 10:16:22 -05:00
|
|
|
import { ViewRangeTimeUpdate, ViewRange } from '@jaegertracing/jaeger-ui-components';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Controls state of the zoom function that can be used through minimap in header or on the timeline. ViewRange contains
|
|
|
|
* state not only for current range that is showing but range that is currently being selected by the user.
|
|
|
|
*/
|
|
|
|
export function useViewRange() {
|
|
|
|
const [viewRange, setViewRange] = useState<ViewRange>({
|
|
|
|
time: {
|
|
|
|
current: [0, 1],
|
|
|
|
},
|
|
|
|
});
|
|
|
|
|
2020-04-15 09:04:01 -05:00
|
|
|
const updateNextViewRangeTime = useCallback(function updateNextViewRangeTime(update: ViewRangeTimeUpdate) {
|
2020-04-08 10:16:22 -05:00
|
|
|
setViewRange(
|
|
|
|
(prevRange): ViewRange => {
|
|
|
|
const time = { ...prevRange.time, ...update };
|
|
|
|
return { ...prevRange, time };
|
|
|
|
}
|
|
|
|
);
|
2020-04-15 09:04:01 -05:00
|
|
|
}, []);
|
2020-04-08 10:16:22 -05:00
|
|
|
|
2020-04-15 09:04:01 -05:00
|
|
|
const updateViewRangeTime = useCallback(function updateViewRangeTime(start: number, end: number) {
|
2020-04-08 10:16:22 -05:00
|
|
|
const current: [number, number] = [start, end];
|
|
|
|
const time = { current };
|
|
|
|
setViewRange(
|
|
|
|
(prevRange): ViewRange => {
|
|
|
|
return { ...prevRange, time };
|
|
|
|
}
|
|
|
|
);
|
2020-04-15 09:04:01 -05:00
|
|
|
}, []);
|
2020-04-08 10:16:22 -05:00
|
|
|
|
|
|
|
return { viewRange, updateViewRangeTime, updateNextViewRangeTime };
|
|
|
|
}
|