@grafana/scenes 6.18.0 → 6.18.2--canary.1144.15561582453.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 +12 -0
- package/dist/esm/querying/layers/annotations/standardAnnotationQuery.js +2 -0
- package/dist/esm/querying/layers/annotations/standardAnnotationQuery.js.map +1 -1
- package/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js +18 -8
- package/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js.map +1 -1
- package/dist/index.js +19 -8
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
# v6.18.1 (Wed Jun 04 2025)
|
2
|
+
|
3
|
+
#### 🐛 Bug Fix
|
4
|
+
|
5
|
+
- GroupBy: Fix edge cases on dashboard default values [#1142](https://github.com/grafana/scenes/pull/1142) ([@mdvictor](https://github.com/mdvictor))
|
6
|
+
|
7
|
+
#### Authors: 1
|
8
|
+
|
9
|
+
- Victor Marin ([@mdvictor](https://github.com/mdvictor))
|
10
|
+
|
11
|
+
---
|
12
|
+
|
1
13
|
# v6.18.0 (Tue Jun 03 2025)
|
2
14
|
|
3
15
|
#### 🚀 Enhancement
|
@@ -6,6 +6,7 @@ import { shouldUseLegacyRunner, standardAnnotationSupport } from './standardAnno
|
|
6
6
|
import { LoadingState } from '@grafana/schema';
|
7
7
|
import { getEnrichedDataRequest } from '../../getEnrichedDataRequest.js';
|
8
8
|
import { wrapInSafeSerializableSceneObject } from '../../../utils/wrapInSafeSerializableSceneObject.js';
|
9
|
+
import { sceneGraph } from '../../../core/sceneGraph/index.js';
|
9
10
|
|
10
11
|
let counter = 100;
|
11
12
|
function getNextRequestId() {
|
@@ -77,6 +78,7 @@ function executeAnnotationQuery(datasource, timeRange, query, layer) {
|
|
77
78
|
refId: "Anno"
|
78
79
|
}
|
79
80
|
],
|
81
|
+
scopes: sceneGraph.getScopes(layer),
|
80
82
|
...getEnrichedDataRequest(layer)
|
81
83
|
};
|
82
84
|
const runRequest = getRunRequest();
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"standardAnnotationQuery.js","sources":["../../../../../src/querying/layers/annotations/standardAnnotationQuery.ts"],"sourcesContent":["import { from, Observable, of } from 'rxjs';\nimport { map, mergeMap } from 'rxjs/operators';\n\nimport {\n AnnotationEvent,\n AnnotationQuery,\n CoreApp,\n DataQueryRequest,\n DataSourceApi,\n DataTopic,\n PanelModel,\n rangeUtil,\n ScopedVars,\n} from '@grafana/data';\n\nimport { getRunRequest, getTemplateSrv } from '@grafana/runtime';\nimport { shouldUseLegacyRunner, standardAnnotationSupport } from './standardAnnotationsSupport';\nimport { Dashboard, LoadingState } from '@grafana/schema';\nimport { SceneObject, SceneTimeRangeLike } from '../../../core/types';\nimport { getEnrichedDataRequest } from '../../getEnrichedDataRequest';\nimport { wrapInSafeSerializableSceneObject } from '../../../utils/wrapInSafeSerializableSceneObject';\n\nlet counter = 100;\nfunction getNextRequestId() {\n return 'AQ' + counter++;\n}\n\nexport interface AnnotationQueryOptions {\n dashboard: Dashboard;\n panel: PanelModel;\n}\n\nexport interface AnnotationQueryResults {\n state: LoadingState;\n events: AnnotationEvent[];\n}\n\nexport function executeAnnotationQuery(\n datasource: DataSourceApi,\n timeRange: SceneTimeRangeLike,\n query: AnnotationQuery,\n layer: SceneObject\n): Observable<AnnotationQueryResults> {\n // Check if we should use the old annotationQuery method\n if (datasource.annotationQuery && shouldUseLegacyRunner(datasource)) {\n console.warn('Using deprecated annotationQuery method, please upgrade your datasource');\n return from(\n datasource.annotationQuery({\n range: timeRange.state.value,\n rangeRaw: timeRange.state.value.raw,\n annotation: query,\n dashboard: {\n getVariables: getTemplateSrv().getVariables,\n },\n })\n ).pipe(\n map((events) => ({\n state: LoadingState.Done,\n events,\n }))\n );\n }\n\n // Standard API for annotations support. Spread in datasource annotations support overrides\n const processor = {\n ...standardAnnotationSupport,\n ...datasource.annotations,\n };\n\n const annotationWithDefaults = {\n // Default query provided by a data source\n ...processor.getDefaultQuery?.(),\n ...query,\n };\n\n // Data source query migrations\n const annotation = processor.prepareAnnotation!(annotationWithDefaults);\n if (!annotation) {\n return of({\n state: LoadingState.Done,\n events: [],\n });\n }\n\n const processedQuery = processor.prepareQuery!(annotation);\n if (!processedQuery) {\n return of({\n state: LoadingState.Done,\n events: [],\n });\n }\n\n // No more points than pixels\n const maxDataPoints = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\n\n // Add interval to annotation queries\n const interval = rangeUtil.calculateInterval(timeRange.state.value, maxDataPoints, datasource.interval);\n\n const scopedVars: ScopedVars = {\n __interval: { text: interval.interval, value: interval.interval },\n __interval_ms: { text: interval.intervalMs.toString(), value: interval.intervalMs },\n __annotation: { text: annotation.name, value: annotation },\n __sceneObject: wrapInSafeSerializableSceneObject(layer),\n };\n\n const queryRequest: DataQueryRequest = {\n startTime: Date.now(),\n requestId: getNextRequestId(),\n range: timeRange.state.value,\n maxDataPoints,\n scopedVars,\n ...interval,\n app: CoreApp.Dashboard,\n timezone: timeRange.getTimeZone(),\n targets: [\n {\n ...processedQuery,\n refId: 'Anno',\n },\n ],\n ...getEnrichedDataRequest(layer),\n };\n\n const runRequest = getRunRequest();\n\n return runRequest(datasource, queryRequest).pipe(\n mergeMap((panelData) => {\n // Some annotations set the topic already\n const data = panelData?.series.length ? panelData.series : panelData.annotations;\n\n if (!data?.length) {\n return of({\n state: panelData.state,\n events: [],\n });\n }\n\n // Add data topic to each frame\n data.forEach((frame) => {\n // If data topic has not been provided by the data source, make sure it's set correctly\n if (!frame.meta?.dataTopic) {\n frame.meta = { ...(frame.meta || {}), dataTopic: DataTopic.Annotations };\n }\n });\n\n return processor.processEvents!(annotation, data).pipe(\n map((events) => {\n return {\n state: panelData.state,\n events: events || [],\n };\n })\n );\n })\n );\n}\n"],"names":["_a"],"mappings":"
|
1
|
+
{"version":3,"file":"standardAnnotationQuery.js","sources":["../../../../../src/querying/layers/annotations/standardAnnotationQuery.ts"],"sourcesContent":["import { from, Observable, of } from 'rxjs';\nimport { map, mergeMap } from 'rxjs/operators';\n\nimport {\n AnnotationEvent,\n AnnotationQuery,\n CoreApp,\n DataQueryRequest,\n DataSourceApi,\n DataTopic,\n PanelModel,\n rangeUtil,\n ScopedVars,\n} from '@grafana/data';\n\nimport { getRunRequest, getTemplateSrv } from '@grafana/runtime';\nimport { shouldUseLegacyRunner, standardAnnotationSupport } from './standardAnnotationsSupport';\nimport { Dashboard, LoadingState } from '@grafana/schema';\nimport { SceneObject, SceneTimeRangeLike } from '../../../core/types';\nimport { getEnrichedDataRequest } from '../../getEnrichedDataRequest';\nimport { wrapInSafeSerializableSceneObject } from '../../../utils/wrapInSafeSerializableSceneObject';\nimport { sceneGraph } from '../../../core/sceneGraph';\n\nlet counter = 100;\nfunction getNextRequestId() {\n return 'AQ' + counter++;\n}\n\nexport interface AnnotationQueryOptions {\n dashboard: Dashboard;\n panel: PanelModel;\n}\n\nexport interface AnnotationQueryResults {\n state: LoadingState;\n events: AnnotationEvent[];\n}\n\nexport function executeAnnotationQuery(\n datasource: DataSourceApi,\n timeRange: SceneTimeRangeLike,\n query: AnnotationQuery,\n layer: SceneObject\n): Observable<AnnotationQueryResults> {\n // Check if we should use the old annotationQuery method\n if (datasource.annotationQuery && shouldUseLegacyRunner(datasource)) {\n console.warn('Using deprecated annotationQuery method, please upgrade your datasource');\n return from(\n datasource.annotationQuery({\n range: timeRange.state.value,\n rangeRaw: timeRange.state.value.raw,\n annotation: query,\n dashboard: {\n getVariables: getTemplateSrv().getVariables,\n },\n })\n ).pipe(\n map((events) => ({\n state: LoadingState.Done,\n events,\n }))\n );\n }\n\n // Standard API for annotations support. Spread in datasource annotations support overrides\n const processor = {\n ...standardAnnotationSupport,\n ...datasource.annotations,\n };\n\n const annotationWithDefaults = {\n // Default query provided by a data source\n ...processor.getDefaultQuery?.(),\n ...query,\n };\n\n // Data source query migrations\n const annotation = processor.prepareAnnotation!(annotationWithDefaults);\n if (!annotation) {\n return of({\n state: LoadingState.Done,\n events: [],\n });\n }\n\n const processedQuery = processor.prepareQuery!(annotation);\n if (!processedQuery) {\n return of({\n state: LoadingState.Done,\n events: [],\n });\n }\n\n // No more points than pixels\n const maxDataPoints = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\n\n // Add interval to annotation queries\n const interval = rangeUtil.calculateInterval(timeRange.state.value, maxDataPoints, datasource.interval);\n\n const scopedVars: ScopedVars = {\n __interval: { text: interval.interval, value: interval.interval },\n __interval_ms: { text: interval.intervalMs.toString(), value: interval.intervalMs },\n __annotation: { text: annotation.name, value: annotation },\n __sceneObject: wrapInSafeSerializableSceneObject(layer),\n };\n\n const queryRequest: DataQueryRequest = {\n startTime: Date.now(),\n requestId: getNextRequestId(),\n range: timeRange.state.value,\n maxDataPoints,\n scopedVars,\n ...interval,\n app: CoreApp.Dashboard,\n timezone: timeRange.getTimeZone(),\n targets: [\n {\n ...processedQuery,\n refId: 'Anno',\n },\n ],\n scopes: sceneGraph.getScopes(layer),\n ...getEnrichedDataRequest(layer),\n };\n\n const runRequest = getRunRequest();\n\n return runRequest(datasource, queryRequest).pipe(\n mergeMap((panelData) => {\n // Some annotations set the topic already\n const data = panelData?.series.length ? panelData.series : panelData.annotations;\n\n if (!data?.length) {\n return of({\n state: panelData.state,\n events: [],\n });\n }\n\n // Add data topic to each frame\n data.forEach((frame) => {\n // If data topic has not been provided by the data source, make sure it's set correctly\n if (!frame.meta?.dataTopic) {\n frame.meta = { ...(frame.meta || {}), dataTopic: DataTopic.Annotations };\n }\n });\n\n return processor.processEvents!(annotation, data).pipe(\n map((events) => {\n return {\n state: panelData.state,\n events: events || [],\n };\n })\n );\n })\n );\n}\n"],"names":["_a"],"mappings":"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"}
|
@@ -15,7 +15,7 @@ class GroupByVariableUrlSyncHandler {
|
|
15
15
|
if (this._sceneObject.state.skipUrlSync) {
|
16
16
|
return [];
|
17
17
|
}
|
18
|
-
return [this.getKey(),
|
18
|
+
return [this.getKey(), this.getRestorableKey()];
|
19
19
|
}
|
20
20
|
getUrlState() {
|
21
21
|
if (this._sceneObject.state.skipUrlSync) {
|
@@ -23,13 +23,11 @@ class GroupByVariableUrlSyncHandler {
|
|
23
23
|
}
|
24
24
|
return {
|
25
25
|
[this.getKey()]: toUrlValues(this._sceneObject.state.value, this._sceneObject.state.text),
|
26
|
-
|
27
|
-
[this.getRestorableKey()]: this._sceneObject.state.restorable ? "true" : void 0
|
28
|
-
} : {}
|
26
|
+
[this.getRestorableKey()]: this._sceneObject.state.defaultValue ? this._sceneObject.state.restorable ? "true" : "false" : null
|
29
27
|
};
|
30
28
|
}
|
31
29
|
updateFromUrl(values) {
|
32
|
-
var _a, _b;
|
30
|
+
var _a, _b, _c, _d;
|
33
31
|
let urlValue = values[this.getKey()];
|
34
32
|
let restorableValue = values[this.getRestorableKey()];
|
35
33
|
if (urlValue != null) {
|
@@ -37,10 +35,22 @@ class GroupByVariableUrlSyncHandler {
|
|
37
35
|
this._sceneObject.skipNextValidation = true;
|
38
36
|
}
|
39
37
|
const { values: values2, texts } = fromUrlValues(urlValue);
|
40
|
-
if (
|
38
|
+
if (restorableValue === "false") {
|
39
|
+
if (this._sceneObject.state.defaultValue) {
|
40
|
+
this._sceneObject.changeValueTo(
|
41
|
+
(_a = this._sceneObject.state.defaultValue) == null ? void 0 : _a.value,
|
42
|
+
(_b = this._sceneObject.state.defaultValue) == null ? void 0 : _b.text,
|
43
|
+
false
|
44
|
+
);
|
45
|
+
return;
|
46
|
+
}
|
47
|
+
this._sceneObject.changeValueTo([], []);
|
48
|
+
return;
|
49
|
+
}
|
50
|
+
if (restorableValue === void 0 && this._sceneObject.state.defaultValue) {
|
41
51
|
this._sceneObject.changeValueTo(
|
42
|
-
(
|
43
|
-
(
|
52
|
+
(_c = this._sceneObject.state.defaultValue) == null ? void 0 : _c.value,
|
53
|
+
(_d = this._sceneObject.state.defaultValue) == null ? void 0 : _d.text,
|
44
54
|
false
|
45
55
|
);
|
46
56
|
return;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"GroupByVariableUrlSyncHandler.js","sources":["../../../../src/variables/groupby/GroupByVariableUrlSyncHandler.ts"],"sourcesContent":["import { SceneObjectUrlSyncHandler, SceneObjectUrlValues } from '../../core/types';\nimport { GroupByVariable } from './GroupByVariable';\nimport { toUrlCommaDelimitedString, unescapeUrlDelimiters } from '../utils';\nimport { VariableValue } from '../types';\n\nexport class GroupByVariableUrlSyncHandler implements SceneObjectUrlSyncHandler {\n public constructor(private _sceneObject: GroupByVariable) {}\n\n protected _nextChangeShouldAddHistoryStep = false;\n\n private getRestorableKey(): string {\n return `restorable-var-${this._sceneObject.state.name}`;\n }\n\n private getKey(): string {\n return `var-${this._sceneObject.state.name}`;\n }\n\n public getKeys(): string[] {\n if (this._sceneObject.state.skipUrlSync) {\n return [];\n }\n\n return [this.getKey(),
|
1
|
+
{"version":3,"file":"GroupByVariableUrlSyncHandler.js","sources":["../../../../src/variables/groupby/GroupByVariableUrlSyncHandler.ts"],"sourcesContent":["import { SceneObjectUrlSyncHandler, SceneObjectUrlValues } from '../../core/types';\nimport { GroupByVariable } from './GroupByVariable';\nimport { toUrlCommaDelimitedString, unescapeUrlDelimiters } from '../utils';\nimport { VariableValue } from '../types';\n\nexport class GroupByVariableUrlSyncHandler implements SceneObjectUrlSyncHandler {\n public constructor(private _sceneObject: GroupByVariable) {}\n\n protected _nextChangeShouldAddHistoryStep = false;\n\n private getRestorableKey(): string {\n return `restorable-var-${this._sceneObject.state.name}`;\n }\n\n private getKey(): string {\n return `var-${this._sceneObject.state.name}`;\n }\n\n public getKeys(): string[] {\n if (this._sceneObject.state.skipUrlSync) {\n return [];\n }\n\n return [this.getKey(), this.getRestorableKey()];\n }\n\n public getUrlState(): SceneObjectUrlValues {\n if (this._sceneObject.state.skipUrlSync) {\n return {};\n }\n\n return {\n [this.getKey()]: toUrlValues(this._sceneObject.state.value, this._sceneObject.state.text),\n [this.getRestorableKey()]: this._sceneObject.state.defaultValue\n ? this._sceneObject.state.restorable\n ? 'true'\n : 'false'\n : null,\n };\n }\n\n public updateFromUrl(values: SceneObjectUrlValues): void {\n let urlValue = values[this.getKey()];\n let restorableValue = values[this.getRestorableKey()];\n\n if (urlValue != null) {\n /**\n * Initial URL Sync happens before scene objects are activated.\n * We need to skip validation in this case to make sure values set via URL are maintained.\n */\n if (!this._sceneObject.isActive) {\n this._sceneObject.skipNextValidation = true;\n }\n\n const { values, texts } = fromUrlValues(urlValue);\n\n if (restorableValue === 'false') {\n if (this._sceneObject.state.defaultValue) {\n this._sceneObject.changeValueTo(\n this._sceneObject.state.defaultValue?.value,\n this._sceneObject.state.defaultValue?.text,\n false\n );\n return;\n }\n\n this._sceneObject.changeValueTo([], []);\n return;\n }\n\n if (restorableValue === undefined && this._sceneObject.state.defaultValue) {\n this._sceneObject.changeValueTo(\n this._sceneObject.state.defaultValue?.value,\n this._sceneObject.state.defaultValue?.text,\n false\n );\n return;\n }\n\n this._sceneObject.changeValueTo(values, texts);\n }\n }\n\n public performBrowserHistoryAction(callback: () => void) {\n this._nextChangeShouldAddHistoryStep = true;\n callback();\n this._nextChangeShouldAddHistoryStep = false;\n }\n\n public shouldCreateHistoryStep(values: SceneObjectUrlValues): boolean {\n return this._nextChangeShouldAddHistoryStep;\n }\n}\n\nfunction toUrlValues(values: VariableValue, texts: VariableValue): string[] {\n values = Array.isArray(values) ? values : [values];\n texts = Array.isArray(texts) ? texts : [texts];\n\n return values.map((value, idx) => {\n if (value === undefined || value === null) {\n return '';\n }\n\n value = String(value);\n\n let text = texts[idx];\n text = text === undefined || text === null ? value : String(text);\n\n return toUrlCommaDelimitedString(value, text);\n });\n}\n\nfunction fromUrlValues(urlValues: string | string[]): { values: string[]; texts: string[] } {\n urlValues = Array.isArray(urlValues) ? urlValues : [urlValues];\n\n return urlValues.reduce<{ values: string[]; texts: string[] }>(\n (acc, urlValue) => {\n const [value, label] = (urlValue ?? '').split(',');\n\n acc.values.push(unescapeUrlDelimiters(value));\n acc.texts.push(unescapeUrlDelimiters(label ?? value));\n\n return acc;\n },\n {\n values: [],\n texts: [],\n }\n );\n}\n"],"names":["values"],"mappings":"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"}
|
package/dist/index.js
CHANGED
@@ -2974,7 +2974,7 @@ class GroupByVariableUrlSyncHandler {
|
|
2974
2974
|
if (this._sceneObject.state.skipUrlSync) {
|
2975
2975
|
return [];
|
2976
2976
|
}
|
2977
|
-
return [this.getKey(),
|
2977
|
+
return [this.getKey(), this.getRestorableKey()];
|
2978
2978
|
}
|
2979
2979
|
getUrlState() {
|
2980
2980
|
if (this._sceneObject.state.skipUrlSync) {
|
@@ -2982,13 +2982,11 @@ class GroupByVariableUrlSyncHandler {
|
|
2982
2982
|
}
|
2983
2983
|
return {
|
2984
2984
|
[this.getKey()]: toUrlValues(this._sceneObject.state.value, this._sceneObject.state.text),
|
2985
|
-
|
2986
|
-
[this.getRestorableKey()]: this._sceneObject.state.restorable ? "true" : void 0
|
2987
|
-
} : {}
|
2985
|
+
[this.getRestorableKey()]: this._sceneObject.state.defaultValue ? this._sceneObject.state.restorable ? "true" : "false" : null
|
2988
2986
|
};
|
2989
2987
|
}
|
2990
2988
|
updateFromUrl(values) {
|
2991
|
-
var _a, _b;
|
2989
|
+
var _a, _b, _c, _d;
|
2992
2990
|
let urlValue = values[this.getKey()];
|
2993
2991
|
let restorableValue = values[this.getRestorableKey()];
|
2994
2992
|
if (urlValue != null) {
|
@@ -2996,10 +2994,22 @@ class GroupByVariableUrlSyncHandler {
|
|
2996
2994
|
this._sceneObject.skipNextValidation = true;
|
2997
2995
|
}
|
2998
2996
|
const { values: values2, texts } = fromUrlValues(urlValue);
|
2999
|
-
if (
|
2997
|
+
if (restorableValue === "false") {
|
2998
|
+
if (this._sceneObject.state.defaultValue) {
|
2999
|
+
this._sceneObject.changeValueTo(
|
3000
|
+
(_a = this._sceneObject.state.defaultValue) == null ? void 0 : _a.value,
|
3001
|
+
(_b = this._sceneObject.state.defaultValue) == null ? void 0 : _b.text,
|
3002
|
+
false
|
3003
|
+
);
|
3004
|
+
return;
|
3005
|
+
}
|
3006
|
+
this._sceneObject.changeValueTo([], []);
|
3007
|
+
return;
|
3008
|
+
}
|
3009
|
+
if (restorableValue === void 0 && this._sceneObject.state.defaultValue) {
|
3000
3010
|
this._sceneObject.changeValueTo(
|
3001
|
-
(
|
3002
|
-
(
|
3011
|
+
(_c = this._sceneObject.state.defaultValue) == null ? void 0 : _c.value,
|
3012
|
+
(_d = this._sceneObject.state.defaultValue) == null ? void 0 : _d.text,
|
3003
3013
|
false
|
3004
3014
|
);
|
3005
3015
|
return;
|
@@ -9042,6 +9052,7 @@ function executeAnnotationQuery(datasource, timeRange, query, layer) {
|
|
9042
9052
|
refId: "Anno"
|
9043
9053
|
}
|
9044
9054
|
],
|
9055
|
+
scopes: sceneGraph.getScopes(layer),
|
9045
9056
|
...getEnrichedDataRequest(layer)
|
9046
9057
|
};
|
9047
9058
|
const runRequest = runtime.getRunRequest();
|