@grafana/scenes 4.3.0--canary.667.8525833293.0 → 4.3.0--canary.667.8535889509.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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ # v4.2.1 (Wed Apr 03 2024)
2
+
3
+ #### 🐛 Bug Fix
4
+
5
+ - LiveNowTimer: The constructor doesn't receive a valid state [#662](https://github.com/grafana/scenes/pull/662) ([@ivanortegaalba](https://github.com/ivanortegaalba))
6
+
7
+ #### Authors: 1
8
+
9
+ - Ivan Ortega Alba ([@ivanortegaalba](https://github.com/ivanortegaalba))
10
+
11
+ ---
12
+
1
13
  # v4.2.0 (Tue Apr 02 2024)
2
14
 
3
15
  #### 🚀 Enhancement
@@ -3,7 +3,7 @@ import { SceneObjectBase } from '../core/SceneObjectBase.js';
3
3
  import { sceneGraph } from '../core/sceneGraph/index.js';
4
4
 
5
5
  const _LiveNowTimer = class extends SceneObjectBase {
6
- constructor(enabled = false) {
6
+ constructor({ enabled = false }) {
7
7
  super({ enabled });
8
8
  this.timerId = void 0;
9
9
  this._activationHandler = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"LiveNowTimer.js","sources":["../../../src/behaviors/LiveNowTimer.ts"],"sourcesContent":["import { VizPanel } from \"../components/VizPanel/VizPanel\";\nimport { SceneObjectBase } from \"../core/SceneObjectBase\";\nimport { sceneGraph } from \"../core/sceneGraph\";\nimport { SceneObjectState } from \"../core/types\";\n\ninterface LiveNowTimerState extends SceneObjectState {\n enabled: boolean;\n}\n\nexport class LiveNowTimer extends SceneObjectBase<LiveNowTimerState> {\n private timerId: number | undefined = undefined;\n private static REFRESH_RATE = 100; // ms\n\n public constructor(enabled = false) {\n super({ enabled });\n this.addActivationHandler(this._activationHandler);\n }\n \n private _activationHandler = () => {\n if (this.state.enabled) {\n this.enable();\n }\n\n return () => {\n window.clearInterval(this.timerId);\n this.timerId = undefined;\n }\n }\n \n public enable() {\n window.clearInterval(this.timerId);\n this.timerId = undefined;\n this.timerId = window.setInterval(() => {\n const panels = sceneGraph.findAllObjects(this.getRoot(), (obj) => obj instanceof VizPanel) as VizPanel[];\n for (const panel of panels) {\n panel.forceRender();\n }\n }, LiveNowTimer.REFRESH_RATE);\n this.setState({ enabled: true })\n } \n \n public disable() {\n window.clearInterval(this.timerId);\n this.timerId = undefined;\n this.setState({ enabled: false })\n }\n\n public get isEnabled() {\n return this.state.enabled;\n }\n}\n"],"names":[],"mappings":";;;;AASO,MAAM,aAAA,GAAN,cAA2B,eAAmC,CAAA;AAAA,EAI1D,WAAA,CAAY,UAAU,KAAO,EAAA;AAClC,IAAM,KAAA,CAAA,EAAE,SAAS,CAAA,CAAA;AAJnB,IAAA,IAAA,CAAQ,OAA8B,GAAA,KAAA,CAAA,CAAA;AAQtC,IAAA,IAAA,CAAQ,qBAAqB,MAAM;AACjC,MAAI,IAAA,IAAA,CAAK,MAAM,OAAS,EAAA;AACtB,QAAA,IAAA,CAAK,MAAO,EAAA,CAAA;AAAA,OACd;AAEA,MAAA,OAAO,MAAM;AACX,QAAO,MAAA,CAAA,aAAA,CAAc,KAAK,OAAO,CAAA,CAAA;AACjC,QAAA,IAAA,CAAK,OAAU,GAAA,KAAA,CAAA,CAAA;AAAA,OACjB,CAAA;AAAA,KACF,CAAA;AAZE,IAAK,IAAA,CAAA,oBAAA,CAAqB,KAAK,kBAAkB,CAAA,CAAA;AAAA,GACnD;AAAA,EAaO,MAAS,GAAA;AACd,IAAO,MAAA,CAAA,aAAA,CAAc,KAAK,OAAO,CAAA,CAAA;AACjC,IAAA,IAAA,CAAK,OAAU,GAAA,KAAA,CAAA,CAAA;AACf,IAAK,IAAA,CAAA,OAAA,GAAU,MAAO,CAAA,WAAA,CAAY,MAAM;AACtC,MAAM,MAAA,MAAA,GAAS,WAAW,cAAe,CAAA,IAAA,CAAK,SAAW,EAAA,CAAC,GAAQ,KAAA,GAAA,YAAe,QAAQ,CAAA,CAAA;AACzF,MAAA,KAAA,MAAW,SAAS,MAAQ,EAAA;AAC1B,QAAA,KAAA,CAAM,WAAY,EAAA,CAAA;AAAA,OACpB;AAAA,KACF,EAAG,cAAa,YAAY,CAAA,CAAA;AAC5B,IAAA,IAAA,CAAK,QAAS,CAAA,EAAE,OAAS,EAAA,IAAA,EAAM,CAAA,CAAA;AAAA,GACjC;AAAA,EAEO,OAAU,GAAA;AACf,IAAO,MAAA,CAAA,aAAA,CAAc,KAAK,OAAO,CAAA,CAAA;AACjC,IAAA,IAAA,CAAK,OAAU,GAAA,KAAA,CAAA,CAAA;AACf,IAAA,IAAA,CAAK,QAAS,CAAA,EAAE,OAAS,EAAA,KAAA,EAAO,CAAA,CAAA;AAAA,GAClC;AAAA,EAEA,IAAW,SAAY,GAAA;AACnB,IAAA,OAAO,KAAK,KAAM,CAAA,OAAA,CAAA;AAAA,GACtB;AACJ,CAAA,CAAA;AAzCO,IAAM,YAAN,GAAA,cAAA;AAAM,YAAA,CAEM,YAAe,GAAA,GAAA;;;;"}
1
+ {"version":3,"file":"LiveNowTimer.js","sources":["../../../src/behaviors/LiveNowTimer.ts"],"sourcesContent":["import { VizPanel } from '../components/VizPanel/VizPanel';\nimport { SceneObjectBase } from '../core/SceneObjectBase';\nimport { sceneGraph } from '../core/sceneGraph';\nimport { SceneObjectState } from '../core/types';\n\ninterface LiveNowTimerState extends SceneObjectState {\n enabled: boolean;\n}\n\nexport class LiveNowTimer extends SceneObjectBase<LiveNowTimerState> {\n private timerId: number | undefined = undefined;\n private static REFRESH_RATE = 100; // ms\n\n public constructor({ enabled = false }) {\n super({ enabled });\n this.addActivationHandler(this._activationHandler);\n }\n\n private _activationHandler = () => {\n if (this.state.enabled) {\n this.enable();\n }\n\n return () => {\n window.clearInterval(this.timerId);\n this.timerId = undefined;\n };\n };\n\n public enable() {\n window.clearInterval(this.timerId);\n this.timerId = undefined;\n this.timerId = window.setInterval(() => {\n const panels = sceneGraph.findAllObjects(this.getRoot(), (obj) => obj instanceof VizPanel) as VizPanel[];\n for (const panel of panels) {\n panel.forceRender();\n }\n }, LiveNowTimer.REFRESH_RATE);\n this.setState({ enabled: true });\n }\n\n public disable() {\n window.clearInterval(this.timerId);\n this.timerId = undefined;\n this.setState({ enabled: false });\n }\n\n public get isEnabled() {\n return this.state.enabled;\n }\n}\n"],"names":[],"mappings":";;;;AASO,MAAM,aAAA,GAAN,cAA2B,eAAmC,CAAA;AAAA,EAI5D,WAAY,CAAA,EAAE,OAAU,GAAA,KAAA,EAAS,EAAA;AACtC,IAAM,KAAA,CAAA,EAAE,SAAS,CAAA,CAAA;AAJnB,IAAA,IAAA,CAAQ,OAA8B,GAAA,KAAA,CAAA,CAAA;AAQtC,IAAA,IAAA,CAAQ,qBAAqB,MAAM;AACjC,MAAI,IAAA,IAAA,CAAK,MAAM,OAAS,EAAA;AACtB,QAAA,IAAA,CAAK,MAAO,EAAA,CAAA;AAAA,OACd;AAEA,MAAA,OAAO,MAAM;AACX,QAAO,MAAA,CAAA,aAAA,CAAc,KAAK,OAAO,CAAA,CAAA;AACjC,QAAA,IAAA,CAAK,OAAU,GAAA,KAAA,CAAA,CAAA;AAAA,OACjB,CAAA;AAAA,KACF,CAAA;AAZE,IAAK,IAAA,CAAA,oBAAA,CAAqB,KAAK,kBAAkB,CAAA,CAAA;AAAA,GACnD;AAAA,EAaO,MAAS,GAAA;AACd,IAAO,MAAA,CAAA,aAAA,CAAc,KAAK,OAAO,CAAA,CAAA;AACjC,IAAA,IAAA,CAAK,OAAU,GAAA,KAAA,CAAA,CAAA;AACf,IAAK,IAAA,CAAA,OAAA,GAAU,MAAO,CAAA,WAAA,CAAY,MAAM;AACtC,MAAM,MAAA,MAAA,GAAS,WAAW,cAAe,CAAA,IAAA,CAAK,SAAW,EAAA,CAAC,GAAQ,KAAA,GAAA,YAAe,QAAQ,CAAA,CAAA;AACzF,MAAA,KAAA,MAAW,SAAS,MAAQ,EAAA;AAC1B,QAAA,KAAA,CAAM,WAAY,EAAA,CAAA;AAAA,OACpB;AAAA,KACF,EAAG,cAAa,YAAY,CAAA,CAAA;AAC5B,IAAA,IAAA,CAAK,QAAS,CAAA,EAAE,OAAS,EAAA,IAAA,EAAM,CAAA,CAAA;AAAA,GACjC;AAAA,EAEO,OAAU,GAAA;AACf,IAAO,MAAA,CAAA,aAAA,CAAc,KAAK,OAAO,CAAA,CAAA;AACjC,IAAA,IAAA,CAAK,OAAU,GAAA,KAAA,CAAA,CAAA;AACf,IAAA,IAAA,CAAK,QAAS,CAAA,EAAE,OAAS,EAAA,KAAA,EAAO,CAAA,CAAA;AAAA,GAClC;AAAA,EAEA,IAAW,SAAY,GAAA;AACrB,IAAA,OAAO,KAAK,KAAM,CAAA,OAAA,CAAA;AAAA,GACpB;AACF,CAAA,CAAA;AAzCO,IAAM,YAAN,GAAA,cAAA;AAAM,YAAA,CAEI,YAAe,GAAA,GAAA;;;;"}
@@ -25,20 +25,16 @@ var __spreadValues = (a, b) => {
25
25
  return a;
26
26
  };
27
27
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
28
- const AUTO_REFRESH_INTERVAL = "auto";
29
28
  const DEFAULT_INTERVALS = ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"];
30
29
  class SceneRefreshPicker extends SceneObjectBase {
31
30
  constructor(state) {
32
31
  var _a, _b, _c;
33
- const autoEnabled = (_a = state.autoEnabled) != null ? _a : true;
34
- let intervals = (_b = state.intervals) != null ? _b : DEFAULT_INTERVALS;
35
- intervals = autoEnabled ? [AUTO_REFRESH_INTERVAL, ...intervals] : intervals;
36
32
  super(__spreadProps(__spreadValues({
37
33
  refresh: ""
38
34
  }, state), {
39
- autoEnabled,
40
- autoMinInterval: (_c = state.autoMinInterval) != null ? _c : config.minRefreshInterval,
41
- intervals
35
+ autoEnabled: (_a = state.autoEnabled) != null ? _a : true,
36
+ autoMinInterval: (_b = state.autoMinInterval) != null ? _b : config.minRefreshInterval,
37
+ intervals: (_c = state.intervals) != null ? _c : DEFAULT_INTERVALS
42
38
  }));
43
39
  this._urlSync = new SceneObjectUrlSyncConfig(this, { keys: ["refresh"] });
44
40
  this.onRefresh = () => {
@@ -84,11 +80,11 @@ class SceneRefreshPicker extends SceneObjectBase {
84
80
  if (refresh === "") {
85
81
  return;
86
82
  }
87
- if (intervals && !intervals.includes(refresh)) {
83
+ if (refresh !== RefreshPicker.autoOption.value && intervals && !intervals.includes(refresh)) {
88
84
  return;
89
85
  }
90
86
  let intervalMs;
91
- if (refresh === AUTO_REFRESH_INTERVAL) {
87
+ if (refresh === RefreshPicker.autoOption.value) {
92
88
  intervalMs = this.calculateAutoRefreshInterval();
93
89
  this._timeRangeListener = this.setupTimeRangeListener();
94
90
  } else {
@@ -127,7 +123,7 @@ class SceneRefreshPicker extends SceneObjectBase {
127
123
  }
128
124
  SceneRefreshPicker.Component = SceneRefreshPickerRenderer;
129
125
  function SceneRefreshPickerRenderer({ model }) {
130
- const { refresh, intervals, isOnCanvas, primary, withText } = model.useState();
126
+ const { refresh, intervals, autoEnabled, isOnCanvas, primary, withText } = model.useState();
131
127
  const isRunning = useQueryControllerState(model);
132
128
  let text = withText ? "Refresh" : void 0;
133
129
  let tooltip;
@@ -138,6 +134,7 @@ function SceneRefreshPickerRenderer({ model }) {
138
134
  }
139
135
  }
140
136
  return /* @__PURE__ */ React.createElement(RefreshPicker, {
137
+ showAutoInterval: autoEnabled,
141
138
  value: refresh,
142
139
  intervals,
143
140
  tooltip,
@@ -157,5 +154,5 @@ function useQueryControllerState(model) {
157
154
  return queryController.useState().isRunning;
158
155
  }
159
156
 
160
- export { AUTO_REFRESH_INTERVAL, DEFAULT_INTERVALS, SceneRefreshPicker, SceneRefreshPickerRenderer };
157
+ export { DEFAULT_INTERVALS, SceneRefreshPicker, SceneRefreshPickerRenderer };
161
158
  //# sourceMappingURL=SceneRefreshPicker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SceneRefreshPicker.js","sources":["../../../src/components/SceneRefreshPicker.tsx"],"sourcesContent":["import React from 'react';\nimport { Unsubscribable } from 'rxjs';\nimport { rangeUtil } from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { RefreshPicker } from '@grafana/ui';\n\nimport { SceneObjectBase } from '../core/SceneObjectBase';\nimport { sceneGraph } from '../core/sceneGraph';\nimport { SceneComponentProps, SceneObject, SceneObjectState, SceneObjectUrlValues } from '../core/types';\nimport { SceneObjectUrlSyncConfig } from '../services/SceneObjectUrlSyncConfig';\n\nexport const AUTO_REFRESH_INTERVAL = 'auto';\nexport const DEFAULT_INTERVALS = ['5s', '10s', '30s', '1m', '5m', '15m', '30m', '1h', '2h', '1d'];\n\nexport interface SceneRefreshPickerState extends SceneObjectState {\n // Refresh interval, e.g. 5s, 1m, 2h\n refresh: string;\n autoEnabled?: boolean;\n autoMinInterval?: string;\n // List of allowed refresh intervals, e.g. ['5s', '1m']\n intervals?: string[];\n isOnCanvas?: boolean;\n primary?: boolean;\n withText?: boolean;\n}\n\nexport class SceneRefreshPicker extends SceneObjectBase<SceneRefreshPickerState> {\n public static Component = SceneRefreshPickerRenderer;\n protected _urlSync = new SceneObjectUrlSyncConfig(this, { keys: ['refresh'] });\n private _intervalTimer: ReturnType<typeof setInterval> | undefined;\n private _timeRangeListener: Unsubscribable | undefined;\n\n public constructor(state: Partial<SceneRefreshPickerState>) {\n const autoEnabled = state.autoEnabled ?? true;\n let intervals = state.intervals ?? DEFAULT_INTERVALS;\n intervals = autoEnabled ? [AUTO_REFRESH_INTERVAL, ...intervals] : intervals;\n\n super({\n refresh: '',\n ...state,\n autoEnabled,\n autoMinInterval: state.autoMinInterval ?? config.minRefreshInterval,\n intervals,\n });\n\n this.addActivationHandler(() => {\n this.setupIntervalTimer();\n\n return () => {\n if (this._intervalTimer) {\n clearInterval(this._intervalTimer);\n }\n\n this._timeRangeListener?.unsubscribe();\n };\n });\n }\n\n public onRefresh = () => {\n const queryController = sceneGraph.getQueryController(this);\n if (queryController?.state.isRunning) {\n queryController.cancelAll();\n return;\n }\n\n const timeRange = sceneGraph.getTimeRange(this);\n\n if (this._intervalTimer) {\n clearInterval(this._intervalTimer);\n }\n\n timeRange.onRefresh();\n this.setupIntervalTimer();\n };\n\n public onIntervalChanged = (interval: string) => {\n this.setState({ refresh: interval });\n this.setupIntervalTimer();\n };\n\n public getUrlState() {\n return {\n refresh: this.state.refresh,\n };\n }\n\n public updateFromUrl(values: SceneObjectUrlValues) {\n const refresh = values.refresh;\n\n if (refresh && typeof refresh === 'string') {\n this.setState({\n refresh,\n });\n }\n }\n\n private setupTimeRangeListener = () => {\n // If the time range has changed, we need to recalculate the auto interval\n // But we need to prevent unnecessary recalculations\n // So we just check if what actually matters to the algorithm is indeed changed\n // Alternatively we could just check if from, to, timeZone, fiscal year start month and now delay are changed\n return sceneGraph.getTimeRange(this).subscribeToState((newState, prevState) => {\n const newDiff = newState.value.to.valueOf() - newState.value.from.valueOf();\n const prevDiff = prevState.value.to.valueOf() - prevState.value.from.valueOf();\n\n if (newDiff !== prevDiff) {\n this.setupIntervalTimer();\n }\n });\n };\n\n private calculateAutoRefreshInterval = () => {\n const timeRange = sceneGraph.getTimeRange(this);\n const resolution = window?.innerWidth ?? 2000;\n const { intervalMs } = rangeUtil.calculateInterval(timeRange.state.value, resolution, this.state.autoMinInterval);\n return intervalMs;\n };\n\n private setupIntervalTimer = () => {\n const timeRange = sceneGraph.getTimeRange(this);\n const { refresh, intervals } = this.state;\n\n if (this._intervalTimer || refresh === '') {\n clearInterval(this._intervalTimer);\n }\n\n if (refresh === '') {\n return;\n }\n\n // If the provided interval is not allowed\n if (intervals && !intervals.includes(refresh)) {\n return;\n }\n\n let intervalMs: number;\n\n if (refresh === AUTO_REFRESH_INTERVAL) {\n intervalMs = this.calculateAutoRefreshInterval();\n this._timeRangeListener = this.setupTimeRangeListener();\n } else {\n intervalMs = rangeUtil.intervalToMs(refresh);\n this._timeRangeListener?.unsubscribe();\n this._timeRangeListener = undefined;\n }\n\n this._intervalTimer = setInterval(() => {\n timeRange.onRefresh();\n }, intervalMs);\n };\n}\n\nexport function SceneRefreshPickerRenderer({ model }: SceneComponentProps<SceneRefreshPicker>) {\n const { refresh, intervals, isOnCanvas, primary, withText } = model.useState();\n const isRunning = useQueryControllerState(model);\n\n let text = withText ? 'Refresh' : undefined;\n let tooltip: string | undefined;\n\n if (isRunning) {\n tooltip = 'Cancel all queries';\n\n if (withText) {\n text = 'Cancel';\n }\n }\n\n return (\n <RefreshPicker\n value={refresh}\n intervals={intervals}\n tooltip={tooltip}\n text={text}\n onRefresh={model.onRefresh}\n primary={primary}\n onIntervalChanged={model.onIntervalChanged}\n isLoading={isRunning}\n isOnCanvas={isOnCanvas ?? true}\n />\n );\n}\n\nfunction useQueryControllerState(model: SceneObject): boolean {\n const queryController = sceneGraph.getQueryController(model);\n if (!queryController) {\n return false;\n }\n\n return queryController.useState().isRunning;\n}\n"],"names":["_a"],"mappings":"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"}
1
+ {"version":3,"file":"SceneRefreshPicker.js","sources":["../../../src/components/SceneRefreshPicker.tsx"],"sourcesContent":["import React from 'react';\nimport { Unsubscribable } from 'rxjs';\nimport { rangeUtil } from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { RefreshPicker } from '@grafana/ui';\n\nimport { SceneObjectBase } from '../core/SceneObjectBase';\nimport { sceneGraph } from '../core/sceneGraph';\nimport { SceneComponentProps, SceneObject, SceneObjectState, SceneObjectUrlValues } from '../core/types';\nimport { SceneObjectUrlSyncConfig } from '../services/SceneObjectUrlSyncConfig';\n\nexport const DEFAULT_INTERVALS = ['5s', '10s', '30s', '1m', '5m', '15m', '30m', '1h', '2h', '1d'];\n\nexport interface SceneRefreshPickerState extends SceneObjectState {\n // Refresh interval, e.g. 5s, 1m, 2h\n refresh: string;\n autoEnabled?: boolean;\n autoMinInterval?: string;\n // List of allowed refresh intervals, e.g. ['5s', '1m']\n intervals?: string[];\n isOnCanvas?: boolean;\n primary?: boolean;\n withText?: boolean;\n}\n\nexport class SceneRefreshPicker extends SceneObjectBase<SceneRefreshPickerState> {\n public static Component = SceneRefreshPickerRenderer;\n protected _urlSync = new SceneObjectUrlSyncConfig(this, { keys: ['refresh'] });\n private _intervalTimer: ReturnType<typeof setInterval> | undefined;\n private _timeRangeListener: Unsubscribable | undefined;\n\n public constructor(state: Partial<SceneRefreshPickerState>) {\n super({\n refresh: '',\n ...state,\n autoEnabled: state.autoEnabled ?? true,\n autoMinInterval: state.autoMinInterval ?? config.minRefreshInterval,\n intervals: state.intervals ?? DEFAULT_INTERVALS,\n });\n\n this.addActivationHandler(() => {\n this.setupIntervalTimer();\n\n return () => {\n if (this._intervalTimer) {\n clearInterval(this._intervalTimer);\n }\n\n this._timeRangeListener?.unsubscribe();\n };\n });\n }\n\n public onRefresh = () => {\n const queryController = sceneGraph.getQueryController(this);\n if (queryController?.state.isRunning) {\n queryController.cancelAll();\n return;\n }\n\n const timeRange = sceneGraph.getTimeRange(this);\n\n if (this._intervalTimer) {\n clearInterval(this._intervalTimer);\n }\n\n timeRange.onRefresh();\n this.setupIntervalTimer();\n };\n\n public onIntervalChanged = (interval: string) => {\n this.setState({ refresh: interval });\n this.setupIntervalTimer();\n };\n\n public getUrlState() {\n return {\n refresh: this.state.refresh,\n };\n }\n\n public updateFromUrl(values: SceneObjectUrlValues) {\n const refresh = values.refresh;\n\n if (refresh && typeof refresh === 'string') {\n this.setState({\n refresh,\n });\n }\n }\n\n private setupTimeRangeListener = () => {\n // If the time range has changed, we need to recalculate the auto interval\n // But we need to prevent unnecessary recalculations\n // So we just check if what actually matters to the algorithm is indeed changed\n // Alternatively we could just check if from, to, timeZone, fiscal year start month and now delay are changed\n return sceneGraph.getTimeRange(this).subscribeToState((newState, prevState) => {\n const newDiff = newState.value.to.valueOf() - newState.value.from.valueOf();\n const prevDiff = prevState.value.to.valueOf() - prevState.value.from.valueOf();\n\n if (newDiff !== prevDiff) {\n this.setupIntervalTimer();\n }\n });\n };\n\n private calculateAutoRefreshInterval = () => {\n const timeRange = sceneGraph.getTimeRange(this);\n const resolution = window?.innerWidth ?? 2000;\n const { intervalMs } = rangeUtil.calculateInterval(timeRange.state.value, resolution, this.state.autoMinInterval);\n return intervalMs;\n };\n\n private setupIntervalTimer = () => {\n const timeRange = sceneGraph.getTimeRange(this);\n const { refresh, intervals } = this.state;\n\n if (this._intervalTimer || refresh === '') {\n clearInterval(this._intervalTimer);\n }\n\n if (refresh === '') {\n return;\n }\n\n // If the provided interval is not allowed\n if (refresh !== RefreshPicker.autoOption.value && intervals && !intervals.includes(refresh)) {\n return;\n }\n\n let intervalMs: number;\n\n if (refresh === RefreshPicker.autoOption.value) {\n intervalMs = this.calculateAutoRefreshInterval();\n this._timeRangeListener = this.setupTimeRangeListener();\n } else {\n intervalMs = rangeUtil.intervalToMs(refresh);\n this._timeRangeListener?.unsubscribe();\n this._timeRangeListener = undefined;\n }\n\n this._intervalTimer = setInterval(() => {\n timeRange.onRefresh();\n }, intervalMs);\n };\n}\n\nexport function SceneRefreshPickerRenderer({ model }: SceneComponentProps<SceneRefreshPicker>) {\n const { refresh, intervals, autoEnabled, isOnCanvas, primary, withText } = model.useState();\n const isRunning = useQueryControllerState(model);\n\n let text = withText ? 'Refresh' : undefined;\n let tooltip: string | undefined;\n\n if (isRunning) {\n tooltip = 'Cancel all queries';\n\n if (withText) {\n text = 'Cancel';\n }\n }\n\n return (\n <RefreshPicker\n showAutoInterval={autoEnabled}\n value={refresh}\n intervals={intervals}\n tooltip={tooltip}\n text={text}\n onRefresh={model.onRefresh}\n primary={primary}\n onIntervalChanged={model.onIntervalChanged}\n isLoading={isRunning}\n isOnCanvas={isOnCanvas ?? true}\n />\n );\n}\n\nfunction useQueryControllerState(model: SceneObject): boolean {\n const queryController = sceneGraph.getQueryController(model);\n if (!queryController) {\n return false;\n }\n\n return queryController.useState().isRunning;\n}\n"],"names":["_a"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1089,7 +1089,9 @@ interface LiveNowTimerState extends SceneObjectState {
1089
1089
  declare class LiveNowTimer extends SceneObjectBase<LiveNowTimerState> {
1090
1090
  private timerId;
1091
1091
  private static REFRESH_RATE;
1092
- constructor(enabled?: boolean);
1092
+ constructor({ enabled }: {
1093
+ enabled?: boolean | undefined;
1094
+ });
1093
1095
  private _activationHandler;
1094
1096
  enable(): void;
1095
1097
  disable(): void;
package/dist/index.js CHANGED
@@ -3032,7 +3032,7 @@ function getPanelPluginNotFound(id) {
3032
3032
  }
3033
3033
 
3034
3034
  const _LiveNowTimer = class extends SceneObjectBase {
3035
- constructor(enabled = false) {
3035
+ constructor({ enabled = false }) {
3036
3036
  super({ enabled });
3037
3037
  this.timerId = void 0;
3038
3038
  this._activationHandler = () => {
@@ -8470,20 +8470,16 @@ var __spreadValues$5 = (a, b) => {
8470
8470
  return a;
8471
8471
  };
8472
8472
  var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));
8473
- const AUTO_REFRESH_INTERVAL = "auto";
8474
8473
  const DEFAULT_INTERVALS = ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"];
8475
8474
  class SceneRefreshPicker extends SceneObjectBase {
8476
8475
  constructor(state) {
8477
8476
  var _a, _b, _c;
8478
- const autoEnabled = (_a = state.autoEnabled) != null ? _a : true;
8479
- let intervals = (_b = state.intervals) != null ? _b : DEFAULT_INTERVALS;
8480
- intervals = autoEnabled ? [AUTO_REFRESH_INTERVAL, ...intervals] : intervals;
8481
8477
  super(__spreadProps$2(__spreadValues$5({
8482
8478
  refresh: ""
8483
8479
  }, state), {
8484
- autoEnabled,
8485
- autoMinInterval: (_c = state.autoMinInterval) != null ? _c : runtime.config.minRefreshInterval,
8486
- intervals
8480
+ autoEnabled: (_a = state.autoEnabled) != null ? _a : true,
8481
+ autoMinInterval: (_b = state.autoMinInterval) != null ? _b : runtime.config.minRefreshInterval,
8482
+ intervals: (_c = state.intervals) != null ? _c : DEFAULT_INTERVALS
8487
8483
  }));
8488
8484
  this._urlSync = new SceneObjectUrlSyncConfig(this, { keys: ["refresh"] });
8489
8485
  this.onRefresh = () => {
@@ -8529,11 +8525,11 @@ class SceneRefreshPicker extends SceneObjectBase {
8529
8525
  if (refresh === "") {
8530
8526
  return;
8531
8527
  }
8532
- if (intervals && !intervals.includes(refresh)) {
8528
+ if (refresh !== ui.RefreshPicker.autoOption.value && intervals && !intervals.includes(refresh)) {
8533
8529
  return;
8534
8530
  }
8535
8531
  let intervalMs;
8536
- if (refresh === AUTO_REFRESH_INTERVAL) {
8532
+ if (refresh === ui.RefreshPicker.autoOption.value) {
8537
8533
  intervalMs = this.calculateAutoRefreshInterval();
8538
8534
  this._timeRangeListener = this.setupTimeRangeListener();
8539
8535
  } else {
@@ -8572,7 +8568,7 @@ class SceneRefreshPicker extends SceneObjectBase {
8572
8568
  }
8573
8569
  SceneRefreshPicker.Component = SceneRefreshPickerRenderer;
8574
8570
  function SceneRefreshPickerRenderer({ model }) {
8575
- const { refresh, intervals, isOnCanvas, primary, withText } = model.useState();
8571
+ const { refresh, intervals, autoEnabled, isOnCanvas, primary, withText } = model.useState();
8576
8572
  const isRunning = useQueryControllerState(model);
8577
8573
  let text = withText ? "Refresh" : void 0;
8578
8574
  let tooltip;
@@ -8583,6 +8579,7 @@ function SceneRefreshPickerRenderer({ model }) {
8583
8579
  }
8584
8580
  }
8585
8581
  return /* @__PURE__ */ React__default["default"].createElement(ui.RefreshPicker, {
8582
+ showAutoInterval: autoEnabled,
8586
8583
  value: refresh,
8587
8584
  intervals,
8588
8585
  tooltip,