@grafana/scenes 4.2.1 → 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.
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { rangeUtil } from '@grafana/data';
|
|
3
|
+
import { config } from '@grafana/runtime';
|
|
3
4
|
import { RefreshPicker } from '@grafana/ui';
|
|
4
5
|
import { SceneObjectBase } from '../core/SceneObjectBase.js';
|
|
5
6
|
import { sceneGraph } from '../core/sceneGraph/index.js';
|
|
@@ -27,11 +28,13 @@ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
|
27
28
|
const DEFAULT_INTERVALS = ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"];
|
|
28
29
|
class SceneRefreshPicker extends SceneObjectBase {
|
|
29
30
|
constructor(state) {
|
|
30
|
-
var _a;
|
|
31
|
+
var _a, _b, _c;
|
|
31
32
|
super(__spreadProps(__spreadValues({
|
|
32
33
|
refresh: ""
|
|
33
34
|
}, state), {
|
|
34
|
-
|
|
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
|
|
35
38
|
}));
|
|
36
39
|
this._urlSync = new SceneObjectUrlSyncConfig(this, { keys: ["refresh"] });
|
|
37
40
|
this.onRefresh = () => {
|
|
@@ -51,7 +54,24 @@ class SceneRefreshPicker extends SceneObjectBase {
|
|
|
51
54
|
this.setState({ refresh: interval });
|
|
52
55
|
this.setupIntervalTimer();
|
|
53
56
|
};
|
|
57
|
+
this.setupTimeRangeListener = () => {
|
|
58
|
+
return sceneGraph.getTimeRange(this).subscribeToState((newState, prevState) => {
|
|
59
|
+
const newDiff = newState.value.to.valueOf() - newState.value.from.valueOf();
|
|
60
|
+
const prevDiff = prevState.value.to.valueOf() - prevState.value.from.valueOf();
|
|
61
|
+
if (newDiff !== prevDiff) {
|
|
62
|
+
this.setupIntervalTimer();
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
this.calculateAutoRefreshInterval = () => {
|
|
67
|
+
var _a;
|
|
68
|
+
const timeRange = sceneGraph.getTimeRange(this);
|
|
69
|
+
const resolution = (_a = window == null ? void 0 : window.innerWidth) != null ? _a : 2e3;
|
|
70
|
+
const { intervalMs } = rangeUtil.calculateInterval(timeRange.state.value, resolution, this.state.autoMinInterval);
|
|
71
|
+
return intervalMs;
|
|
72
|
+
};
|
|
54
73
|
this.setupIntervalTimer = () => {
|
|
74
|
+
var _a;
|
|
55
75
|
const timeRange = sceneGraph.getTimeRange(this);
|
|
56
76
|
const { refresh, intervals } = this.state;
|
|
57
77
|
if (this._intervalTimer || refresh === "") {
|
|
@@ -60,10 +80,18 @@ class SceneRefreshPicker extends SceneObjectBase {
|
|
|
60
80
|
if (refresh === "") {
|
|
61
81
|
return;
|
|
62
82
|
}
|
|
63
|
-
if (intervals && !intervals.includes(refresh)) {
|
|
83
|
+
if (refresh !== RefreshPicker.autoOption.value && intervals && !intervals.includes(refresh)) {
|
|
64
84
|
return;
|
|
65
85
|
}
|
|
66
|
-
|
|
86
|
+
let intervalMs;
|
|
87
|
+
if (refresh === RefreshPicker.autoOption.value) {
|
|
88
|
+
intervalMs = this.calculateAutoRefreshInterval();
|
|
89
|
+
this._timeRangeListener = this.setupTimeRangeListener();
|
|
90
|
+
} else {
|
|
91
|
+
intervalMs = rangeUtil.intervalToMs(refresh);
|
|
92
|
+
(_a = this._timeRangeListener) == null ? void 0 : _a.unsubscribe();
|
|
93
|
+
this._timeRangeListener = void 0;
|
|
94
|
+
}
|
|
67
95
|
this._intervalTimer = setInterval(() => {
|
|
68
96
|
timeRange.onRefresh();
|
|
69
97
|
}, intervalMs);
|
|
@@ -71,9 +99,11 @@ class SceneRefreshPicker extends SceneObjectBase {
|
|
|
71
99
|
this.addActivationHandler(() => {
|
|
72
100
|
this.setupIntervalTimer();
|
|
73
101
|
return () => {
|
|
102
|
+
var _a2;
|
|
74
103
|
if (this._intervalTimer) {
|
|
75
104
|
clearInterval(this._intervalTimer);
|
|
76
105
|
}
|
|
106
|
+
(_a2 = this._timeRangeListener) == null ? void 0 : _a2.unsubscribe();
|
|
77
107
|
};
|
|
78
108
|
});
|
|
79
109
|
}
|
|
@@ -93,7 +123,7 @@ class SceneRefreshPicker extends SceneObjectBase {
|
|
|
93
123
|
}
|
|
94
124
|
SceneRefreshPicker.Component = SceneRefreshPickerRenderer;
|
|
95
125
|
function SceneRefreshPickerRenderer({ model }) {
|
|
96
|
-
const { refresh, intervals, isOnCanvas, primary, withText } = model.useState();
|
|
126
|
+
const { refresh, intervals, autoEnabled, isOnCanvas, primary, withText } = model.useState();
|
|
97
127
|
const isRunning = useQueryControllerState(model);
|
|
98
128
|
let text = withText ? "Refresh" : void 0;
|
|
99
129
|
let tooltip;
|
|
@@ -104,6 +134,7 @@ function SceneRefreshPickerRenderer({ model }) {
|
|
|
104
134
|
}
|
|
105
135
|
}
|
|
106
136
|
return /* @__PURE__ */ React.createElement(RefreshPicker, {
|
|
137
|
+
showAutoInterval: autoEnabled,
|
|
107
138
|
value: refresh,
|
|
108
139
|
intervals,
|
|
109
140
|
tooltip,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SceneRefreshPicker.js","sources":["../../../src/components/SceneRefreshPicker.tsx"],"sourcesContent":["import React from 'react';\n\nimport { rangeUtil } from '@grafana/data';\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 // 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\n public constructor(state: Partial<SceneRefreshPickerState>) {\n super({\n refresh: '',\n ...state,\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 });\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 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 const intervalMs = rangeUtil.intervalToMs(refresh);\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":[],"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
|
@@ -1693,6 +1693,8 @@ declare function SceneTimePickerRenderer({ model }: SceneComponentProps<SceneTim
|
|
|
1693
1693
|
|
|
1694
1694
|
interface SceneRefreshPickerState extends SceneObjectState {
|
|
1695
1695
|
refresh: string;
|
|
1696
|
+
autoEnabled?: boolean;
|
|
1697
|
+
autoMinInterval?: string;
|
|
1696
1698
|
intervals?: string[];
|
|
1697
1699
|
isOnCanvas?: boolean;
|
|
1698
1700
|
primary?: boolean;
|
|
@@ -1702,6 +1704,7 @@ declare class SceneRefreshPicker extends SceneObjectBase<SceneRefreshPickerState
|
|
|
1702
1704
|
static Component: typeof SceneRefreshPickerRenderer;
|
|
1703
1705
|
protected _urlSync: SceneObjectUrlSyncConfig;
|
|
1704
1706
|
private _intervalTimer;
|
|
1707
|
+
private _timeRangeListener;
|
|
1705
1708
|
constructor(state: Partial<SceneRefreshPickerState>);
|
|
1706
1709
|
onRefresh: () => void;
|
|
1707
1710
|
onIntervalChanged: (interval: string) => void;
|
|
@@ -1709,6 +1712,8 @@ declare class SceneRefreshPicker extends SceneObjectBase<SceneRefreshPickerState
|
|
|
1709
1712
|
refresh: string;
|
|
1710
1713
|
};
|
|
1711
1714
|
updateFromUrl(values: SceneObjectUrlValues): void;
|
|
1715
|
+
private setupTimeRangeListener;
|
|
1716
|
+
private calculateAutoRefreshInterval;
|
|
1712
1717
|
private setupIntervalTimer;
|
|
1713
1718
|
}
|
|
1714
1719
|
declare function SceneRefreshPickerRenderer({ model }: SceneComponentProps<SceneRefreshPicker>): JSX.Element;
|
package/dist/index.js
CHANGED
|
@@ -8473,11 +8473,13 @@ var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));
|
|
|
8473
8473
|
const DEFAULT_INTERVALS = ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"];
|
|
8474
8474
|
class SceneRefreshPicker extends SceneObjectBase {
|
|
8475
8475
|
constructor(state) {
|
|
8476
|
-
var _a;
|
|
8476
|
+
var _a, _b, _c;
|
|
8477
8477
|
super(__spreadProps$2(__spreadValues$5({
|
|
8478
8478
|
refresh: ""
|
|
8479
8479
|
}, state), {
|
|
8480
|
-
|
|
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
|
|
8481
8483
|
}));
|
|
8482
8484
|
this._urlSync = new SceneObjectUrlSyncConfig(this, { keys: ["refresh"] });
|
|
8483
8485
|
this.onRefresh = () => {
|
|
@@ -8497,7 +8499,24 @@ class SceneRefreshPicker extends SceneObjectBase {
|
|
|
8497
8499
|
this.setState({ refresh: interval });
|
|
8498
8500
|
this.setupIntervalTimer();
|
|
8499
8501
|
};
|
|
8502
|
+
this.setupTimeRangeListener = () => {
|
|
8503
|
+
return sceneGraph.getTimeRange(this).subscribeToState((newState, prevState) => {
|
|
8504
|
+
const newDiff = newState.value.to.valueOf() - newState.value.from.valueOf();
|
|
8505
|
+
const prevDiff = prevState.value.to.valueOf() - prevState.value.from.valueOf();
|
|
8506
|
+
if (newDiff !== prevDiff) {
|
|
8507
|
+
this.setupIntervalTimer();
|
|
8508
|
+
}
|
|
8509
|
+
});
|
|
8510
|
+
};
|
|
8511
|
+
this.calculateAutoRefreshInterval = () => {
|
|
8512
|
+
var _a;
|
|
8513
|
+
const timeRange = sceneGraph.getTimeRange(this);
|
|
8514
|
+
const resolution = (_a = window == null ? void 0 : window.innerWidth) != null ? _a : 2e3;
|
|
8515
|
+
const { intervalMs } = data.rangeUtil.calculateInterval(timeRange.state.value, resolution, this.state.autoMinInterval);
|
|
8516
|
+
return intervalMs;
|
|
8517
|
+
};
|
|
8500
8518
|
this.setupIntervalTimer = () => {
|
|
8519
|
+
var _a;
|
|
8501
8520
|
const timeRange = sceneGraph.getTimeRange(this);
|
|
8502
8521
|
const { refresh, intervals } = this.state;
|
|
8503
8522
|
if (this._intervalTimer || refresh === "") {
|
|
@@ -8506,10 +8525,18 @@ class SceneRefreshPicker extends SceneObjectBase {
|
|
|
8506
8525
|
if (refresh === "") {
|
|
8507
8526
|
return;
|
|
8508
8527
|
}
|
|
8509
|
-
if (intervals && !intervals.includes(refresh)) {
|
|
8528
|
+
if (refresh !== ui.RefreshPicker.autoOption.value && intervals && !intervals.includes(refresh)) {
|
|
8510
8529
|
return;
|
|
8511
8530
|
}
|
|
8512
|
-
|
|
8531
|
+
let intervalMs;
|
|
8532
|
+
if (refresh === ui.RefreshPicker.autoOption.value) {
|
|
8533
|
+
intervalMs = this.calculateAutoRefreshInterval();
|
|
8534
|
+
this._timeRangeListener = this.setupTimeRangeListener();
|
|
8535
|
+
} else {
|
|
8536
|
+
intervalMs = data.rangeUtil.intervalToMs(refresh);
|
|
8537
|
+
(_a = this._timeRangeListener) == null ? void 0 : _a.unsubscribe();
|
|
8538
|
+
this._timeRangeListener = void 0;
|
|
8539
|
+
}
|
|
8513
8540
|
this._intervalTimer = setInterval(() => {
|
|
8514
8541
|
timeRange.onRefresh();
|
|
8515
8542
|
}, intervalMs);
|
|
@@ -8517,9 +8544,11 @@ class SceneRefreshPicker extends SceneObjectBase {
|
|
|
8517
8544
|
this.addActivationHandler(() => {
|
|
8518
8545
|
this.setupIntervalTimer();
|
|
8519
8546
|
return () => {
|
|
8547
|
+
var _a2;
|
|
8520
8548
|
if (this._intervalTimer) {
|
|
8521
8549
|
clearInterval(this._intervalTimer);
|
|
8522
8550
|
}
|
|
8551
|
+
(_a2 = this._timeRangeListener) == null ? void 0 : _a2.unsubscribe();
|
|
8523
8552
|
};
|
|
8524
8553
|
});
|
|
8525
8554
|
}
|
|
@@ -8539,7 +8568,7 @@ class SceneRefreshPicker extends SceneObjectBase {
|
|
|
8539
8568
|
}
|
|
8540
8569
|
SceneRefreshPicker.Component = SceneRefreshPickerRenderer;
|
|
8541
8570
|
function SceneRefreshPickerRenderer({ model }) {
|
|
8542
|
-
const { refresh, intervals, isOnCanvas, primary, withText } = model.useState();
|
|
8571
|
+
const { refresh, intervals, autoEnabled, isOnCanvas, primary, withText } = model.useState();
|
|
8543
8572
|
const isRunning = useQueryControllerState(model);
|
|
8544
8573
|
let text = withText ? "Refresh" : void 0;
|
|
8545
8574
|
let tooltip;
|
|
@@ -8550,6 +8579,7 @@ function SceneRefreshPickerRenderer({ model }) {
|
|
|
8550
8579
|
}
|
|
8551
8580
|
}
|
|
8552
8581
|
return /* @__PURE__ */ React__default["default"].createElement(ui.RefreshPicker, {
|
|
8582
|
+
showAutoInterval: autoEnabled,
|
|
8553
8583
|
value: refresh,
|
|
8554
8584
|
intervals,
|
|
8555
8585
|
tooltip,
|