@grafana/scenes 6.16.0--canary.1132.15279399049.0 → 6.16.0--canary.1134.15292037236.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/dist/esm/querying/SceneQueryRunner.js +6 -4
- package/dist/esm/querying/SceneQueryRunner.js.map +1 -1
- package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +2 -2
- package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js.map +1 -1
- package/dist/esm/variables/adhoc/AdHocFiltersVariable.js +51 -43
- package/dist/esm/variables/adhoc/AdHocFiltersVariable.js.map +1 -1
- package/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +27 -31
- package/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js.map +1 -1
- package/dist/esm/variables/utils.js +2 -2
- package/dist/esm/variables/utils.js.map +1 -1
- package/dist/esm/variables/variants/ScopesVariable.js +3 -1
- package/dist/esm/variables/variants/ScopesVariable.js.map +1 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.js +88 -80
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
@@ -3938,9 +3938,9 @@ class AdHocFiltersVariableUrlSyncHandler {
|
|
3938
3938
|
}
|
3939
3939
|
getUrlState() {
|
3940
3940
|
const filters = this._variable.state.filters;
|
3941
|
-
const
|
3941
|
+
const baseFilters = this._variable.state.baseFilters;
|
3942
3942
|
let value = [];
|
3943
|
-
if (filters.length === 0 && (
|
3943
|
+
if (filters.length === 0 && (baseFilters == null ? void 0 : baseFilters.length) === 0) {
|
3944
3944
|
return { [this.getKey()]: [""] };
|
3945
3945
|
}
|
3946
3946
|
if (filters.length) {
|
@@ -3948,10 +3948,10 @@ class AdHocFiltersVariableUrlSyncHandler {
|
|
3948
3948
|
...filters.filter(isFilterComplete).filter((filter) => !filter.hidden).map((filter) => toArray(filter).map(escapeUrlPipeDelimiters).join("|"))
|
3949
3949
|
);
|
3950
3950
|
}
|
3951
|
-
if (
|
3951
|
+
if (baseFilters == null ? void 0 : baseFilters.length) {
|
3952
3952
|
value.push(
|
3953
|
-
...
|
3954
|
-
(filter) => toArray(filter).map(
|
3953
|
+
...baseFilters == null ? void 0 : baseFilters.filter(isFilterComplete).filter((filter) => !filter.hidden && filter.origin && filter.restorable).map(
|
3954
|
+
(filter) => toArray(filter).map(escapeInjectedFilterUrlDelimiters).join("|").concat(`#${filter.origin}#restorable`)
|
3955
3955
|
)
|
3956
3956
|
);
|
3957
3957
|
}
|
@@ -3965,35 +3965,31 @@ class AdHocFiltersVariableUrlSyncHandler {
|
|
3965
3965
|
return;
|
3966
3966
|
}
|
3967
3967
|
const filters = deserializeUrlToFilters(urlValue);
|
3968
|
-
const
|
3968
|
+
const baseFilters = [...this._variable.state.baseFilters || []];
|
3969
|
+
for (let i = 0; i < filters.length; i++) {
|
3970
|
+
const foundBaseFilterIndex = baseFilters.findIndex((f) => f.key === filters[i].key);
|
3971
|
+
if (foundBaseFilterIndex > -1) {
|
3972
|
+
if (!filters[i].origin && baseFilters[foundBaseFilterIndex].origin === "dashboard") {
|
3973
|
+
filters[i].origin = "dashboard";
|
3974
|
+
filters[i].restorable = true;
|
3975
|
+
}
|
3976
|
+
if (isMatchAllFilter(filters[i])) {
|
3977
|
+
filters[i].matchAllFilter = true;
|
3978
|
+
}
|
3979
|
+
baseFilters[foundBaseFilterIndex] = filters[i];
|
3980
|
+
} else if (filters[i].origin === "dashboard") {
|
3981
|
+
delete filters[i].origin;
|
3982
|
+
delete filters[i].restorable;
|
3983
|
+
} else if (foundBaseFilterIndex === -1 && filters[i].origin === "scope" && filters[i].restorable) {
|
3984
|
+
baseFilters.push(filters[i]);
|
3985
|
+
}
|
3986
|
+
}
|
3969
3987
|
this._variable.setState({
|
3970
3988
|
filters: filters.filter((f) => !f.origin),
|
3971
|
-
|
3989
|
+
baseFilters
|
3972
3990
|
});
|
3973
3991
|
}
|
3974
3992
|
}
|
3975
|
-
function updateOriginFilters(prevOriginFilters, filters) {
|
3976
|
-
const updatedOriginFilters = [...prevOriginFilters];
|
3977
|
-
for (let i = 0; i < filters.length; i++) {
|
3978
|
-
const foundOriginFilterIndex = prevOriginFilters.findIndex((f) => f.key === filters[i].key);
|
3979
|
-
if (foundOriginFilterIndex > -1) {
|
3980
|
-
if (!filters[i].origin && prevOriginFilters[foundOriginFilterIndex].origin === "dashboard") {
|
3981
|
-
filters[i].origin = "dashboard";
|
3982
|
-
filters[i].restorable = true;
|
3983
|
-
}
|
3984
|
-
if (isMatchAllFilter(filters[i])) {
|
3985
|
-
filters[i].matchAllFilter = true;
|
3986
|
-
}
|
3987
|
-
updatedOriginFilters[foundOriginFilterIndex] = filters[i];
|
3988
|
-
} else if (filters[i].origin === "dashboard") {
|
3989
|
-
delete filters[i].origin;
|
3990
|
-
delete filters[i].restorable;
|
3991
|
-
} else if (foundOriginFilterIndex === -1 && filters[i].origin === "scope" && filters[i].restorable) {
|
3992
|
-
updatedOriginFilters.push(filters[i]);
|
3993
|
-
}
|
3994
|
-
}
|
3995
|
-
return updatedOriginFilters;
|
3996
|
-
}
|
3997
3993
|
function deserializeUrlToFilters(value) {
|
3998
3994
|
if (Array.isArray(value)) {
|
3999
3995
|
const values = value;
|
@@ -5321,7 +5317,7 @@ const AdHocFiltersAlwaysWipCombobox = React.forwardRef(function AdHocFiltersAlwa
|
|
5321
5317
|
});
|
5322
5318
|
|
5323
5319
|
const AdHocFiltersComboboxRenderer = React.memo(function AdHocFiltersComboboxRenderer2({ model }) {
|
5324
|
-
const {
|
5320
|
+
const { baseFilters, filters, readOnly } = model.useState();
|
5325
5321
|
const styles = ui.useStyles2(getStyles$a);
|
5326
5322
|
const focusOnWipInputRef = React.useRef();
|
5327
5323
|
return /* @__PURE__ */ React__default.default.createElement(
|
@@ -5334,7 +5330,7 @@ const AdHocFiltersComboboxRenderer = React.memo(function AdHocFiltersComboboxRen
|
|
5334
5330
|
}
|
5335
5331
|
},
|
5336
5332
|
/* @__PURE__ */ React__default.default.createElement(ui.Icon, { name: "filter", className: styles.filterIcon, size: "lg" }),
|
5337
|
-
|
5333
|
+
baseFilters == null ? void 0 : baseFilters.map(
|
5338
5334
|
(filter, index) => filter.origin ? /* @__PURE__ */ React__default.default.createElement(
|
5339
5335
|
AdHocFilterPill,
|
5340
5336
|
{
|
@@ -5498,14 +5494,17 @@ const OPERATORS = [
|
|
5498
5494
|
];
|
5499
5495
|
class AdHocFiltersVariable extends SceneObjectBase {
|
5500
5496
|
constructor(state) {
|
5501
|
-
var _a, _b, _c, _d, _e;
|
5497
|
+
var _a, _b, _c, _d, _e, _f;
|
5502
5498
|
super({
|
5503
5499
|
type: "adhoc",
|
5504
5500
|
name: (_a = state.name) != null ? _a : "Filters",
|
5505
5501
|
filters: [],
|
5506
5502
|
datasource: null,
|
5507
5503
|
applyMode: "auto",
|
5508
|
-
filterExpression: (
|
5504
|
+
filterExpression: (_e = state.filterExpression) != null ? _e : renderExpression(state.expressionBuilder, [
|
5505
|
+
...(_c = (_b = state.baseFilters) == null ? void 0 : _b.filter((filter) => filter.origin)) != null ? _c : [],
|
5506
|
+
...(_d = state.filters) != null ? _d : []
|
5507
|
+
]),
|
5509
5508
|
...state
|
5510
5509
|
});
|
5511
5510
|
this._scopedVars = { __sceneObject: wrapInSafeSerializableSceneObject(this) };
|
@@ -5514,7 +5513,6 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
5514
5513
|
// are set on construct and used to restore a baseFilter with an origin
|
5515
5514
|
// to its original value if edited at some point
|
5516
5515
|
this._originalValues = /* @__PURE__ */ new Map();
|
5517
|
-
this._prevScopes = [];
|
5518
5516
|
/** Needed for scopes dependency */
|
5519
5517
|
this._variableDependency = new VariableDependencyConfig(this, {
|
5520
5518
|
dependsOnScopes: true,
|
@@ -5522,33 +5520,44 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
5522
5520
|
});
|
5523
5521
|
this._urlSync = new AdHocFiltersVariableUrlSyncHandler(this);
|
5524
5522
|
this._activationHandler = () => {
|
5523
|
+
this._updateScopesFilters();
|
5525
5524
|
return () => {
|
5526
|
-
var _a;
|
5527
|
-
(_a = this.state.
|
5528
|
-
|
5529
|
-
this.
|
5530
|
-
}
|
5531
|
-
|
5525
|
+
var _a, _b;
|
5526
|
+
if ((_a = this.state.baseFilters) == null ? void 0 : _a.length) {
|
5527
|
+
this.setState({
|
5528
|
+
baseFilters: [...this.state.baseFilters.filter((filter) => filter.origin !== "scope")]
|
5529
|
+
});
|
5530
|
+
(_b = this.state.baseFilters) == null ? void 0 : _b.forEach((filter) => {
|
5531
|
+
if (filter.origin === "dashboard" && filter.restorable) {
|
5532
|
+
this.restoreOriginalFilter(filter);
|
5533
|
+
}
|
5534
|
+
});
|
5535
|
+
}
|
5532
5536
|
};
|
5533
5537
|
};
|
5534
5538
|
if (this.state.applyMode === "auto") {
|
5535
5539
|
patchGetAdhocFilters(this);
|
5536
5540
|
}
|
5537
|
-
(
|
5541
|
+
(_f = this.state.baseFilters) == null ? void 0 : _f.forEach((baseFilter) => {
|
5538
5542
|
var _a2;
|
5539
|
-
|
5540
|
-
|
5541
|
-
|
5542
|
-
|
5543
|
+
if (baseFilter.origin === "dashboard") {
|
5544
|
+
this._originalValues.set(baseFilter.key, {
|
5545
|
+
operator: baseFilter.operator,
|
5546
|
+
value: (_a2 = baseFilter.values) != null ? _a2 : [baseFilter.value]
|
5547
|
+
});
|
5548
|
+
}
|
5543
5549
|
});
|
5544
5550
|
this.addActivationHandler(this._activationHandler);
|
5545
5551
|
}
|
5546
5552
|
_updateScopesFilters() {
|
5547
5553
|
var _a, _b;
|
5548
5554
|
const scopes = sceneGraph.getScopes(this);
|
5549
|
-
if (!scopes
|
5555
|
+
if (!scopes) {
|
5556
|
+
return;
|
5557
|
+
}
|
5558
|
+
if (!scopes.length) {
|
5550
5559
|
this.setState({
|
5551
|
-
|
5560
|
+
baseFilters: (_a = this.state.baseFilters) == null ? void 0 : _a.filter((filter) => filter.origin !== "scope")
|
5552
5561
|
});
|
5553
5562
|
return;
|
5554
5563
|
}
|
@@ -5566,18 +5575,13 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
5566
5575
|
operator: scopeFilter.operator
|
5567
5576
|
});
|
5568
5577
|
});
|
5569
|
-
(_b = this.state.
|
5578
|
+
(_b = this.state.baseFilters) == null ? void 0 : _b.forEach((filter) => {
|
5570
5579
|
if (filter.origin === "scope") {
|
5571
5580
|
scopeInjectedFilters.push(filter);
|
5572
5581
|
} else {
|
5573
5582
|
remainingFilters.push(filter);
|
5574
5583
|
}
|
5575
5584
|
});
|
5576
|
-
if (this._prevScopes.length) {
|
5577
|
-
this.setState({ originFilters: [...finalFilters, ...remainingFilters] });
|
5578
|
-
this._prevScopes = scopes;
|
5579
|
-
return;
|
5580
|
-
}
|
5581
5585
|
const editedScopeFilters = scopeInjectedFilters.filter((filter) => filter.restorable);
|
5582
5586
|
const editedScopeFilterKeys = editedScopeFilters.map((filter) => filter.key);
|
5583
5587
|
const scopeFilterKeys = scopeFilters.map((filter) => filter.key);
|
@@ -5585,16 +5589,18 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
5585
5589
|
...editedScopeFilters.filter((filter) => scopeFilterKeys.includes(filter.key)),
|
5586
5590
|
...scopeFilters.filter((filter) => !editedScopeFilterKeys.includes(filter.key))
|
5587
5591
|
];
|
5588
|
-
this.setState({
|
5589
|
-
this._prevScopes = scopes;
|
5592
|
+
this.setState({ baseFilters: [...finalFilters, ...remainingFilters] });
|
5590
5593
|
}
|
5591
5594
|
setState(update) {
|
5592
|
-
var _a, _b;
|
5595
|
+
var _a, _b, _c;
|
5593
5596
|
let filterExpressionChanged = false;
|
5594
|
-
if ((update.filters && update.filters !== this.state.filters || update.
|
5597
|
+
if ((update.filters && update.filters !== this.state.filters || update.baseFilters && update.baseFilters !== this.state.baseFilters) && !update.filterExpression) {
|
5595
5598
|
const filters = (_a = update.filters) != null ? _a : this.state.filters;
|
5596
|
-
const
|
5597
|
-
update.filterExpression = renderExpression(this.state.expressionBuilder, [
|
5599
|
+
const baseFilters = (_b = update.baseFilters) != null ? _b : this.state.baseFilters;
|
5600
|
+
update.filterExpression = renderExpression(this.state.expressionBuilder, [
|
5601
|
+
...(_c = baseFilters == null ? void 0 : baseFilters.filter((filter) => filter.origin)) != null ? _c : [],
|
5602
|
+
...filters != null ? filters : []
|
5603
|
+
]);
|
5598
5604
|
filterExpressionChanged = update.filterExpression !== this.state.filterExpression;
|
5599
5605
|
}
|
5600
5606
|
super.setState(update);
|
@@ -5608,12 +5614,12 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
5608
5614
|
* allowing consumers to update the filters without triggering dependent data providers.
|
5609
5615
|
*/
|
5610
5616
|
updateFilters(filters, options) {
|
5611
|
-
var _a;
|
5617
|
+
var _a, _b;
|
5612
5618
|
let filterExpressionChanged = false;
|
5613
5619
|
let filterExpression = void 0;
|
5614
5620
|
if (filters && filters !== this.state.filters) {
|
5615
5621
|
filterExpression = renderExpression(this.state.expressionBuilder, [
|
5616
|
-
...(_a = this.state.
|
5622
|
+
...(_b = (_a = this.state.baseFilters) == null ? void 0 : _a.filter((filter) => filter.origin)) != null ? _b : [],
|
5617
5623
|
...filters
|
5618
5624
|
]);
|
5619
5625
|
filterExpressionChanged = filterExpression !== this.state.filterExpression;
|
@@ -5633,34 +5639,32 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
5633
5639
|
};
|
5634
5640
|
if (filter.restorable) {
|
5635
5641
|
const originalFilter = this._originalValues.get(filter.key);
|
5636
|
-
if (!originalFilter) {
|
5637
|
-
return;
|
5638
|
-
}
|
5639
5642
|
original.value = originalFilter == null ? void 0 : originalFilter.value[0];
|
5640
5643
|
original.values = originalFilter == null ? void 0 : originalFilter.value;
|
5641
5644
|
original.valueLabels = originalFilter == null ? void 0 : originalFilter.value;
|
5642
5645
|
original.operator = originalFilter == null ? void 0 : originalFilter.operator;
|
5643
|
-
this._updateFilter(filter, original);
|
5644
5646
|
}
|
5647
|
+
this._updateFilter(filter, original);
|
5645
5648
|
}
|
5646
5649
|
getValue() {
|
5647
5650
|
return this.state.filterExpression;
|
5648
5651
|
}
|
5649
5652
|
_updateFilter(filter, update) {
|
5650
5653
|
var _a;
|
5651
|
-
const {
|
5654
|
+
const { baseFilters, filters, _wip } = this.state;
|
5652
5655
|
if (filter.origin) {
|
5653
5656
|
const originalValues = this._originalValues.get(filter.key);
|
5654
5657
|
const updateValues = update.values || (update.value ? [update.value] : void 0);
|
5655
|
-
|
5658
|
+
const isRestorableOverride = update.hasOwnProperty("restorable");
|
5659
|
+
if (!isRestorableOverride && (updateValues && !lodash.isEqual(updateValues, originalValues == null ? void 0 : originalValues.value) || update.operator && update.operator !== (originalValues == null ? void 0 : originalValues.operator))) {
|
5656
5660
|
update.restorable = true;
|
5657
5661
|
} else if (updateValues && lodash.isEqual(updateValues, originalValues == null ? void 0 : originalValues.value)) {
|
5658
5662
|
update.restorable = false;
|
5659
5663
|
}
|
5660
|
-
const
|
5664
|
+
const updatedBaseFilters = (_a = baseFilters == null ? void 0 : baseFilters.map((f) => {
|
5661
5665
|
return f === filter ? { ...f, ...update } : f;
|
5662
5666
|
})) != null ? _a : [];
|
5663
|
-
this.setState({
|
5667
|
+
this.setState({ baseFilters: updatedBaseFilters });
|
5664
5668
|
return;
|
5665
5669
|
}
|
5666
5670
|
if (filter === _wip) {
|
@@ -5723,13 +5727,13 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
5723
5727
|
return [...acc, f];
|
5724
5728
|
}, [])
|
5725
5729
|
});
|
5726
|
-
} else if ((_a = this.state.
|
5727
|
-
let filterToForceIndex = this.state.
|
5730
|
+
} else if ((_a = this.state.baseFilters) == null ? void 0 : _a.length) {
|
5731
|
+
let filterToForceIndex = this.state.baseFilters.length - 1;
|
5728
5732
|
if (filter !== this.state._wip) {
|
5729
5733
|
filterToForceIndex = -1;
|
5730
5734
|
}
|
5731
5735
|
this.setState({
|
5732
|
-
|
5736
|
+
baseFilters: this.state.baseFilters.reduce((acc, f, index) => {
|
5733
5737
|
if (index === filterToForceIndex && !f.readOnly) {
|
5734
5738
|
return [
|
5735
5739
|
...acc,
|
@@ -5799,8 +5803,8 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
5799
5803
|
if (!ds || !ds.getTagValues) {
|
5800
5804
|
return [];
|
5801
5805
|
}
|
5802
|
-
const
|
5803
|
-
const otherFilters = this.state.filters.filter((f) => f.key !== filter.key).concat(
|
5806
|
+
const filteredBaseFilters = (_d = (_c = this.state.baseFilters) == null ? void 0 : _c.filter((f) => f.origin && f.key !== filter.key)) != null ? _d : [];
|
5807
|
+
const otherFilters = this.state.filters.filter((f) => f.key !== filter.key).concat(filteredBaseFilters);
|
5804
5808
|
const timeRange = sceneGraph.getTimeRange(this).state.value;
|
5805
5809
|
const queries = this.state.useQueriesAsFilterForOptions ? getQueriesForVariables(this) : void 0;
|
5806
5810
|
let scopes = sceneGraph.getScopes(this);
|
@@ -6284,10 +6288,12 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
6284
6288
|
...getEnrichedDataRequest(this)
|
6285
6289
|
};
|
6286
6290
|
if (this._adhocFiltersVar) {
|
6287
|
-
request.filters = [
|
6288
|
-
|
6289
|
-
|
6290
|
-
|
6291
|
+
request.filters = [];
|
6292
|
+
if ((_a = this._adhocFiltersVar.state.baseFilters) == null ? void 0 : _a.length) {
|
6293
|
+
const injectedBaseFilters = this._adhocFiltersVar.state.baseFilters.filter((filter) => filter.origin);
|
6294
|
+
request.filters = request.filters.concat(injectedBaseFilters);
|
6295
|
+
}
|
6296
|
+
request.filters = request.filters.concat(this._adhocFiltersVar.state.filters.filter(isFilterComplete));
|
6291
6297
|
}
|
6292
6298
|
if (this._groupByVar) {
|
6293
6299
|
request.groupByKeys = this._groupByVar.state.value;
|
@@ -6524,7 +6530,7 @@ function escapeUrlHashDelimiters(value) {
|
|
6524
6530
|
}
|
6525
6531
|
return /#/g[Symbol.replace](value, "__gfh__");
|
6526
6532
|
}
|
6527
|
-
function
|
6533
|
+
function escapeInjectedFilterUrlDelimiters(value) {
|
6528
6534
|
return escapeUrlHashDelimiters(escapeUrlPipeDelimiters(value));
|
6529
6535
|
}
|
6530
6536
|
function escapeURLDelimiters(value) {
|
@@ -7285,9 +7291,11 @@ class ScopesVariable extends SceneObjectBase {
|
|
7285
7291
|
const loading = state.value.length === 0 ? false : state.loading;
|
7286
7292
|
const oldScopes = this.state.scopes.map((scope) => scope.metadata.name);
|
7287
7293
|
const newScopes = state.value.map((scope) => scope.metadata.name);
|
7288
|
-
this.setState({ scopes: state.value, loading });
|
7289
7294
|
if (!loading && !lodash.isEqual(oldScopes, newScopes)) {
|
7295
|
+
this.setState({ scopes: state.value, loading });
|
7290
7296
|
this.publishEvent(new SceneVariableValueChangedEvent(this), true);
|
7297
|
+
} else {
|
7298
|
+
this.setState({ loading });
|
7291
7299
|
}
|
7292
7300
|
}
|
7293
7301
|
}
|