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