46 lines
1.1 KiB
TypeScript
46 lines
1.1 KiB
TypeScript
import { DateTime, isDateTime, TimeRange } from '@grafana/data';
|
|
|
|
import { LokiQueryType } from '../types';
|
|
|
|
/**
|
|
* This function compares two time values. If the first is absolute, it compares them using `DateTime.isSame`.
|
|
*
|
|
* @param {(DateTime | string)} time1
|
|
* @param {(DateTime | string | undefined)} time2
|
|
*/
|
|
function compareTime(time1: DateTime | string | undefined, time2: DateTime | string | undefined) {
|
|
if (!time1 || !time2) {
|
|
return false;
|
|
}
|
|
|
|
const isAbsolute = isDateTime(time1);
|
|
|
|
if (isAbsolute) {
|
|
return time1.isSame(time2);
|
|
}
|
|
|
|
return time1 === time2;
|
|
}
|
|
|
|
export function shouldUpdateStats(
|
|
query: string,
|
|
prevQuery: string | undefined,
|
|
timeRange: TimeRange | undefined,
|
|
prevTimeRange: TimeRange | undefined,
|
|
queryType: LokiQueryType | undefined,
|
|
prevQueryType: LokiQueryType | undefined
|
|
): boolean {
|
|
if (prevQuery === undefined || query.trim() !== prevQuery.trim() || queryType !== prevQueryType) {
|
|
return true;
|
|
}
|
|
|
|
if (
|
|
compareTime(timeRange?.raw.from, prevTimeRange?.raw.from) &&
|
|
compareTime(timeRange?.raw.to, prevTimeRange?.raw.to)
|
|
) {
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|