@grafana/scenes 6.19.0--canary.1132.15579595251.0 → 6.19.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 +6 -4
- package/dist/esm/querying/SceneQueryRunner.js.map +1 -1
- 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/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 +28 -32
- 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 +0 -3
- package/dist/index.js +87 -80
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
@@ -3957,20 +3957,20 @@ class AdHocFiltersVariableUrlSyncHandler {
|
|
3957
3957
|
}
|
3958
3958
|
getUrlState() {
|
3959
3959
|
const filters = this._variable.state.filters;
|
3960
|
-
const
|
3960
|
+
const baseFilters = this._variable.state.baseFilters;
|
3961
3961
|
let value = [];
|
3962
|
-
if (filters.length === 0 && (
|
3962
|
+
if (filters.length === 0 && (baseFilters == null ? void 0 : baseFilters.length) === 0) {
|
3963
3963
|
return { [this.getKey()]: [""] };
|
3964
3964
|
}
|
3965
3965
|
if (filters.length) {
|
3966
3966
|
value.push(
|
3967
|
-
...filters.filter(isFilterComplete).filter((filter) => !filter.hidden).map((filter) => toArray(filter).map(
|
3967
|
+
...filters.filter(isFilterComplete).filter((filter) => !filter.hidden).map((filter) => toArray(filter).map(escapeInjectedFilterUrlDelimiters).join("|"))
|
3968
3968
|
);
|
3969
3969
|
}
|
3970
|
-
if (
|
3970
|
+
if (baseFilters == null ? void 0 : baseFilters.length) {
|
3971
3971
|
value.push(
|
3972
|
-
...
|
3973
|
-
(filter) => toArray(filter).map(
|
3972
|
+
...baseFilters == null ? void 0 : baseFilters.filter(isFilterComplete).filter((filter) => !filter.hidden && filter.origin && filter.restorable).map(
|
3973
|
+
(filter) => toArray(filter).map(escapeInjectedFilterUrlDelimiters).join("|").concat(`#${filter.origin}#restorable`)
|
3974
3974
|
)
|
3975
3975
|
);
|
3976
3976
|
}
|
@@ -3984,35 +3984,31 @@ class AdHocFiltersVariableUrlSyncHandler {
|
|
3984
3984
|
return;
|
3985
3985
|
}
|
3986
3986
|
const filters = deserializeUrlToFilters(urlValue);
|
3987
|
-
const
|
3987
|
+
const baseFilters = [...this._variable.state.baseFilters || []];
|
3988
|
+
for (let i = 0; i < filters.length; i++) {
|
3989
|
+
const foundBaseFilterIndex = baseFilters.findIndex((f) => f.key === filters[i].key);
|
3990
|
+
if (foundBaseFilterIndex > -1) {
|
3991
|
+
if (!filters[i].origin && baseFilters[foundBaseFilterIndex].origin === "dashboard") {
|
3992
|
+
filters[i].origin = "dashboard";
|
3993
|
+
filters[i].restorable = true;
|
3994
|
+
}
|
3995
|
+
if (isMatchAllFilter(filters[i])) {
|
3996
|
+
filters[i].matchAllFilter = true;
|
3997
|
+
}
|
3998
|
+
baseFilters[foundBaseFilterIndex] = filters[i];
|
3999
|
+
} else if (filters[i].origin === "dashboard") {
|
4000
|
+
delete filters[i].origin;
|
4001
|
+
delete filters[i].restorable;
|
4002
|
+
} else if (foundBaseFilterIndex === -1 && filters[i].origin === "scope" && filters[i].restorable) {
|
4003
|
+
baseFilters.push(filters[i]);
|
4004
|
+
}
|
4005
|
+
}
|
3988
4006
|
this._variable.setState({
|
3989
4007
|
filters: filters.filter((f) => !f.origin),
|
3990
|
-
|
4008
|
+
baseFilters
|
3991
4009
|
});
|
3992
4010
|
}
|
3993
4011
|
}
|
3994
|
-
function updateOriginFilters(prevOriginFilters, filters) {
|
3995
|
-
const updatedOriginFilters = [...prevOriginFilters];
|
3996
|
-
for (let i = 0; i < filters.length; i++) {
|
3997
|
-
const foundOriginFilterIndex = prevOriginFilters.findIndex((f) => f.key === filters[i].key);
|
3998
|
-
if (foundOriginFilterIndex > -1) {
|
3999
|
-
if (!filters[i].origin && prevOriginFilters[foundOriginFilterIndex].origin === "dashboard") {
|
4000
|
-
filters[i].origin = "dashboard";
|
4001
|
-
filters[i].restorable = true;
|
4002
|
-
}
|
4003
|
-
if (isMatchAllFilter(filters[i])) {
|
4004
|
-
filters[i].matchAllFilter = true;
|
4005
|
-
}
|
4006
|
-
updatedOriginFilters[foundOriginFilterIndex] = filters[i];
|
4007
|
-
} else if (filters[i].origin === "dashboard") {
|
4008
|
-
delete filters[i].origin;
|
4009
|
-
delete filters[i].restorable;
|
4010
|
-
} else if (foundOriginFilterIndex === -1 && filters[i].origin === "scope" && filters[i].restorable) {
|
4011
|
-
updatedOriginFilters.push(filters[i]);
|
4012
|
-
}
|
4013
|
-
}
|
4014
|
-
return updatedOriginFilters;
|
4015
|
-
}
|
4016
4012
|
function deserializeUrlToFilters(value) {
|
4017
4013
|
if (Array.isArray(value)) {
|
4018
4014
|
const values = value;
|
@@ -5340,7 +5336,7 @@ const AdHocFiltersAlwaysWipCombobox = React.forwardRef(function AdHocFiltersAlwa
|
|
5340
5336
|
});
|
5341
5337
|
|
5342
5338
|
const AdHocFiltersComboboxRenderer = React.memo(function AdHocFiltersComboboxRenderer2({ model }) {
|
5343
|
-
const {
|
5339
|
+
const { baseFilters, filters, readOnly } = model.useState();
|
5344
5340
|
const styles = ui.useStyles2(getStyles$a);
|
5345
5341
|
const focusOnWipInputRef = React.useRef();
|
5346
5342
|
return /* @__PURE__ */ React__default.default.createElement(
|
@@ -5353,7 +5349,7 @@ const AdHocFiltersComboboxRenderer = React.memo(function AdHocFiltersComboboxRen
|
|
5353
5349
|
}
|
5354
5350
|
},
|
5355
5351
|
/* @__PURE__ */ React__default.default.createElement(ui.Icon, { name: "filter", className: styles.filterIcon, size: "lg" }),
|
5356
|
-
|
5352
|
+
baseFilters == null ? void 0 : baseFilters.map(
|
5357
5353
|
(filter, index) => filter.origin ? /* @__PURE__ */ React__default.default.createElement(
|
5358
5354
|
AdHocFilterPill,
|
5359
5355
|
{
|
@@ -5517,14 +5513,17 @@ const OPERATORS = [
|
|
5517
5513
|
];
|
5518
5514
|
class AdHocFiltersVariable extends SceneObjectBase {
|
5519
5515
|
constructor(state) {
|
5520
|
-
var _a, _b, _c, _d, _e;
|
5516
|
+
var _a, _b, _c, _d, _e, _f;
|
5521
5517
|
super({
|
5522
5518
|
type: "adhoc",
|
5523
5519
|
name: (_a = state.name) != null ? _a : "Filters",
|
5524
5520
|
filters: [],
|
5525
5521
|
datasource: null,
|
5526
5522
|
applyMode: "auto",
|
5527
|
-
filterExpression: (
|
5523
|
+
filterExpression: (_e = state.filterExpression) != null ? _e : renderExpression(state.expressionBuilder, [
|
5524
|
+
...(_c = (_b = state.baseFilters) == null ? void 0 : _b.filter((filter) => filter.origin)) != null ? _c : [],
|
5525
|
+
...(_d = state.filters) != null ? _d : []
|
5526
|
+
]),
|
5528
5527
|
...state
|
5529
5528
|
});
|
5530
5529
|
this._scopedVars = { __sceneObject: wrapInSafeSerializableSceneObject(this) };
|
@@ -5533,7 +5532,6 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
5533
5532
|
// are set on construct and used to restore a baseFilter with an origin
|
5534
5533
|
// to its original value if edited at some point
|
5535
5534
|
this._originalValues = /* @__PURE__ */ new Map();
|
5536
|
-
this._prevScopes = [];
|
5537
5535
|
/** Needed for scopes dependency */
|
5538
5536
|
this._variableDependency = new VariableDependencyConfig(this, {
|
5539
5537
|
dependsOnScopes: true,
|
@@ -5541,33 +5539,44 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
5541
5539
|
});
|
5542
5540
|
this._urlSync = new AdHocFiltersVariableUrlSyncHandler(this);
|
5543
5541
|
this._activationHandler = () => {
|
5542
|
+
this._updateScopesFilters();
|
5544
5543
|
return () => {
|
5545
|
-
var _a;
|
5546
|
-
(_a = this.state.
|
5547
|
-
|
5548
|
-
this.
|
5549
|
-
}
|
5550
|
-
|
5544
|
+
var _a, _b;
|
5545
|
+
if ((_a = this.state.baseFilters) == null ? void 0 : _a.length) {
|
5546
|
+
this.setState({
|
5547
|
+
baseFilters: [...this.state.baseFilters.filter((filter) => filter.origin !== "scope")]
|
5548
|
+
});
|
5549
|
+
(_b = this.state.baseFilters) == null ? void 0 : _b.forEach((filter) => {
|
5550
|
+
if (filter.origin === "dashboard" && filter.restorable) {
|
5551
|
+
this.restoreOriginalFilter(filter);
|
5552
|
+
}
|
5553
|
+
});
|
5554
|
+
}
|
5551
5555
|
};
|
5552
5556
|
};
|
5553
5557
|
if (this.state.applyMode === "auto") {
|
5554
5558
|
patchGetAdhocFilters(this);
|
5555
5559
|
}
|
5556
|
-
(
|
5560
|
+
(_f = this.state.baseFilters) == null ? void 0 : _f.forEach((baseFilter) => {
|
5557
5561
|
var _a2;
|
5558
|
-
|
5559
|
-
|
5560
|
-
|
5561
|
-
|
5562
|
+
if (baseFilter.origin === "dashboard") {
|
5563
|
+
this._originalValues.set(baseFilter.key, {
|
5564
|
+
operator: baseFilter.operator,
|
5565
|
+
value: (_a2 = baseFilter.values) != null ? _a2 : [baseFilter.value]
|
5566
|
+
});
|
5567
|
+
}
|
5562
5568
|
});
|
5563
5569
|
this.addActivationHandler(this._activationHandler);
|
5564
5570
|
}
|
5565
5571
|
_updateScopesFilters() {
|
5566
5572
|
var _a, _b;
|
5567
5573
|
const scopes = sceneGraph.getScopes(this);
|
5568
|
-
if (!scopes
|
5574
|
+
if (!scopes) {
|
5575
|
+
return;
|
5576
|
+
}
|
5577
|
+
if (!scopes.length) {
|
5569
5578
|
this.setState({
|
5570
|
-
|
5579
|
+
baseFilters: (_a = this.state.baseFilters) == null ? void 0 : _a.filter((filter) => filter.origin !== "scope")
|
5571
5580
|
});
|
5572
5581
|
return;
|
5573
5582
|
}
|
@@ -5585,18 +5594,13 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
5585
5594
|
operator: scopeFilter.operator
|
5586
5595
|
});
|
5587
5596
|
});
|
5588
|
-
(_b = this.state.
|
5597
|
+
(_b = this.state.baseFilters) == null ? void 0 : _b.forEach((filter) => {
|
5589
5598
|
if (filter.origin === "scope") {
|
5590
5599
|
scopeInjectedFilters.push(filter);
|
5591
5600
|
} else {
|
5592
5601
|
remainingFilters.push(filter);
|
5593
5602
|
}
|
5594
5603
|
});
|
5595
|
-
if (this._prevScopes.length) {
|
5596
|
-
this.setState({ originFilters: [...finalFilters, ...remainingFilters] });
|
5597
|
-
this._prevScopes = scopes;
|
5598
|
-
return;
|
5599
|
-
}
|
5600
5604
|
const editedScopeFilters = scopeInjectedFilters.filter((filter) => filter.restorable);
|
5601
5605
|
const editedScopeFilterKeys = editedScopeFilters.map((filter) => filter.key);
|
5602
5606
|
const scopeFilterKeys = scopeFilters.map((filter) => filter.key);
|
@@ -5604,16 +5608,18 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
5604
5608
|
...editedScopeFilters.filter((filter) => scopeFilterKeys.includes(filter.key)),
|
5605
5609
|
...scopeFilters.filter((filter) => !editedScopeFilterKeys.includes(filter.key))
|
5606
5610
|
];
|
5607
|
-
this.setState({
|
5608
|
-
this._prevScopes = scopes;
|
5611
|
+
this.setState({ baseFilters: [...finalFilters, ...remainingFilters] });
|
5609
5612
|
}
|
5610
5613
|
setState(update) {
|
5611
|
-
var _a, _b;
|
5614
|
+
var _a, _b, _c;
|
5612
5615
|
let filterExpressionChanged = false;
|
5613
|
-
if ((update.filters && update.filters !== this.state.filters || update.
|
5616
|
+
if ((update.filters && update.filters !== this.state.filters || update.baseFilters && update.baseFilters !== this.state.baseFilters) && !update.filterExpression) {
|
5614
5617
|
const filters = (_a = update.filters) != null ? _a : this.state.filters;
|
5615
|
-
const
|
5616
|
-
update.filterExpression = renderExpression(this.state.expressionBuilder, [
|
5618
|
+
const baseFilters = (_b = update.baseFilters) != null ? _b : this.state.baseFilters;
|
5619
|
+
update.filterExpression = renderExpression(this.state.expressionBuilder, [
|
5620
|
+
...(_c = baseFilters == null ? void 0 : baseFilters.filter((filter) => filter.origin)) != null ? _c : [],
|
5621
|
+
...filters != null ? filters : []
|
5622
|
+
]);
|
5617
5623
|
filterExpressionChanged = update.filterExpression !== this.state.filterExpression;
|
5618
5624
|
}
|
5619
5625
|
super.setState(update);
|
@@ -5627,12 +5633,12 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
5627
5633
|
* allowing consumers to update the filters without triggering dependent data providers.
|
5628
5634
|
*/
|
5629
5635
|
updateFilters(filters, options) {
|
5630
|
-
var _a;
|
5636
|
+
var _a, _b;
|
5631
5637
|
let filterExpressionChanged = false;
|
5632
5638
|
let filterExpression = void 0;
|
5633
5639
|
if (filters && filters !== this.state.filters) {
|
5634
5640
|
filterExpression = renderExpression(this.state.expressionBuilder, [
|
5635
|
-
...(_a = this.state.
|
5641
|
+
...(_b = (_a = this.state.baseFilters) == null ? void 0 : _a.filter((filter) => filter.origin)) != null ? _b : [],
|
5636
5642
|
...filters
|
5637
5643
|
]);
|
5638
5644
|
filterExpressionChanged = filterExpression !== this.state.filterExpression;
|
@@ -5652,34 +5658,32 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
5652
5658
|
};
|
5653
5659
|
if (filter.restorable) {
|
5654
5660
|
const originalFilter = this._originalValues.get(filter.key);
|
5655
|
-
if (!originalFilter) {
|
5656
|
-
return;
|
5657
|
-
}
|
5658
5661
|
original.value = originalFilter == null ? void 0 : originalFilter.value[0];
|
5659
5662
|
original.values = originalFilter == null ? void 0 : originalFilter.value;
|
5660
5663
|
original.valueLabels = originalFilter == null ? void 0 : originalFilter.value;
|
5661
5664
|
original.operator = originalFilter == null ? void 0 : originalFilter.operator;
|
5662
|
-
this._updateFilter(filter, original);
|
5663
5665
|
}
|
5666
|
+
this._updateFilter(filter, original);
|
5664
5667
|
}
|
5665
5668
|
getValue() {
|
5666
5669
|
return this.state.filterExpression;
|
5667
5670
|
}
|
5668
5671
|
_updateFilter(filter, update) {
|
5669
5672
|
var _a;
|
5670
|
-
const {
|
5673
|
+
const { baseFilters, filters, _wip } = this.state;
|
5671
5674
|
if (filter.origin) {
|
5672
5675
|
const originalValues = this._originalValues.get(filter.key);
|
5673
5676
|
const updateValues = update.values || (update.value ? [update.value] : void 0);
|
5674
|
-
|
5677
|
+
const isRestorableOverride = update.hasOwnProperty("restorable");
|
5678
|
+
if (!isRestorableOverride && (updateValues && !lodash.isEqual(updateValues, originalValues == null ? void 0 : originalValues.value) || update.operator && update.operator !== (originalValues == null ? void 0 : originalValues.operator))) {
|
5675
5679
|
update.restorable = true;
|
5676
5680
|
} else if (updateValues && lodash.isEqual(updateValues, originalValues == null ? void 0 : originalValues.value)) {
|
5677
5681
|
update.restorable = false;
|
5678
5682
|
}
|
5679
|
-
const
|
5683
|
+
const updatedBaseFilters = (_a = baseFilters == null ? void 0 : baseFilters.map((f) => {
|
5680
5684
|
return f === filter ? { ...f, ...update } : f;
|
5681
5685
|
})) != null ? _a : [];
|
5682
|
-
this.setState({
|
5686
|
+
this.setState({ baseFilters: updatedBaseFilters });
|
5683
5687
|
return;
|
5684
5688
|
}
|
5685
5689
|
if (filter === _wip) {
|
@@ -5742,13 +5746,13 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
5742
5746
|
return [...acc, f];
|
5743
5747
|
}, [])
|
5744
5748
|
});
|
5745
|
-
} else if ((_a = this.state.
|
5746
|
-
let filterToForceIndex = this.state.
|
5749
|
+
} else if ((_a = this.state.baseFilters) == null ? void 0 : _a.length) {
|
5750
|
+
let filterToForceIndex = this.state.baseFilters.length - 1;
|
5747
5751
|
if (filter !== this.state._wip) {
|
5748
5752
|
filterToForceIndex = -1;
|
5749
5753
|
}
|
5750
5754
|
this.setState({
|
5751
|
-
|
5755
|
+
baseFilters: this.state.baseFilters.reduce((acc, f, index) => {
|
5752
5756
|
if (index === filterToForceIndex && !f.readOnly) {
|
5753
5757
|
return [
|
5754
5758
|
...acc,
|
@@ -5818,8 +5822,8 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
5818
5822
|
if (!ds || !ds.getTagValues) {
|
5819
5823
|
return [];
|
5820
5824
|
}
|
5821
|
-
const
|
5822
|
-
const otherFilters = this.state.filters.filter((f) => f.key !== filter.key).concat(
|
5825
|
+
const filteredBaseFilters = (_d = (_c = this.state.baseFilters) == null ? void 0 : _c.filter((f) => f.origin && f.key !== filter.key)) != null ? _d : [];
|
5826
|
+
const otherFilters = this.state.filters.filter((f) => f.key !== filter.key).concat(filteredBaseFilters);
|
5823
5827
|
const timeRange = sceneGraph.getTimeRange(this).state.value;
|
5824
5828
|
const queries = this.state.useQueriesAsFilterForOptions ? getQueriesForVariables(this) : void 0;
|
5825
5829
|
let scopes = sceneGraph.getScopes(this);
|
@@ -6303,10 +6307,12 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
6303
6307
|
...getEnrichedDataRequest(this)
|
6304
6308
|
};
|
6305
6309
|
if (this._adhocFiltersVar) {
|
6306
|
-
request.filters = [
|
6307
|
-
|
6308
|
-
|
6309
|
-
|
6310
|
+
request.filters = [];
|
6311
|
+
if ((_a = this._adhocFiltersVar.state.baseFilters) == null ? void 0 : _a.length) {
|
6312
|
+
const injectedBaseFilters = this._adhocFiltersVar.state.baseFilters.filter((filter) => filter.origin);
|
6313
|
+
request.filters = request.filters.concat(injectedBaseFilters);
|
6314
|
+
}
|
6315
|
+
request.filters = request.filters.concat(this._adhocFiltersVar.state.filters.filter(isFilterComplete));
|
6310
6316
|
}
|
6311
6317
|
if (this._groupByVar) {
|
6312
6318
|
request.groupByKeys = this._groupByVar.state.value;
|
@@ -6543,7 +6549,7 @@ function escapeUrlHashDelimiters(value) {
|
|
6543
6549
|
}
|
6544
6550
|
return /#/g[Symbol.replace](value, "__gfh__");
|
6545
6551
|
}
|
6546
|
-
function
|
6552
|
+
function escapeInjectedFilterUrlDelimiters(value) {
|
6547
6553
|
return escapeUrlHashDelimiters(escapeUrlPipeDelimiters(value));
|
6548
6554
|
}
|
6549
6555
|
function escapeURLDelimiters(value) {
|
@@ -9046,6 +9052,7 @@ function executeAnnotationQuery(datasource, timeRange, query, layer) {
|
|
9046
9052
|
refId: "Anno"
|
9047
9053
|
}
|
9048
9054
|
],
|
9055
|
+
scopes: sceneGraph.getScopes(layer),
|
9049
9056
|
...getEnrichedDataRequest(layer)
|
9050
9057
|
};
|
9051
9058
|
const runRequest = runtime.getRunRequest();
|