@grafana/scenes 6.39.8 → 6.39.9--canary.1279.18575952526.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -167,7 +167,11 @@ class SceneTimeRange extends SceneObjectBase {
|
|
|
167
167
|
}
|
|
168
168
|
getUrlState() {
|
|
169
169
|
const params = locationService.getSearchObject();
|
|
170
|
-
const urlValues = {
|
|
170
|
+
const urlValues = {
|
|
171
|
+
from: this.state.from,
|
|
172
|
+
to: this.state.to,
|
|
173
|
+
timezone: this.state.timeZone !== void 0 ? this.state.timeZone : this.getTimeZone()
|
|
174
|
+
};
|
|
171
175
|
if (params.time && params["time.window"]) {
|
|
172
176
|
urlValues.time = null;
|
|
173
177
|
urlValues["time.window"] = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SceneTimeRange.js","sources":["../../../src/core/SceneTimeRange.tsx"],"sourcesContent":["import { getTimeZone, getZone, rangeUtil, setWeekStart, TimeRange, toUtc } from '@grafana/data';\nimport { defaultTimeZone, TimeZone } from '@grafana/schema';\n\nimport { SceneObjectUrlSyncConfig } from '../services/SceneObjectUrlSyncConfig';\n\nimport { SceneObjectBase } from './SceneObjectBase';\nimport { SceneTimeRangeLike, SceneTimeRangeState, SceneObjectUrlValues } from './types';\nimport { getClosest } from './sceneGraph/utils';\nimport { parseUrlParam } from '../utils/parseUrlParam';\nimport { evaluateTimeRange } from '../utils/evaluateTimeRange';\nimport { config, locationService, RefreshEvent } from '@grafana/runtime';\nimport { isValid } from '../utils/date';\nimport { getQueryController } from './sceneGraph/getQueryController';\nimport { writeSceneLog } from '../utils/writeSceneLog';\nimport { isEmpty } from 'lodash';\nimport { TIME_RANGE_CHANGE_INTERACTION } from '../behaviors/SceneRenderProfiler';\n\nexport class SceneTimeRange extends SceneObjectBase<SceneTimeRangeState> implements SceneTimeRangeLike {\n protected _urlSync = new SceneObjectUrlSyncConfig(this, { keys: ['from', 'to', 'timezone', 'time', 'time.window'] });\n\n public constructor(state: Partial<SceneTimeRangeState> = {}) {\n const from = state.from && isValid(state.from) ? state.from : 'now-6h';\n const to = state.to && isValid(state.to) ? state.to : 'now';\n const timeZone = getValidTimeZone(state.timeZone);\n const value = evaluateTimeRange(\n from,\n to,\n timeZone || getTimeZone(),\n state.fiscalYearStartMonth,\n state.UNSAFE_nowDelay,\n state.weekStart\n );\n const refreshOnActivate = state.refreshOnActivate ?? { percent: 10 };\n super({ from, to, timeZone, value, refreshOnActivate, ...state });\n\n this.addActivationHandler(this._onActivate.bind(this));\n }\n\n private _onActivate() {\n // When SceneTimeRange has no time zone provided, find closest source of time zone and subscribe to it\n if (!this.state.timeZone) {\n const timeZoneSource = this.getTimeZoneSource();\n if (timeZoneSource !== this) {\n this._subs.add(\n timeZoneSource.subscribeToState((n, p) => {\n if (n.timeZone !== undefined && n.timeZone !== p.timeZone) {\n this.refreshRange(0);\n }\n })\n );\n }\n }\n\n if (rangeUtil.isRelativeTimeRange(this.state.value.raw)) {\n this.refreshIfStale();\n }\n\n return () => {\n if (this.state.weekStart) {\n setWeekStart(config.bootData.user.weekStart);\n }\n };\n }\n\n private refreshIfStale() {\n let ms;\n if (this.state?.refreshOnActivate?.percent !== undefined) {\n ms = this.calculatePercentOfInterval(this.state.refreshOnActivate.percent);\n }\n if (this.state?.refreshOnActivate?.afterMs !== undefined) {\n ms = Math.min(this.state.refreshOnActivate.afterMs, ms ?? Infinity);\n }\n if (ms !== undefined) {\n this.refreshRange(ms);\n }\n }\n\n /**\n * Will traverse up the scene graph to find the closest SceneTimeRangeLike with time zone set\n */\n private getTimeZoneSource() {\n if (!this.parent || !this.parent.parent) {\n return this;\n }\n // Find the closest source of time zone\n const source = getClosest<SceneTimeRangeLike>(this.parent.parent, (o) => {\n if (o.state.$timeRange && o.state.$timeRange.state.timeZone) {\n return o.state.$timeRange;\n }\n return undefined;\n });\n\n if (!source) {\n return this;\n }\n\n return source;\n }\n\n /**\n * Refreshes time range if it is older than the invalidation interval\n * @param refreshAfterMs invalidation interval (milliseconds)\n * @private\n */\n private refreshRange(refreshAfterMs: number) {\n const value = evaluateTimeRange(\n this.state.from,\n this.state.to,\n this.state.timeZone ?? getTimeZone(),\n this.state.fiscalYearStartMonth,\n this.state.UNSAFE_nowDelay,\n this.state.weekStart\n );\n\n const diff = value.to.diff(this.state.value.to, 'milliseconds');\n if (diff >= refreshAfterMs) {\n this.setState({ value });\n }\n }\n\n private calculatePercentOfInterval(percent: number): number {\n const intervalMs = this.state.value.to.diff(this.state.value.from, 'milliseconds');\n return Math.ceil((intervalMs / 100) * percent);\n }\n\n public getTimeZone(): TimeZone {\n // Return local time zone if provided\n if (this.state.timeZone && getValidTimeZone(this.state.timeZone)) {\n return this.state.timeZone;\n }\n\n // Resolve higher level time zone source\n const timeZoneSource = this.getTimeZoneSource();\n if (timeZoneSource !== this && getValidTimeZone(timeZoneSource.state.timeZone)) {\n return timeZoneSource.state.timeZone!;\n }\n\n // Return default time zone\n return getTimeZone();\n }\n\n public onTimeRangeChange = (timeRange: TimeRange) => {\n const update: Partial<SceneTimeRangeState> = {};\n\n if (typeof timeRange.raw.from === 'string') {\n update.from = timeRange.raw.from;\n } else {\n update.from = timeRange.raw.from.toISOString();\n }\n\n if (typeof timeRange.raw.to === 'string') {\n update.to = timeRange.raw.to;\n } else {\n update.to = timeRange.raw.to.toISOString();\n }\n\n update.value = evaluateTimeRange(\n update.from,\n update.to,\n this.getTimeZone(),\n this.state.fiscalYearStartMonth,\n this.state.UNSAFE_nowDelay,\n this.state.weekStart\n );\n\n // Only update if time range actually changed\n if (update.from !== this.state.from || update.to !== this.state.to) {\n const queryController = getQueryController(this);\n queryController?.startProfile(TIME_RANGE_CHANGE_INTERACTION);\n this._urlSync.performBrowserHistoryAction(() => {\n this.setState(update);\n });\n }\n };\n\n public onTimeZoneChange = (timeZone: TimeZone) => {\n this._urlSync.performBrowserHistoryAction(() => {\n const validTimeZone = getValidTimeZone(timeZone) ?? defaultTimeZone;\n const updatedValue = evaluateTimeRange(\n this.state.from,\n this.state.to,\n validTimeZone,\n this.state.fiscalYearStartMonth,\n this.state.UNSAFE_nowDelay,\n this.state.weekStart\n );\n this.setState({ timeZone: validTimeZone, value: updatedValue });\n });\n };\n\n public onRefresh = () => {\n this.refreshRange(0);\n this.publishEvent(new RefreshEvent(), true);\n };\n\n public getUrlState() {\n const params = locationService.getSearchObject();\n const urlValues: SceneObjectUrlValues = { from: this.state.from, to: this.state.to, timezone: this.getTimeZone() };\n\n // Clear time and time.window once they are converted to from and to\n if (params.time && params['time.window']) {\n urlValues.time = null;\n urlValues['time.window'] = null;\n }\n\n return urlValues;\n }\n\n public updateFromUrl(values: SceneObjectUrlValues) {\n const update: Partial<SceneTimeRangeState> = {};\n\n let from = parseUrlParam(values.from);\n let to = parseUrlParam(values.to);\n\n if (values.time && values['time.window']) {\n const time = Array.isArray(values.time) ? values.time[0] : values.time;\n const timeWindow = Array.isArray(values['time.window']) ? values['time.window'][0] : values['time.window'];\n const timeRange = getTimeWindow(time, timeWindow);\n if (timeRange.from && isValid(timeRange.from)) {\n from = timeRange.from;\n }\n\n if (timeRange.to && isValid(timeRange.to)) {\n to = timeRange.to;\n }\n }\n\n if (from && isValid(from)) {\n update.from = from;\n }\n\n if (to && isValid(to)) {\n update.to = to;\n }\n\n if (typeof values.timezone === 'string') {\n update.timeZone = values.timezone !== '' ? values.timezone : undefined;\n }\n\n if (Object.keys(update).length === 0) {\n return;\n }\n\n update.value = evaluateTimeRange(\n update.from ?? this.state.from,\n update.to ?? this.state.to,\n update.timeZone ?? this.getTimeZone(),\n this.state.fiscalYearStartMonth,\n this.state.UNSAFE_nowDelay,\n this.state.weekStart\n );\n\n return this.setState(update);\n }\n}\n\n/**\n * Calculates the duration of the time range from time-time.window/2 to time+time.window/2. Both be specified in ms. For example ?time=1500000000000&time.window=10000 results in a 10-second time range from 1499999995000 to 1500000005000`.\n * @param time - time in ms\n * @param timeWindow - time window in ms or interval string\n */\nfunction getTimeWindow(time: string, timeWindow: string) {\n // Parse the time, assuming it could be an ISO string or a number in milliseconds\n const valueTime = isNaN(Date.parse(time)) ? parseInt(time, 10) : Date.parse(time);\n\n let timeWindowMs;\n\n if (timeWindow.match(/^\\d+$/) && parseInt(timeWindow, 10)) {\n // when time window is specified in ms\n timeWindowMs = parseInt(timeWindow, 10);\n } else {\n timeWindowMs = rangeUtil.intervalToMs(timeWindow);\n }\n\n return {\n from: toUtc(valueTime - timeWindowMs / 2).toISOString(),\n to: toUtc(valueTime + timeWindowMs / 2).toISOString(),\n };\n}\n\n/**\n * Validates and returns a valid time zone string or undefined.\n * @param {string} [timeZone] - The time zone to validate. Can be a valid IANA time zone string, the string \"browser\", or undefined.\n * @returns {string | undefined} - Returns the input time zone if it is valid, or undefined if the input is invalid or not provided.\n */\nfunction getValidTimeZone(timeZone?: string): string | undefined {\n if (timeZone === undefined) {\n return undefined;\n }\n\n if (isEmpty(timeZone)) {\n return config.bootData.user.timezone;\n }\n\n if (timeZone === defaultTimeZone) {\n return timeZone;\n }\n\n if (getZone(timeZone)) {\n return timeZone;\n }\n\n writeSceneLog('SceneTimeRange', `Invalid timeZone \"${timeZone}\" provided.`);\n return;\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAiBO,MAAM,uBAAuB,eAAmE,CAAA;AAAA,EAG9F,WAAA,CAAY,KAAsC,GAAA,EAAI,EAAA;AApB/D,IAAA,IAAA,EAAA;AAqBI,IAAM,MAAA,IAAA,GAAO,MAAM,IAAQ,IAAA,OAAA,CAAQ,MAAM,IAAI,CAAA,GAAI,MAAM,IAAO,GAAA,QAAA;AAC9D,IAAM,MAAA,EAAA,GAAK,MAAM,EAAM,IAAA,OAAA,CAAQ,MAAM,EAAE,CAAA,GAAI,MAAM,EAAK,GAAA,KAAA;AACtD,IAAM,MAAA,QAAA,GAAW,gBAAiB,CAAA,KAAA,CAAM,QAAQ,CAAA;AAChD,IAAA,MAAM,KAAQ,GAAA,iBAAA;AAAA,MACZ,IAAA;AAAA,MACA,EAAA;AAAA,MACA,YAAY,WAAY,EAAA;AAAA,MACxB,KAAM,CAAA,oBAAA;AAAA,MACN,KAAM,CAAA,eAAA;AAAA,MACN,KAAM,CAAA;AAAA,KACR;AACA,IAAA,MAAM,qBAAoB,EAAM,GAAA,KAAA,CAAA,iBAAA,KAAN,IAA2B,GAAA,EAAA,GAAA,EAAE,SAAS,EAAG,EAAA;AACnE,IAAM,KAAA,CAAA,EAAE,MAAM,EAAI,EAAA,QAAA,EAAU,OAAO,iBAAmB,EAAA,GAAG,OAAO,CAAA;AAflE,IAAA,IAAA,CAAU,QAAW,GAAA,IAAI,wBAAyB,CAAA,IAAA,EAAM,EAAE,IAAA,EAAM,CAAC,MAAA,EAAQ,IAAM,EAAA,UAAA,EAAY,MAAQ,EAAA,aAAa,GAAG,CAAA;AA2HnH,IAAO,IAAA,CAAA,iBAAA,GAAoB,CAAC,SAAyB,KAAA;AACnD,MAAA,MAAM,SAAuC,EAAC;AAE9C,MAAA,IAAI,OAAO,SAAA,CAAU,GAAI,CAAA,IAAA,KAAS,QAAU,EAAA;AAC1C,QAAO,MAAA,CAAA,IAAA,GAAO,UAAU,GAAI,CAAA,IAAA;AAAA,OACvB,MAAA;AACL,QAAA,MAAA,CAAO,IAAO,GAAA,SAAA,CAAU,GAAI,CAAA,IAAA,CAAK,WAAY,EAAA;AAAA;AAG/C,MAAA,IAAI,OAAO,SAAA,CAAU,GAAI,CAAA,EAAA,KAAO,QAAU,EAAA;AACxC,QAAO,MAAA,CAAA,EAAA,GAAK,UAAU,GAAI,CAAA,EAAA;AAAA,OACrB,MAAA;AACL,QAAA,MAAA,CAAO,EAAK,GAAA,SAAA,CAAU,GAAI,CAAA,EAAA,CAAG,WAAY,EAAA;AAAA;AAG3C,MAAA,MAAA,CAAO,KAAQ,GAAA,iBAAA;AAAA,QACb,MAAO,CAAA,IAAA;AAAA,QACP,MAAO,CAAA,EAAA;AAAA,QACP,KAAK,WAAY,EAAA;AAAA,QACjB,KAAK,KAAM,CAAA,oBAAA;AAAA,QACX,KAAK,KAAM,CAAA,eAAA;AAAA,QACX,KAAK,KAAM,CAAA;AAAA,OACb;AAGA,MAAI,IAAA,MAAA,CAAO,SAAS,IAAK,CAAA,KAAA,CAAM,QAAQ,MAAO,CAAA,EAAA,KAAO,IAAK,CAAA,KAAA,CAAM,EAAI,EAAA;AAClE,QAAM,MAAA,eAAA,GAAkB,mBAAmB,IAAI,CAAA;AAC/C,QAAA,eAAA,IAAA,IAAA,GAAA,MAAA,GAAA,eAAA,CAAiB,YAAa,CAAA,6BAAA,CAAA;AAC9B,QAAK,IAAA,CAAA,QAAA,CAAS,4BAA4B,MAAM;AAC9C,UAAA,IAAA,CAAK,SAAS,MAAM,CAAA;AAAA,SACrB,CAAA;AAAA;AACH,KACF;AAEA,IAAO,IAAA,CAAA,gBAAA,GAAmB,CAAC,QAAuB,KAAA;AAChD,MAAK,IAAA,CAAA,QAAA,CAAS,4BAA4B,MAAM;AAhLpD,QAAA,IAAA,EAAA;AAiLM,QAAA,MAAM,aAAgB,GAAA,CAAA,EAAA,GAAA,gBAAA,CAAiB,QAAQ,CAAA,KAAzB,IAA8B,GAAA,EAAA,GAAA,eAAA;AACpD,QAAA,MAAM,YAAe,GAAA,iBAAA;AAAA,UACnB,KAAK,KAAM,CAAA,IAAA;AAAA,UACX,KAAK,KAAM,CAAA,EAAA;AAAA,UACX,aAAA;AAAA,UACA,KAAK,KAAM,CAAA,oBAAA;AAAA,UACX,KAAK,KAAM,CAAA,eAAA;AAAA,UACX,KAAK,KAAM,CAAA;AAAA,SACb;AACA,QAAA,IAAA,CAAK,SAAS,EAAE,QAAA,EAAU,aAAe,EAAA,KAAA,EAAO,cAAc,CAAA;AAAA,OAC/D,CAAA;AAAA,KACH;AAEA,IAAA,IAAA,CAAO,YAAY,MAAM;AACvB,MAAA,IAAA,CAAK,aAAa,CAAC,CAAA;AACnB,MAAA,IAAA,CAAK,YAAa,CAAA,IAAI,YAAa,EAAA,EAAG,IAAI,CAAA;AAAA,KAC5C;AA9JE,IAAA,IAAA,CAAK,oBAAqB,CAAA,IAAA,CAAK,WAAY,CAAA,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA;AACvD,EAEQ,WAAc,GAAA;AAEpB,IAAI,IAAA,CAAC,IAAK,CAAA,KAAA,CAAM,QAAU,EAAA;AACxB,MAAM,MAAA,cAAA,GAAiB,KAAK,iBAAkB,EAAA;AAC9C,MAAA,IAAI,mBAAmB,IAAM,EAAA;AAC3B,QAAA,IAAA,CAAK,KAAM,CAAA,GAAA;AAAA,UACT,cAAe,CAAA,gBAAA,CAAiB,CAAC,CAAA,EAAG,CAAM,KAAA;AACxC,YAAA,IAAI,EAAE,QAAa,KAAA,MAAA,IAAa,CAAE,CAAA,QAAA,KAAa,EAAE,QAAU,EAAA;AACzD,cAAA,IAAA,CAAK,aAAa,CAAC,CAAA;AAAA;AACrB,WACD;AAAA,SACH;AAAA;AACF;AAGF,IAAA,IAAI,UAAU,mBAAoB,CAAA,IAAA,CAAK,KAAM,CAAA,KAAA,CAAM,GAAG,CAAG,EAAA;AACvD,MAAA,IAAA,CAAK,cAAe,EAAA;AAAA;AAGtB,IAAA,OAAO,MAAM;AACX,MAAI,IAAA,IAAA,CAAK,MAAM,SAAW,EAAA;AACxB,QAAa,YAAA,CAAA,MAAA,CAAO,QAAS,CAAA,IAAA,CAAK,SAAS,CAAA;AAAA;AAC7C,KACF;AAAA;AACF,EAEQ,cAAiB,GAAA;AAhE3B,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAiEI,IAAI,IAAA,EAAA;AACJ,IAAA,IAAA,CAAA,CAAI,gBAAK,KAAL,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAY,iBAAZ,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAA+B,aAAY,MAAW,EAAA;AACxD,MAAA,EAAA,GAAK,IAAK,CAAA,0BAAA,CAA2B,IAAK,CAAA,KAAA,CAAM,kBAAkB,OAAO,CAAA;AAAA;AAE3E,IAAA,IAAA,CAAA,CAAI,gBAAK,KAAL,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAY,iBAAZ,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAA+B,aAAY,MAAW,EAAA;AACxD,MAAA,EAAA,GAAK,KAAK,GAAI,CAAA,IAAA,CAAK,MAAM,iBAAkB,CAAA,OAAA,EAAS,kBAAM,QAAQ,CAAA;AAAA;AAEpE,IAAA,IAAI,OAAO,MAAW,EAAA;AACpB,MAAA,IAAA,CAAK,aAAa,EAAE,CAAA;AAAA;AACtB;AACF;AAAA;AAAA;AAAA,EAKQ,iBAAoB,GAAA;AAC1B,IAAA,IAAI,CAAC,IAAK,CAAA,MAAA,IAAU,CAAC,IAAA,CAAK,OAAO,MAAQ,EAAA;AACvC,MAAO,OAAA,IAAA;AAAA;AAGT,IAAA,MAAM,SAAS,UAA+B,CAAA,IAAA,CAAK,MAAO,CAAA,MAAA,EAAQ,CAAC,CAAM,KAAA;AACvE,MAAA,IAAI,EAAE,KAAM,CAAA,UAAA,IAAc,EAAE,KAAM,CAAA,UAAA,CAAW,MAAM,QAAU,EAAA;AAC3D,QAAA,OAAO,EAAE,KAAM,CAAA,UAAA;AAAA;AAEjB,MAAO,OAAA,MAAA;AAAA,KACR,CAAA;AAED,IAAA,IAAI,CAAC,MAAQ,EAAA;AACX,MAAO,OAAA,IAAA;AAAA;AAGT,IAAO,OAAA,MAAA;AAAA;AACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,aAAa,cAAwB,EAAA;AAxG/C,IAAA,IAAA,EAAA;AAyGI,IAAA,MAAM,KAAQ,GAAA,iBAAA;AAAA,MACZ,KAAK,KAAM,CAAA,IAAA;AAAA,MACX,KAAK,KAAM,CAAA,EAAA;AAAA,MAAA,CACX,EAAK,GAAA,IAAA,CAAA,KAAA,CAAM,QAAX,KAAA,IAAA,GAAA,EAAA,GAAuB,WAAY,EAAA;AAAA,MACnC,KAAK,KAAM,CAAA,oBAAA;AAAA,MACX,KAAK,KAAM,CAAA,eAAA;AAAA,MACX,KAAK,KAAM,CAAA;AAAA,KACb;AAEA,IAAM,MAAA,IAAA,GAAO,MAAM,EAAG,CAAA,IAAA,CAAK,KAAK,KAAM,CAAA,KAAA,CAAM,IAAI,cAAc,CAAA;AAC9D,IAAA,IAAI,QAAQ,cAAgB,EAAA;AAC1B,MAAK,IAAA,CAAA,QAAA,CAAS,EAAE,KAAA,EAAO,CAAA;AAAA;AACzB;AACF,EAEQ,2BAA2B,OAAyB,EAAA;AAC1D,IAAM,MAAA,UAAA,GAAa,IAAK,CAAA,KAAA,CAAM,KAAM,CAAA,EAAA,CAAG,KAAK,IAAK,CAAA,KAAA,CAAM,KAAM,CAAA,IAAA,EAAM,cAAc,CAAA;AACjF,IAAA,OAAO,IAAK,CAAA,IAAA,CAAM,UAAa,GAAA,GAAA,GAAO,OAAO,CAAA;AAAA;AAC/C,EAEO,WAAwB,GAAA;AAE7B,IAAA,IAAI,KAAK,KAAM,CAAA,QAAA,IAAY,iBAAiB,IAAK,CAAA,KAAA,CAAM,QAAQ,CAAG,EAAA;AAChE,MAAA,OAAO,KAAK,KAAM,CAAA,QAAA;AAAA;AAIpB,IAAM,MAAA,cAAA,GAAiB,KAAK,iBAAkB,EAAA;AAC9C,IAAA,IAAI,mBAAmB,IAAQ,IAAA,gBAAA,CAAiB,cAAe,CAAA,KAAA,CAAM,QAAQ,CAAG,EAAA;AAC9E,MAAA,OAAO,eAAe,KAAM,CAAA,QAAA;AAAA;AAI9B,IAAA,OAAO,WAAY,EAAA;AAAA;AACrB,EAwDO,WAAc,GAAA;AACnB,IAAM,MAAA,MAAA,GAAS,gBAAgB,eAAgB,EAAA;AAC/C,IAAA,MAAM,SAAkC,GAAA,EAAE,IAAM,EAAA,IAAA,CAAK,KAAM,CAAA,IAAA,EAAM,EAAI,EAAA,IAAA,CAAK,KAAM,CAAA,EAAA,EAAI,QAAU,EAAA,IAAA,CAAK,aAAc,EAAA;AAGjH,IAAA,IAAI,MAAO,CAAA,IAAA,IAAQ,MAAO,CAAA,aAAa,CAAG,EAAA;AACxC,MAAA,SAAA,CAAU,IAAO,GAAA,IAAA;AACjB,MAAA,SAAA,CAAU,aAAa,CAAI,GAAA,IAAA;AAAA;AAG7B,IAAO,OAAA,SAAA;AAAA;AACT,EAEO,cAAc,MAA8B,EAAA;AAhNrD,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAiNI,IAAA,MAAM,SAAuC,EAAC;AAE9C,IAAI,IAAA,IAAA,GAAO,aAAc,CAAA,MAAA,CAAO,IAAI,CAAA;AACpC,IAAI,IAAA,EAAA,GAAK,aAAc,CAAA,MAAA,CAAO,EAAE,CAAA;AAEhC,IAAA,IAAI,MAAO,CAAA,IAAA,IAAQ,MAAO,CAAA,aAAa,CAAG,EAAA;AACxC,MAAM,MAAA,IAAA,GAAO,KAAM,CAAA,OAAA,CAAQ,MAAO,CAAA,IAAI,IAAI,MAAO,CAAA,IAAA,CAAK,CAAC,CAAA,GAAI,MAAO,CAAA,IAAA;AAClE,MAAA,MAAM,UAAa,GAAA,KAAA,CAAM,OAAQ,CAAA,MAAA,CAAO,aAAa,CAAC,CAAI,GAAA,MAAA,CAAO,aAAa,CAAA,CAAE,CAAC,CAAA,GAAI,OAAO,aAAa,CAAA;AACzG,MAAM,MAAA,SAAA,GAAY,aAAc,CAAA,IAAA,EAAM,UAAU,CAAA;AAChD,MAAA,IAAI,SAAU,CAAA,IAAA,IAAQ,OAAQ,CAAA,SAAA,CAAU,IAAI,CAAG,EAAA;AAC7C,QAAA,IAAA,GAAO,SAAU,CAAA,IAAA;AAAA;AAGnB,MAAA,IAAI,SAAU,CAAA,EAAA,IAAM,OAAQ,CAAA,SAAA,CAAU,EAAE,CAAG,EAAA;AACzC,QAAA,EAAA,GAAK,SAAU,CAAA,EAAA;AAAA;AACjB;AAGF,IAAI,IAAA,IAAA,IAAQ,OAAQ,CAAA,IAAI,CAAG,EAAA;AACzB,MAAA,MAAA,CAAO,IAAO,GAAA,IAAA;AAAA;AAGhB,IAAI,IAAA,EAAA,IAAM,OAAQ,CAAA,EAAE,CAAG,EAAA;AACrB,MAAA,MAAA,CAAO,EAAK,GAAA,EAAA;AAAA;AAGd,IAAI,IAAA,OAAO,MAAO,CAAA,QAAA,KAAa,QAAU,EAAA;AACvC,MAAA,MAAA,CAAO,QAAW,GAAA,MAAA,CAAO,QAAa,KAAA,EAAA,GAAK,OAAO,QAAW,GAAA,MAAA;AAAA;AAG/D,IAAA,IAAI,MAAO,CAAA,IAAA,CAAK,MAAM,CAAA,CAAE,WAAW,CAAG,EAAA;AACpC,MAAA;AAAA;AAGF,IAAA,MAAA,CAAO,KAAQ,GAAA,iBAAA;AAAA,MAAA,CACb,EAAO,GAAA,MAAA,CAAA,IAAA,KAAP,IAAe,GAAA,EAAA,GAAA,IAAA,CAAK,KAAM,CAAA,IAAA;AAAA,MAAA,CAC1B,EAAO,GAAA,MAAA,CAAA,EAAA,KAAP,IAAa,GAAA,EAAA,GAAA,IAAA,CAAK,KAAM,CAAA,EAAA;AAAA,MAAA,CACxB,EAAO,GAAA,MAAA,CAAA,QAAA,KAAP,IAAmB,GAAA,EAAA,GAAA,IAAA,CAAK,WAAY,EAAA;AAAA,MACpC,KAAK,KAAM,CAAA,oBAAA;AAAA,MACX,KAAK,KAAM,CAAA,eAAA;AAAA,MACX,KAAK,KAAM,CAAA;AAAA,KACb;AAEA,IAAO,OAAA,IAAA,CAAK,SAAS,MAAM,CAAA;AAAA;AAE/B;AAOA,SAAS,aAAA,CAAc,MAAc,UAAoB,EAAA;AAEvD,EAAA,MAAM,SAAY,GAAA,KAAA,CAAM,IAAK,CAAA,KAAA,CAAM,IAAI,CAAC,CAAI,GAAA,QAAA,CAAS,IAAM,EAAA,EAAE,CAAI,GAAA,IAAA,CAAK,MAAM,IAAI,CAAA;AAEhF,EAAI,IAAA,YAAA;AAEJ,EAAA,IAAI,WAAW,KAAM,CAAA,OAAO,KAAK,QAAS,CAAA,UAAA,EAAY,EAAE,CAAG,EAAA;AAEzD,IAAe,YAAA,GAAA,QAAA,CAAS,YAAY,EAAE,CAAA;AAAA,GACjC,MAAA;AACL,IAAe,YAAA,GAAA,SAAA,CAAU,aAAa,UAAU,CAAA;AAAA;AAGlD,EAAO,OAAA;AAAA,IACL,MAAM,KAAM,CAAA,SAAA,GAAY,YAAe,GAAA,CAAC,EAAE,WAAY,EAAA;AAAA,IACtD,IAAI,KAAM,CAAA,SAAA,GAAY,YAAe,GAAA,CAAC,EAAE,WAAY;AAAA,GACtD;AACF;AAOA,SAAS,iBAAiB,QAAuC,EAAA;AAC/D,EAAA,IAAI,aAAa,MAAW,EAAA;AAC1B,IAAO,OAAA,MAAA;AAAA;AAGT,EAAI,IAAA,OAAA,CAAQ,QAAQ,CAAG,EAAA;AACrB,IAAO,OAAA,MAAA,CAAO,SAAS,IAAK,CAAA,QAAA;AAAA;AAG9B,EAAA,IAAI,aAAa,eAAiB,EAAA;AAChC,IAAO,OAAA,QAAA;AAAA;AAGT,EAAI,IAAA,OAAA,CAAQ,QAAQ,CAAG,EAAA;AACrB,IAAO,OAAA,QAAA;AAAA;AAGT,EAAc,aAAA,CAAA,gBAAA,EAAkB,CAAqB,kBAAA,EAAA,QAAQ,CAAa,WAAA,CAAA,CAAA;AAC1E,EAAA;AACF;;;;"}
|
|
1
|
+
{"version":3,"file":"SceneTimeRange.js","sources":["../../../src/core/SceneTimeRange.tsx"],"sourcesContent":["import { getTimeZone, getZone, rangeUtil, setWeekStart, TimeRange, toUtc } from '@grafana/data';\nimport { defaultTimeZone, TimeZone } from '@grafana/schema';\n\nimport { SceneObjectUrlSyncConfig } from '../services/SceneObjectUrlSyncConfig';\n\nimport { SceneObjectBase } from './SceneObjectBase';\nimport { SceneTimeRangeLike, SceneTimeRangeState, SceneObjectUrlValues } from './types';\nimport { getClosest } from './sceneGraph/utils';\nimport { parseUrlParam } from '../utils/parseUrlParam';\nimport { evaluateTimeRange } from '../utils/evaluateTimeRange';\nimport { config, locationService, RefreshEvent } from '@grafana/runtime';\nimport { isValid } from '../utils/date';\nimport { getQueryController } from './sceneGraph/getQueryController';\nimport { writeSceneLog } from '../utils/writeSceneLog';\nimport { isEmpty } from 'lodash';\nimport { TIME_RANGE_CHANGE_INTERACTION } from '../behaviors/SceneRenderProfiler';\n\nexport class SceneTimeRange extends SceneObjectBase<SceneTimeRangeState> implements SceneTimeRangeLike {\n protected _urlSync = new SceneObjectUrlSyncConfig(this, { keys: ['from', 'to', 'timezone', 'time', 'time.window'] });\n\n public constructor(state: Partial<SceneTimeRangeState> = {}) {\n const from = state.from && isValid(state.from) ? state.from : 'now-6h';\n const to = state.to && isValid(state.to) ? state.to : 'now';\n const timeZone = getValidTimeZone(state.timeZone);\n const value = evaluateTimeRange(\n from,\n to,\n timeZone || getTimeZone(),\n state.fiscalYearStartMonth,\n state.UNSAFE_nowDelay,\n state.weekStart\n );\n const refreshOnActivate = state.refreshOnActivate ?? { percent: 10 };\n super({ from, to, timeZone, value, refreshOnActivate, ...state });\n\n this.addActivationHandler(this._onActivate.bind(this));\n }\n\n private _onActivate() {\n // When SceneTimeRange has no time zone provided, find closest source of time zone and subscribe to it\n if (!this.state.timeZone) {\n const timeZoneSource = this.getTimeZoneSource();\n if (timeZoneSource !== this) {\n this._subs.add(\n timeZoneSource.subscribeToState((n, p) => {\n if (n.timeZone !== undefined && n.timeZone !== p.timeZone) {\n this.refreshRange(0);\n }\n })\n );\n }\n }\n\n if (rangeUtil.isRelativeTimeRange(this.state.value.raw)) {\n this.refreshIfStale();\n }\n\n return () => {\n if (this.state.weekStart) {\n setWeekStart(config.bootData.user.weekStart);\n }\n };\n }\n\n private refreshIfStale() {\n let ms;\n if (this.state?.refreshOnActivate?.percent !== undefined) {\n ms = this.calculatePercentOfInterval(this.state.refreshOnActivate.percent);\n }\n if (this.state?.refreshOnActivate?.afterMs !== undefined) {\n ms = Math.min(this.state.refreshOnActivate.afterMs, ms ?? Infinity);\n }\n if (ms !== undefined) {\n this.refreshRange(ms);\n }\n }\n\n /**\n * Will traverse up the scene graph to find the closest SceneTimeRangeLike with time zone set\n */\n private getTimeZoneSource() {\n if (!this.parent || !this.parent.parent) {\n return this;\n }\n // Find the closest source of time zone\n const source = getClosest<SceneTimeRangeLike>(this.parent.parent, (o) => {\n if (o.state.$timeRange && o.state.$timeRange.state.timeZone) {\n return o.state.$timeRange;\n }\n return undefined;\n });\n\n if (!source) {\n return this;\n }\n\n return source;\n }\n\n /**\n * Refreshes time range if it is older than the invalidation interval\n * @param refreshAfterMs invalidation interval (milliseconds)\n * @private\n */\n private refreshRange(refreshAfterMs: number) {\n const value = evaluateTimeRange(\n this.state.from,\n this.state.to,\n this.state.timeZone ?? getTimeZone(),\n this.state.fiscalYearStartMonth,\n this.state.UNSAFE_nowDelay,\n this.state.weekStart\n );\n\n const diff = value.to.diff(this.state.value.to, 'milliseconds');\n if (diff >= refreshAfterMs) {\n this.setState({ value });\n }\n }\n\n private calculatePercentOfInterval(percent: number): number {\n const intervalMs = this.state.value.to.diff(this.state.value.from, 'milliseconds');\n return Math.ceil((intervalMs / 100) * percent);\n }\n\n public getTimeZone(): TimeZone {\n // Return local time zone if provided\n if (this.state.timeZone && getValidTimeZone(this.state.timeZone)) {\n return this.state.timeZone;\n }\n\n // Resolve higher level time zone source\n const timeZoneSource = this.getTimeZoneSource();\n if (timeZoneSource !== this && getValidTimeZone(timeZoneSource.state.timeZone)) {\n return timeZoneSource.state.timeZone!;\n }\n\n // Return default time zone\n return getTimeZone();\n }\n\n public onTimeRangeChange = (timeRange: TimeRange) => {\n const update: Partial<SceneTimeRangeState> = {};\n\n if (typeof timeRange.raw.from === 'string') {\n update.from = timeRange.raw.from;\n } else {\n update.from = timeRange.raw.from.toISOString();\n }\n\n if (typeof timeRange.raw.to === 'string') {\n update.to = timeRange.raw.to;\n } else {\n update.to = timeRange.raw.to.toISOString();\n }\n\n update.value = evaluateTimeRange(\n update.from,\n update.to,\n this.getTimeZone(),\n this.state.fiscalYearStartMonth,\n this.state.UNSAFE_nowDelay,\n this.state.weekStart\n );\n\n // Only update if time range actually changed\n if (update.from !== this.state.from || update.to !== this.state.to) {\n const queryController = getQueryController(this);\n queryController?.startProfile(TIME_RANGE_CHANGE_INTERACTION);\n this._urlSync.performBrowserHistoryAction(() => {\n this.setState(update);\n });\n }\n };\n\n public onTimeZoneChange = (timeZone: TimeZone) => {\n this._urlSync.performBrowserHistoryAction(() => {\n const validTimeZone = getValidTimeZone(timeZone) ?? defaultTimeZone;\n const updatedValue = evaluateTimeRange(\n this.state.from,\n this.state.to,\n validTimeZone,\n this.state.fiscalYearStartMonth,\n this.state.UNSAFE_nowDelay,\n this.state.weekStart\n );\n this.setState({ timeZone: validTimeZone, value: updatedValue });\n });\n };\n\n public onRefresh = () => {\n this.refreshRange(0);\n this.publishEvent(new RefreshEvent(), true);\n };\n\n public getUrlState() {\n const params = locationService.getSearchObject();\n // Use state.timeZone if explicitly set, otherwise use getTimeZone() to resolve from parent or default\n // This preserves explicit timezone values like \"browser\" instead of resolving them\n const urlValues: SceneObjectUrlValues = {\n from: this.state.from,\n to: this.state.to,\n timezone: this.state.timeZone !== undefined ? this.state.timeZone : this.getTimeZone(),\n };\n\n // Clear time and time.window once they are converted to from and to\n if (params.time && params['time.window']) {\n urlValues.time = null;\n urlValues['time.window'] = null;\n }\n\n return urlValues;\n }\n\n public updateFromUrl(values: SceneObjectUrlValues) {\n const update: Partial<SceneTimeRangeState> = {};\n\n let from = parseUrlParam(values.from);\n let to = parseUrlParam(values.to);\n\n if (values.time && values['time.window']) {\n const time = Array.isArray(values.time) ? values.time[0] : values.time;\n const timeWindow = Array.isArray(values['time.window']) ? values['time.window'][0] : values['time.window'];\n const timeRange = getTimeWindow(time, timeWindow);\n if (timeRange.from && isValid(timeRange.from)) {\n from = timeRange.from;\n }\n\n if (timeRange.to && isValid(timeRange.to)) {\n to = timeRange.to;\n }\n }\n\n if (from && isValid(from)) {\n update.from = from;\n }\n\n if (to && isValid(to)) {\n update.to = to;\n }\n\n if (typeof values.timezone === 'string') {\n update.timeZone = values.timezone !== '' ? values.timezone : undefined;\n }\n\n if (Object.keys(update).length === 0) {\n return;\n }\n\n update.value = evaluateTimeRange(\n update.from ?? this.state.from,\n update.to ?? this.state.to,\n update.timeZone ?? this.getTimeZone(),\n this.state.fiscalYearStartMonth,\n this.state.UNSAFE_nowDelay,\n this.state.weekStart\n );\n\n return this.setState(update);\n }\n}\n\n/**\n * Calculates the duration of the time range from time-time.window/2 to time+time.window/2. Both be specified in ms. For example ?time=1500000000000&time.window=10000 results in a 10-second time range from 1499999995000 to 1500000005000`.\n * @param time - time in ms\n * @param timeWindow - time window in ms or interval string\n */\nfunction getTimeWindow(time: string, timeWindow: string) {\n // Parse the time, assuming it could be an ISO string or a number in milliseconds\n const valueTime = isNaN(Date.parse(time)) ? parseInt(time, 10) : Date.parse(time);\n\n let timeWindowMs;\n\n if (timeWindow.match(/^\\d+$/) && parseInt(timeWindow, 10)) {\n // when time window is specified in ms\n timeWindowMs = parseInt(timeWindow, 10);\n } else {\n timeWindowMs = rangeUtil.intervalToMs(timeWindow);\n }\n\n return {\n from: toUtc(valueTime - timeWindowMs / 2).toISOString(),\n to: toUtc(valueTime + timeWindowMs / 2).toISOString(),\n };\n}\n\n/**\n * Validates and returns a valid time zone string or undefined.\n * @param {string} [timeZone] - The time zone to validate. Can be a valid IANA time zone string, the string \"browser\", or undefined.\n * @returns {string | undefined} - Returns the input time zone if it is valid, or undefined if the input is invalid or not provided.\n */\nfunction getValidTimeZone(timeZone?: string): string | undefined {\n if (timeZone === undefined) {\n return undefined;\n }\n\n if (isEmpty(timeZone)) {\n return config.bootData.user.timezone;\n }\n\n if (timeZone === defaultTimeZone) {\n return timeZone;\n }\n\n if (getZone(timeZone)) {\n return timeZone;\n }\n\n writeSceneLog('SceneTimeRange', `Invalid timeZone \"${timeZone}\" provided.`);\n return;\n}\n"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1587,7 +1587,11 @@ class SceneTimeRange extends SceneObjectBase {
|
|
|
1587
1587
|
}
|
|
1588
1588
|
getUrlState() {
|
|
1589
1589
|
const params = runtime.locationService.getSearchObject();
|
|
1590
|
-
const urlValues = {
|
|
1590
|
+
const urlValues = {
|
|
1591
|
+
from: this.state.from,
|
|
1592
|
+
to: this.state.to,
|
|
1593
|
+
timezone: this.state.timeZone !== void 0 ? this.state.timeZone : this.getTimeZone()
|
|
1594
|
+
};
|
|
1591
1595
|
if (params.time && params["time.window"]) {
|
|
1592
1596
|
urlValues.time = null;
|
|
1593
1597
|
urlValues["time.window"] = null;
|