grafana/public/app/features/templating/macroRegistry.ts
Victor Colomb 2489e3524d
Variables: Add support for $__timezone template variable (#66785)
Co-authored-by: Isabel <76437239+imatwawana@users.noreply.github.com>
2023-05-09 15:21:28 +02:00

34 lines
1.2 KiB
TypeScript

import moment from 'moment-timezone';
import { DataLinkBuiltInVars, getTimeZone, ScopedVars, urlUtil } from '@grafana/data';
import { getTimeSrv } from '../dashboard/services/TimeSrv';
import { getVariablesUrlParams } from '../variables/getAllVariableValuesForUrl';
import { dataMacro, fieldMacro, seriesNameMacro, valueMacro } from './dataMacros';
import { MacroHandler } from './types';
export const macroRegistry: Record<string, MacroHandler> = {
['__value']: valueMacro,
['__data']: dataMacro,
['__series']: seriesNameMacro,
['__field']: fieldMacro,
[DataLinkBuiltInVars.includeVars]: includeVarsMacro,
[DataLinkBuiltInVars.keepTime]: urlTimeRangeMacro,
['__timezone']: timeZoneMacro,
};
function includeVarsMacro(match: string, fieldPath?: string, scopedVars?: ScopedVars) {
const allVariablesParams = getVariablesUrlParams(scopedVars);
return urlUtil.toUrlParams(allVariablesParams);
}
function urlTimeRangeMacro() {
return urlUtil.toUrlParams(getTimeSrv().timeRangeForUrl());
}
function timeZoneMacro() {
const timeZone = getTimeZone({ timeZone: getTimeSrv().timeModel?.getTimezone() });
return timeZone === 'browser' ? moment.tz.guess() : timeZone;
}