12345678910111213141516171819202122232425262728293031323334353637383940 |
- import { TimeRange, toUtc, AbsoluteTimeRange } from '@grafana/data';
- export const getShiftedTimeRange = (direction: number, origRange: TimeRange): AbsoluteTimeRange => {
- const range = {
- from: toUtc(origRange.from),
- to: toUtc(origRange.to),
- };
- const timespan = (range.to.valueOf() - range.from.valueOf()) / 2;
- let to: number, from: number;
- if (direction === -1) {
- to = range.to.valueOf() - timespan;
- from = range.from.valueOf() - timespan;
- } else if (direction === 1) {
- to = range.to.valueOf() + timespan;
- from = range.from.valueOf() + timespan;
- if (to > Date.now() && range.to.valueOf() < Date.now()) {
- to = Date.now();
- from = range.from.valueOf();
- }
- } else {
- to = range.to.valueOf();
- from = range.from.valueOf();
- }
- return { from, to };
- };
- export const getZoomedTimeRange = (range: TimeRange, factor: number): AbsoluteTimeRange => {
- const timespan = range.to.valueOf() - range.from.valueOf();
- const center = range.to.valueOf() - timespan / 2;
- // If the timepsan is 0, zooming out would do nothing, so we force a zoom out to 30s
- const newTimespan = timespan === 0 ? 30000 : timespan * factor;
- const to = center + newTimespan / 2;
- const from = center - newTimespan / 2;
- return { from, to };
- };
|