mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
fix: datatrails verify different time range before creating new history node (#81839)
fix: datatrails verify different time range
This commit is contained in:
parent
ba3ee60711
commit
bd0fd21852
@ -15,7 +15,7 @@ import { useStyles2, Tooltip, Stack } from '@grafana/ui';
|
||||
|
||||
import { DataTrail, DataTrailState } from './DataTrail';
|
||||
import { VAR_FILTERS } from './shared';
|
||||
import { getTrailFor } from './utils';
|
||||
import { getTrailFor, isSceneTimeRangeState } from './utils';
|
||||
|
||||
export interface DataTrailsHistoryState extends SceneObjectState {
|
||||
currentStep: number;
|
||||
@ -68,6 +68,14 @@ export class DataTrailHistory extends SceneObjectBase<DataTrailsHistoryState> {
|
||||
|
||||
trail.subscribeToEvent(SceneObjectStateChangedEvent, (evt) => {
|
||||
if (evt.payload.changedObject instanceof SceneTimeRange) {
|
||||
const { prevState, newState } = evt.payload;
|
||||
|
||||
if (isSceneTimeRangeState(prevState) && isSceneTimeRangeState(newState)) {
|
||||
if (prevState.from === newState.from && prevState.to === newState.to) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
this.addTrailStep(trail, 'time');
|
||||
}
|
||||
});
|
||||
|
@ -1,6 +1,13 @@
|
||||
import { urlUtil } from '@grafana/data';
|
||||
import { config, getDataSourceSrv } from '@grafana/runtime';
|
||||
import { getUrlSyncManager, sceneGraph, SceneObject, SceneObjectUrlValues, SceneTimeRange } from '@grafana/scenes';
|
||||
import {
|
||||
getUrlSyncManager,
|
||||
sceneGraph,
|
||||
SceneObject,
|
||||
SceneObjectState,
|
||||
SceneObjectUrlValues,
|
||||
SceneTimeRange,
|
||||
} from '@grafana/scenes';
|
||||
|
||||
import { getDatasourceSrv } from '../plugins/datasource_srv';
|
||||
|
||||
@ -89,3 +96,12 @@ export function getColorByIndex(index: number) {
|
||||
const visTheme = config.theme2.visualization;
|
||||
return visTheme.getColorByName(visTheme.palette[index % 8]);
|
||||
}
|
||||
|
||||
export type SceneTimeRangeState = SceneObjectState & {
|
||||
from: string;
|
||||
to: string;
|
||||
};
|
||||
export function isSceneTimeRangeState(state: SceneObjectState): state is SceneTimeRangeState {
|
||||
const keys = Object.keys(state);
|
||||
return keys.includes('from') && keys.includes('to');
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user