@grafana/scenes 6.4.0--canary.1062.13918541857.0 → 6.4.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/components/VizPanel/VizPanelExploreButton.js +6 -4
- package/dist/esm/components/VizPanel/VizPanelExploreButton.js.map +1 -1
- package/dist/esm/utils/explore.js +5 -1
- package/dist/esm/utils/explore.js.map +1 -1
- package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +3 -12
- package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js.map +1 -1
- package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +5 -19
- package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js.map +1 -1
- package/dist/esm/variables/adhoc/AdHocFiltersVariable.js +9 -125
- package/dist/esm/variables/adhoc/AdHocFiltersVariable.js.map +1 -1
- package/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +9 -41
- package/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js.map +1 -1
- package/dist/esm/variables/utils.js +1 -11
- package/dist/esm/variables/utils.js.map +1 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.js +35 -275
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/esm/variables/adhoc/getAdHocFiltersFromScopes.js +0 -72
- package/dist/esm/variables/adhoc/getAdHocFiltersFromScopes.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -878,7 +878,6 @@ interface AdHocFilterWithLabels<M extends Record<string, any> = {}> extends AdHo
|
|
|
878
878
|
hidden?: boolean;
|
|
879
879
|
meta?: M;
|
|
880
880
|
origin?: FilterOrigin;
|
|
881
|
-
originalValue?: string[];
|
|
882
881
|
}
|
|
883
882
|
type AdHocControlsLayout = ControlsLayout | 'combobox';
|
|
884
883
|
declare enum FilterOrigin {
|
|
@@ -989,7 +988,6 @@ declare class AdHocFiltersVariable extends SceneObjectBase<AdHocFiltersVariableS
|
|
|
989
988
|
protected _urlSync: AdHocFiltersVariableUrlSyncHandler;
|
|
990
989
|
constructor(state: Partial<AdHocFiltersVariableState>);
|
|
991
990
|
private _activationHandler;
|
|
992
|
-
private _updateScopesFilters;
|
|
993
991
|
setState(update: Partial<AdHocFiltersVariableState>): void;
|
|
994
992
|
/**
|
|
995
993
|
* Updates the variable's `filters` and `filterExpression` state.
|
|
@@ -1000,7 +998,6 @@ declare class AdHocFiltersVariable extends SceneObjectBase<AdHocFiltersVariableS
|
|
|
1000
998
|
skipPublish?: boolean;
|
|
1001
999
|
forcePublish?: boolean;
|
|
1002
1000
|
}): void;
|
|
1003
|
-
restoreOriginalFilter(filter: AdHocFilterWithLabels): void;
|
|
1004
1001
|
getValue(): VariableValue | undefined;
|
|
1005
1002
|
_updateFilter(filter: AdHocFilterWithLabels, update: Partial<AdHocFilterWithLabels>): void;
|
|
1006
1003
|
_removeFilter(filter: AdHocFilterWithLabels): void;
|
package/dist/index.js
CHANGED
|
@@ -3972,44 +3972,19 @@ class AdHocFiltersVariableUrlSyncHandler {
|
|
|
3972
3972
|
}
|
|
3973
3973
|
getUrlState() {
|
|
3974
3974
|
const filters = this._variable.state.filters;
|
|
3975
|
-
|
|
3976
|
-
let value = [];
|
|
3977
|
-
if (filters.length === 0 && (baseFilters == null ? void 0 : baseFilters.length) === 0) {
|
|
3975
|
+
if (filters.length === 0) {
|
|
3978
3976
|
return { [this.getKey()]: [""] };
|
|
3979
3977
|
}
|
|
3980
|
-
|
|
3981
|
-
|
|
3982
|
-
...filters.filter(isFilterComplete).filter((filter) => !filter.hidden).map((filter) => toArray(filter).map(escapeUrlPipeDelimiters).join("|"))
|
|
3983
|
-
);
|
|
3984
|
-
}
|
|
3985
|
-
if (baseFilters == null ? void 0 : baseFilters.length) {
|
|
3986
|
-
value.push(
|
|
3987
|
-
...baseFilters == null ? void 0 : baseFilters.filter(isFilterComplete).filter((filter) => !filter.hidden && filter.origin && filter.originalValue).map(
|
|
3988
|
-
(filter) => {
|
|
3989
|
-
var _a, _b;
|
|
3990
|
-
return toArray(filter).map(escapeInjectedFilterUrlDelimiters).join("|").concat(
|
|
3991
|
-
`#${(_b = (_a = filter.originalValue) == null ? void 0 : _a.map(escapeInjectedFilterUrlDelimiters).join("|")) != null ? _b : ""}#${filter.origin}`
|
|
3992
|
-
);
|
|
3993
|
-
}
|
|
3994
|
-
)
|
|
3995
|
-
);
|
|
3996
|
-
}
|
|
3997
|
-
return {
|
|
3998
|
-
[this.getKey()]: value.length ? value : [""]
|
|
3999
|
-
};
|
|
3978
|
+
const value = filters.filter(isFilterComplete).filter((filter) => !filter.hidden).map((filter) => toArray(filter).map(escapeUrlPipeDelimiters).join("|"));
|
|
3979
|
+
return { [this.getKey()]: value };
|
|
4000
3980
|
}
|
|
4001
3981
|
updateFromUrl(values) {
|
|
4002
3982
|
const urlValue = values[this.getKey()];
|
|
4003
3983
|
if (urlValue == null) {
|
|
4004
3984
|
return;
|
|
4005
3985
|
}
|
|
4006
|
-
|
|
4007
|
-
|
|
4008
|
-
this._variable.setState({
|
|
4009
|
-
filters: filters.filter((f) => !f.origin),
|
|
4010
|
-
baseFilters: filters.filter((f) => f.origin)
|
|
4011
|
-
});
|
|
4012
|
-
}
|
|
3986
|
+
const filters = deserializeUrlToFilters(urlValue);
|
|
3987
|
+
this._variable.setState({ filters });
|
|
4013
3988
|
}
|
|
4014
3989
|
}
|
|
4015
3990
|
function deserializeUrlToFilters(value) {
|
|
@@ -4034,12 +4009,10 @@ function toArray(filter) {
|
|
|
4034
4009
|
return result;
|
|
4035
4010
|
}
|
|
4036
4011
|
function toFilter(urlValue) {
|
|
4037
|
-
var _a;
|
|
4038
4012
|
if (typeof urlValue !== "string" || urlValue.length === 0) {
|
|
4039
4013
|
return null;
|
|
4040
4014
|
}
|
|
4041
|
-
const [
|
|
4042
|
-
const [key, keyLabel, operator, _operatorLabel, ...values] = filter.split("|").reduce((acc, v) => {
|
|
4015
|
+
const [key, keyLabel, operator, _operatorLabel, ...values] = urlValue.split("|").reduce((acc, v) => {
|
|
4043
4016
|
const [key2, label] = v.split(",");
|
|
4044
4017
|
acc.push(key2, label != null ? label : key2);
|
|
4045
4018
|
return acc;
|
|
@@ -4051,14 +4024,9 @@ function toFilter(urlValue) {
|
|
|
4051
4024
|
value: values[0],
|
|
4052
4025
|
values: isMultiValueOperator(operator) ? values.filter((_, index) => index % 2 === 0) : void 0,
|
|
4053
4026
|
valueLabels: values.filter((_, index) => index % 2 === 1),
|
|
4054
|
-
condition: ""
|
|
4055
|
-
origin: isFilterOrigin(origin) ? origin : void 0,
|
|
4056
|
-
originalValue: originalValues && originalValues.length ? (_a = originalValues.split("|")) != null ? _a : [originalValues] : void 0
|
|
4027
|
+
condition: ""
|
|
4057
4028
|
};
|
|
4058
4029
|
}
|
|
4059
|
-
function isFilterOrigin(value) {
|
|
4060
|
-
return value === FilterOrigin.Scopes || value === FilterOrigin.Dashboards;
|
|
4061
|
-
}
|
|
4062
4030
|
function isFilter(filter) {
|
|
4063
4031
|
return filter !== null && typeof filter.key === "string" && typeof filter.value === "string";
|
|
4064
4032
|
}
|
|
@@ -4720,9 +4688,6 @@ const AdHocCombobox = React.forwardRef(function AdHocCombobox2({ filter, model,
|
|
|
4720
4688
|
return;
|
|
4721
4689
|
}
|
|
4722
4690
|
}
|
|
4723
|
-
if (filter == null ? void 0 : filter.origin) {
|
|
4724
|
-
return;
|
|
4725
|
-
}
|
|
4726
4691
|
setInputType("operator");
|
|
4727
4692
|
return;
|
|
4728
4693
|
}
|
|
@@ -4909,36 +4874,25 @@ const AdHocCombobox = React.forwardRef(function AdHocCombobox2({ filter, model,
|
|
|
4909
4874
|
className: styles.pillWrapper
|
|
4910
4875
|
}, (filter == null ? void 0 : filter.key) ? /* @__PURE__ */ React__default["default"].createElement("div", {
|
|
4911
4876
|
className: css.cx(styles.basePill, styles.keyPill)
|
|
4912
|
-
}, keyLabel) : null, (filter == null ? void 0 : filter.key) && (filter == null ? void 0 : filter.operator) && filterInputType !== "operator" ? /* @__PURE__ */ React__default["default"].createElement("div",
|
|
4877
|
+
}, keyLabel) : null, (filter == null ? void 0 : filter.key) && (filter == null ? void 0 : filter.operator) && filterInputType !== "operator" ? /* @__PURE__ */ React__default["default"].createElement("div", {
|
|
4913
4878
|
id: operatorIdentifier,
|
|
4914
|
-
className: css.cx(
|
|
4915
|
-
|
|
4916
|
-
!filter.origin && styles.operatorPill,
|
|
4917
|
-
filter.origin && styles.keyPill,
|
|
4918
|
-
operatorIdentifier
|
|
4919
|
-
),
|
|
4879
|
+
className: css.cx(styles.basePill, styles.operatorPill, operatorIdentifier),
|
|
4880
|
+
role: "button",
|
|
4920
4881
|
"aria-label": "Edit filter operator",
|
|
4921
|
-
tabIndex:
|
|
4882
|
+
tabIndex: 0,
|
|
4922
4883
|
onClick: (event) => {
|
|
4923
|
-
if (filter.origin) {
|
|
4924
|
-
handleChangeViewMode == null ? void 0 : handleChangeViewMode();
|
|
4925
|
-
return;
|
|
4926
|
-
}
|
|
4927
4884
|
event.stopPropagation();
|
|
4928
4885
|
setInputValue("");
|
|
4929
4886
|
switchInputType("operator", setInputType, void 0, refs.domReference.current);
|
|
4930
4887
|
},
|
|
4931
4888
|
onKeyDown: (event) => {
|
|
4932
|
-
if (filter.origin) {
|
|
4933
|
-
return;
|
|
4934
|
-
}
|
|
4935
4889
|
handleShiftTabInput(event, hasMultiValueOperator);
|
|
4936
4890
|
if (event.key === "Enter") {
|
|
4937
4891
|
setInputValue("");
|
|
4938
4892
|
switchInputType("operator", setInputType, void 0, refs.domReference.current);
|
|
4939
4893
|
}
|
|
4940
4894
|
}
|
|
4941
|
-
},
|
|
4895
|
+
}, filter.operator) : null, /* @__PURE__ */ React__default["default"].createElement("div", {
|
|
4942
4896
|
ref: multiValuePillWrapperRef
|
|
4943
4897
|
}), isMultiValueEdit ? filterMultiValues.map((item, i) => /* @__PURE__ */ React__default["default"].createElement(MultiValuePill, {
|
|
4944
4898
|
key: `${item.value}-${i}`,
|
|
@@ -5185,13 +5139,13 @@ function AdHocFilterPill({ filter, model, readOnly, focusOnWipInputRef }) {
|
|
|
5185
5139
|
const handleChangeViewMode = React.useCallback(
|
|
5186
5140
|
(event, shouldFocusOnPillWrapperOverride) => {
|
|
5187
5141
|
event == null ? void 0 : event.stopPropagation();
|
|
5188
|
-
if (readOnly) {
|
|
5142
|
+
if (readOnly || filter.origin) {
|
|
5189
5143
|
return;
|
|
5190
5144
|
}
|
|
5191
5145
|
setShouldFocusOnPillWrapper(shouldFocusOnPillWrapperOverride != null ? shouldFocusOnPillWrapperOverride : !viewMode);
|
|
5192
5146
|
setViewMode(!viewMode);
|
|
5193
5147
|
},
|
|
5194
|
-
[readOnly, viewMode]
|
|
5148
|
+
[readOnly, viewMode, filter.origin]
|
|
5195
5149
|
);
|
|
5196
5150
|
React.useEffect(() => {
|
|
5197
5151
|
var _a2;
|
|
@@ -5255,20 +5209,11 @@ function AdHocFilterPill({ filter, model, readOnly, focusOnWipInputRef }) {
|
|
|
5255
5209
|
size: "md",
|
|
5256
5210
|
className: styles.pillIcon,
|
|
5257
5211
|
tooltip: `Remove filter with key ${keyLabel}`
|
|
5258
|
-
}) : null, filter.origin &&
|
|
5212
|
+
}) : null, filter.origin && /* @__PURE__ */ React__default["default"].createElement(ui.IconButton, {
|
|
5259
5213
|
name: "info-circle",
|
|
5260
5214
|
size: "md",
|
|
5261
5215
|
className: styles.pillIcon,
|
|
5262
5216
|
tooltip: `This is a ${filter.origin} injected filter`
|
|
5263
|
-
}), filter.origin && filter.originalValue && /* @__PURE__ */ React__default["default"].createElement(ui.IconButton, {
|
|
5264
|
-
onClick: (e) => {
|
|
5265
|
-
e.stopPropagation();
|
|
5266
|
-
model.restoreOriginalFilter(filter);
|
|
5267
|
-
},
|
|
5268
|
-
name: "history",
|
|
5269
|
-
size: "md",
|
|
5270
|
-
className: styles.pillIcon,
|
|
5271
|
-
tooltip: `Restore filter to its original value`
|
|
5272
5217
|
}));
|
|
5273
5218
|
}
|
|
5274
5219
|
return /* @__PURE__ */ React__default["default"].createElement(AdHocCombobox, {
|
|
@@ -5402,73 +5347,6 @@ const getStyles$a = (theme) => ({
|
|
|
5402
5347
|
})
|
|
5403
5348
|
});
|
|
5404
5349
|
|
|
5405
|
-
const reverseScopeFilterOperatorMap = Object.fromEntries(
|
|
5406
|
-
Object.entries(data.scopeFilterOperatorMap).map(([symbol, operator]) => [operator, symbol])
|
|
5407
|
-
);
|
|
5408
|
-
function isEqualityOrMultiOperator(value) {
|
|
5409
|
-
const operators = /* @__PURE__ */ new Set(["equals", "not-equals", "one-of", "not-one-of"]);
|
|
5410
|
-
return operators.has(value);
|
|
5411
|
-
}
|
|
5412
|
-
function getAdHocFiltersFromScopes(scopes) {
|
|
5413
|
-
const formattedFilters = /* @__PURE__ */ new Map();
|
|
5414
|
-
const duplicatedFilters = [];
|
|
5415
|
-
const allFilters = scopes.flatMap((scope) => scope.spec.filters);
|
|
5416
|
-
for (const filter of allFilters) {
|
|
5417
|
-
processFilter(formattedFilters, duplicatedFilters, filter);
|
|
5418
|
-
}
|
|
5419
|
-
return [...formattedFilters.values(), ...duplicatedFilters];
|
|
5420
|
-
}
|
|
5421
|
-
function processFilter(formattedFilters, duplicatedFilters, filter) {
|
|
5422
|
-
var _a, _b;
|
|
5423
|
-
const existingFilter = formattedFilters.get(filter.key);
|
|
5424
|
-
if (existingFilter && canValueBeMerged(existingFilter.operator, filter.operator)) {
|
|
5425
|
-
mergeFilterValues(existingFilter, filter);
|
|
5426
|
-
} else if (!existingFilter) {
|
|
5427
|
-
formattedFilters.set(filter.key, {
|
|
5428
|
-
key: filter.key,
|
|
5429
|
-
operator: reverseScopeFilterOperatorMap[filter.operator],
|
|
5430
|
-
value: filter.value,
|
|
5431
|
-
values: (_a = filter.values) != null ? _a : [filter.value],
|
|
5432
|
-
origin: FilterOrigin.Scopes
|
|
5433
|
-
});
|
|
5434
|
-
} else {
|
|
5435
|
-
duplicatedFilters.push({
|
|
5436
|
-
key: filter.key,
|
|
5437
|
-
operator: reverseScopeFilterOperatorMap[filter.operator],
|
|
5438
|
-
value: filter.value,
|
|
5439
|
-
values: (_b = filter.values) != null ? _b : [filter.value],
|
|
5440
|
-
origin: FilterOrigin.Scopes
|
|
5441
|
-
});
|
|
5442
|
-
}
|
|
5443
|
-
}
|
|
5444
|
-
function mergeFilterValues(adHocFilter, filter) {
|
|
5445
|
-
var _a, _b, _c, _d;
|
|
5446
|
-
const values = (_a = filter.values) != null ? _a : [filter.value];
|
|
5447
|
-
for (const value of values) {
|
|
5448
|
-
if (!((_b = adHocFilter.values) == null ? void 0 : _b.includes(value))) {
|
|
5449
|
-
(_c = adHocFilter.values) == null ? void 0 : _c.push(value);
|
|
5450
|
-
}
|
|
5451
|
-
}
|
|
5452
|
-
if (((_d = adHocFilter.values) == null ? void 0 : _d.length) === 1) {
|
|
5453
|
-
return;
|
|
5454
|
-
}
|
|
5455
|
-
if (filter.operator === "equals" && adHocFilter.operator === reverseScopeFilterOperatorMap["equals"]) {
|
|
5456
|
-
adHocFilter.operator = reverseScopeFilterOperatorMap["one-of"];
|
|
5457
|
-
} else if (filter.operator === "not-equals" && adHocFilter.operator === reverseScopeFilterOperatorMap["not-equals"]) {
|
|
5458
|
-
adHocFilter.operator = reverseScopeFilterOperatorMap["not-one-of"];
|
|
5459
|
-
}
|
|
5460
|
-
}
|
|
5461
|
-
function canValueBeMerged(adHocFilterOperator, filterOperator) {
|
|
5462
|
-
const scopeConvertedOperator = data.scopeFilterOperatorMap[adHocFilterOperator];
|
|
5463
|
-
if (!isEqualityOrMultiOperator(scopeConvertedOperator) || !isEqualityOrMultiOperator(filterOperator)) {
|
|
5464
|
-
return false;
|
|
5465
|
-
}
|
|
5466
|
-
if (scopeConvertedOperator.includes("not") && !filterOperator.includes("not") || !scopeConvertedOperator.includes("not") && filterOperator.includes("not")) {
|
|
5467
|
-
return false;
|
|
5468
|
-
}
|
|
5469
|
-
return true;
|
|
5470
|
-
}
|
|
5471
|
-
|
|
5472
5350
|
var __defProp$z = Object.defineProperty;
|
|
5473
5351
|
var __defProps$n = Object.defineProperties;
|
|
5474
5352
|
var __getOwnPropDescs$n = Object.getOwnPropertyDescriptors;
|
|
@@ -5533,62 +5411,20 @@ const OPERATORS = [
|
|
|
5533
5411
|
];
|
|
5534
5412
|
class AdHocFiltersVariable extends SceneObjectBase {
|
|
5535
5413
|
constructor(state) {
|
|
5536
|
-
var _a, _b
|
|
5414
|
+
var _a, _b;
|
|
5537
5415
|
super(__spreadValues$z({
|
|
5538
5416
|
type: "adhoc",
|
|
5539
5417
|
name: (_a = state.name) != null ? _a : "Filters",
|
|
5540
5418
|
filters: [],
|
|
5541
5419
|
datasource: null,
|
|
5542
5420
|
applyMode: "auto",
|
|
5543
|
-
filterExpression: (
|
|
5544
|
-
...(_c = (_b = state.baseFilters) == null ? void 0 : _b.filter((filter) => filter.origin)) != null ? _c : [],
|
|
5545
|
-
...(_d = state.filters) != null ? _d : []
|
|
5546
|
-
])
|
|
5421
|
+
filterExpression: (_b = state.filterExpression) != null ? _b : renderExpression(state.expressionBuilder, state.filters)
|
|
5547
5422
|
}, state));
|
|
5548
5423
|
this._scopedVars = { __sceneObject: wrapInSafeSerializableSceneObject(this) };
|
|
5549
5424
|
this._dataSourceSrv = runtime.getDataSourceSrv();
|
|
5550
5425
|
this._urlSync = new AdHocFiltersVariableUrlSyncHandler(this);
|
|
5551
5426
|
this._activationHandler = () => {
|
|
5552
|
-
var _a, _b;
|
|
5553
5427
|
this._scopesBridge = sceneGraph.getScopesBridge(this);
|
|
5554
|
-
const scopes = (_a = this._scopesBridge) == null ? void 0 : _a.getValue();
|
|
5555
|
-
if (scopes) {
|
|
5556
|
-
this._updateScopesFilters(scopes);
|
|
5557
|
-
}
|
|
5558
|
-
const sub = (_b = this._scopesBridge) == null ? void 0 : _b.subscribeToValue((n, _) => {
|
|
5559
|
-
this._updateScopesFilters(n, true);
|
|
5560
|
-
});
|
|
5561
|
-
return () => {
|
|
5562
|
-
sub == null ? void 0 : sub.unsubscribe();
|
|
5563
|
-
};
|
|
5564
|
-
};
|
|
5565
|
-
this._updateScopesFilters = (scopes, overwrite) => {
|
|
5566
|
-
var _a;
|
|
5567
|
-
const scopeInjectedFilters = [];
|
|
5568
|
-
const remainingFilters = [];
|
|
5569
|
-
(_a = this.state.baseFilters) == null ? void 0 : _a.forEach((filter) => {
|
|
5570
|
-
if (filter.origin === "scopes" /* Scopes */) {
|
|
5571
|
-
scopeInjectedFilters.push(filter);
|
|
5572
|
-
} else {
|
|
5573
|
-
remainingFilters.push(filter);
|
|
5574
|
-
}
|
|
5575
|
-
});
|
|
5576
|
-
const scopeFilters = getAdHocFiltersFromScopes(scopes);
|
|
5577
|
-
let finalFilters = scopeFilters;
|
|
5578
|
-
if (!overwrite) {
|
|
5579
|
-
const editedScopeFilters = scopeInjectedFilters.filter((filter) => {
|
|
5580
|
-
var _a2;
|
|
5581
|
-
return (_a2 = filter.originalValue) == null ? void 0 : _a2.length;
|
|
5582
|
-
});
|
|
5583
|
-
const editedScopeFilterKeys = editedScopeFilters.map((filter) => filter.key);
|
|
5584
|
-
const scopeFilterKeys = scopeFilters.map((filter) => filter.key);
|
|
5585
|
-
finalFilters = [
|
|
5586
|
-
...editedScopeFilters.filter((filter) => scopeFilterKeys.includes(filter.key)),
|
|
5587
|
-
...scopeFilters.filter((filter) => !editedScopeFilterKeys.includes(filter.key))
|
|
5588
|
-
];
|
|
5589
|
-
}
|
|
5590
|
-
const newFilters = [...remainingFilters, ...finalFilters];
|
|
5591
|
-
this.setState({ baseFilters: newFilters });
|
|
5592
5428
|
};
|
|
5593
5429
|
if (this.state.applyMode === "auto") {
|
|
5594
5430
|
patchGetAdhocFilters(this);
|
|
@@ -5596,15 +5432,9 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
5596
5432
|
this.addActivationHandler(this._activationHandler);
|
|
5597
5433
|
}
|
|
5598
5434
|
setState(update) {
|
|
5599
|
-
var _a, _b, _c;
|
|
5600
5435
|
let filterExpressionChanged = false;
|
|
5601
|
-
if (
|
|
5602
|
-
|
|
5603
|
-
const baseFilters = (_b = update.baseFilters) != null ? _b : this.state.baseFilters;
|
|
5604
|
-
update.filterExpression = renderExpression(this.state.expressionBuilder, [
|
|
5605
|
-
...(_c = baseFilters == null ? void 0 : baseFilters.filter((filter) => filter.origin)) != null ? _c : [],
|
|
5606
|
-
...filters != null ? filters : []
|
|
5607
|
-
]);
|
|
5436
|
+
if (update.filters && update.filters !== this.state.filters && !update.filterExpression) {
|
|
5437
|
+
update.filterExpression = renderExpression(this.state.expressionBuilder, update.filters);
|
|
5608
5438
|
filterExpressionChanged = update.filterExpression !== this.state.filterExpression;
|
|
5609
5439
|
}
|
|
5610
5440
|
super.setState(update);
|
|
@@ -5613,14 +5443,10 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
5613
5443
|
}
|
|
5614
5444
|
}
|
|
5615
5445
|
updateFilters(filters, options) {
|
|
5616
|
-
var _a, _b;
|
|
5617
5446
|
let filterExpressionChanged = false;
|
|
5618
5447
|
let filterExpression = void 0;
|
|
5619
5448
|
if (filters && filters !== this.state.filters) {
|
|
5620
|
-
filterExpression = renderExpression(this.state.expressionBuilder,
|
|
5621
|
-
...(_b = (_a = this.state.baseFilters) == null ? void 0 : _a.filter((filter) => filter.origin)) != null ? _b : [],
|
|
5622
|
-
...filters
|
|
5623
|
-
]);
|
|
5449
|
+
filterExpression = renderExpression(this.state.expressionBuilder, filters);
|
|
5624
5450
|
filterExpressionChanged = filterExpression !== this.state.filterExpression;
|
|
5625
5451
|
}
|
|
5626
5452
|
super.setState({
|
|
@@ -5631,40 +5457,11 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
5631
5457
|
this.publishEvent(new SceneVariableValueChangedEvent(this), true);
|
|
5632
5458
|
}
|
|
5633
5459
|
}
|
|
5634
|
-
restoreOriginalFilter(filter) {
|
|
5635
|
-
var _a;
|
|
5636
|
-
const original = {
|
|
5637
|
-
originalValue: void 0
|
|
5638
|
-
};
|
|
5639
|
-
if ((_a = filter.originalValue) == null ? void 0 : _a.length) {
|
|
5640
|
-
original.value = filter.originalValue[0];
|
|
5641
|
-
original.values = filter.originalValue;
|
|
5642
|
-
original.valueLabels = filter.originalValue;
|
|
5643
|
-
}
|
|
5644
|
-
this._updateFilter(filter, original);
|
|
5645
|
-
}
|
|
5646
5460
|
getValue() {
|
|
5647
5461
|
return this.state.filterExpression;
|
|
5648
5462
|
}
|
|
5649
5463
|
_updateFilter(filter, update) {
|
|
5650
|
-
|
|
5651
|
-
const { baseFilters, filters, _wip } = this.state;
|
|
5652
|
-
if (filter.origin) {
|
|
5653
|
-
const currentValues = filter.values ? filter.values : [filter.value];
|
|
5654
|
-
const updateValues = update.values || (update.value ? [update.value] : void 0);
|
|
5655
|
-
const originalValueOverride = update.hasOwnProperty("originalValue");
|
|
5656
|
-
if (!originalValueOverride && updateValues && !filter.originalValue && !lodash.isEqual(currentValues, updateValues)) {
|
|
5657
|
-
update.originalValue = currentValues;
|
|
5658
|
-
}
|
|
5659
|
-
if (!originalValueOverride && lodash.isEqual(updateValues, filter.originalValue)) {
|
|
5660
|
-
update.originalValue = void 0;
|
|
5661
|
-
}
|
|
5662
|
-
const updatedBaseFilters = (_a = baseFilters == null ? void 0 : baseFilters.map((f) => {
|
|
5663
|
-
return f === filter ? __spreadValues$z(__spreadValues$z({}, f), update) : f;
|
|
5664
|
-
})) != null ? _a : [];
|
|
5665
|
-
this.setState({ baseFilters: updatedBaseFilters });
|
|
5666
|
-
return;
|
|
5667
|
-
}
|
|
5464
|
+
const { filters, _wip } = this.state;
|
|
5668
5465
|
if (filter === _wip) {
|
|
5669
5466
|
if ("value" in update && update["value"] !== "") {
|
|
5670
5467
|
this.setState({ filters: [...filters, __spreadValues$z(__spreadValues$z({}, _wip), update)], _wip: void 0 });
|
|
@@ -5692,7 +5489,6 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
5692
5489
|
}
|
|
5693
5490
|
}
|
|
5694
5491
|
_handleComboboxBackspace(filter) {
|
|
5695
|
-
var _a;
|
|
5696
5492
|
if (this.state.filters.length) {
|
|
5697
5493
|
let filterToForceIndex = this.state.filters.length - 1;
|
|
5698
5494
|
if (filter !== this.state._wip) {
|
|
@@ -5714,27 +5510,6 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
5714
5510
|
return [...acc, f];
|
|
5715
5511
|
}, [])
|
|
5716
5512
|
});
|
|
5717
|
-
} else if ((_a = this.state.baseFilters) == null ? void 0 : _a.length) {
|
|
5718
|
-
let filterToForceIndex = this.state.baseFilters.length - 1;
|
|
5719
|
-
if (filter !== this.state._wip) {
|
|
5720
|
-
filterToForceIndex = -1;
|
|
5721
|
-
}
|
|
5722
|
-
this.setState({
|
|
5723
|
-
baseFilters: this.state.baseFilters.reduce((acc, f, index) => {
|
|
5724
|
-
if (index === filterToForceIndex) {
|
|
5725
|
-
return [
|
|
5726
|
-
...acc,
|
|
5727
|
-
__spreadProps$n(__spreadValues$z({}, f), {
|
|
5728
|
-
forceEdit: true
|
|
5729
|
-
})
|
|
5730
|
-
];
|
|
5731
|
-
}
|
|
5732
|
-
if (f === filter) {
|
|
5733
|
-
return acc;
|
|
5734
|
-
}
|
|
5735
|
-
return [...acc, f];
|
|
5736
|
-
}, [])
|
|
5737
|
-
});
|
|
5738
5513
|
}
|
|
5739
5514
|
}
|
|
5740
5515
|
async _getKeys(currentKey) {
|
|
@@ -5773,7 +5548,7 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
5773
5548
|
return keys.map(toSelectableValue);
|
|
5774
5549
|
}
|
|
5775
5550
|
async _getValuesFor(filter) {
|
|
5776
|
-
var _a, _b, _c, _d
|
|
5551
|
+
var _a, _b, _c, _d;
|
|
5777
5552
|
const override = await ((_b = (_a = this.state).getTagValuesProvider) == null ? void 0 : _b.call(_a, this, filter));
|
|
5778
5553
|
if (override && override.replace) {
|
|
5779
5554
|
return dataFromResponse(override.values).map(toSelectableValue);
|
|
@@ -5782,26 +5557,15 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
5782
5557
|
if (!ds || !ds.getTagValues) {
|
|
5783
5558
|
return [];
|
|
5784
5559
|
}
|
|
5785
|
-
const
|
|
5786
|
-
const otherFilters = this.state.filters.filter((f) => f.key !== filter.key).concat(filteredBaseFilters);
|
|
5560
|
+
const otherFilters = this.state.filters.filter((f) => f.key !== filter.key).concat((_c = this.state.baseFilters) != null ? _c : []);
|
|
5787
5561
|
const timeRange = sceneGraph.getTimeRange(this).state.value;
|
|
5788
5562
|
const queries = this.state.useQueriesAsFilterForOptions ? getQueriesForVariables(this) : void 0;
|
|
5789
|
-
let scopes = (_e = this._scopesBridge) == null ? void 0 : _e.getValue();
|
|
5790
|
-
if (filter.origin === "scopes" /* Scopes */) {
|
|
5791
|
-
scopes = scopes == null ? void 0 : scopes.map((scope) => {
|
|
5792
|
-
return __spreadProps$n(__spreadValues$z({}, scope), {
|
|
5793
|
-
spec: __spreadProps$n(__spreadValues$z({}, scope.spec), {
|
|
5794
|
-
filters: scope.spec.filters.filter((f) => f.key !== filter.key)
|
|
5795
|
-
})
|
|
5796
|
-
});
|
|
5797
|
-
});
|
|
5798
|
-
}
|
|
5799
5563
|
const response = await ds.getTagValues(__spreadValues$z({
|
|
5800
5564
|
key: filter.key,
|
|
5801
5565
|
filters: otherFilters,
|
|
5802
5566
|
timeRange,
|
|
5803
5567
|
queries,
|
|
5804
|
-
scopes
|
|
5568
|
+
scopes: (_d = this._scopesBridge) == null ? void 0 : _d.getValue()
|
|
5805
5569
|
}, getEnrichedFiltersRequest(this)));
|
|
5806
5570
|
if (responseHasError(response)) {
|
|
5807
5571
|
this.setState({ error: response.error.message });
|
|
@@ -6520,15 +6284,6 @@ function escapeUrlCommaDelimiters(value) {
|
|
|
6520
6284
|
}
|
|
6521
6285
|
return /,/g[Symbol.replace](value, "__gfc__");
|
|
6522
6286
|
}
|
|
6523
|
-
function escapeUrlHashDelimiters(value) {
|
|
6524
|
-
if (value === null || value === void 0) {
|
|
6525
|
-
return "";
|
|
6526
|
-
}
|
|
6527
|
-
return /#/g[Symbol.replace](value, "__gfh__");
|
|
6528
|
-
}
|
|
6529
|
-
function escapeInjectedFilterUrlDelimiters(value) {
|
|
6530
|
-
return escapeUrlHashDelimiters(escapeUrlPipeDelimiters(value));
|
|
6531
|
-
}
|
|
6532
6287
|
function escapeURLDelimiters(value) {
|
|
6533
6288
|
return escapeUrlCommaDelimiters(escapeUrlPipeDelimiters(value));
|
|
6534
6289
|
}
|
|
@@ -6538,7 +6293,6 @@ function unescapeUrlDelimiters(value) {
|
|
|
6538
6293
|
}
|
|
6539
6294
|
value = /__gfp__/g[Symbol.replace](value, "|");
|
|
6540
6295
|
value = /__gfc__/g[Symbol.replace](value, ",");
|
|
6541
|
-
value = /__gfh__/g[Symbol.replace](value, "#");
|
|
6542
6296
|
return value;
|
|
6543
6297
|
}
|
|
6544
6298
|
function toUrlCommaDelimitedString(key, label) {
|
|
@@ -10984,7 +10738,11 @@ async function getExploreURL(data, model, timeRange, transform) {
|
|
|
10984
10738
|
return (_a2 = transform == null ? void 0 : transform(q)) != null ? _a2 : q;
|
|
10985
10739
|
});
|
|
10986
10740
|
const queries = interpolatedQueries != null ? interpolatedQueries : [];
|
|
10987
|
-
const
|
|
10741
|
+
const hasMixedDatasources = new Set(queries.map((q) => {
|
|
10742
|
+
var _a2;
|
|
10743
|
+
return (_a2 = q.datasource) == null ? void 0 : _a2.uid;
|
|
10744
|
+
})).size > 1;
|
|
10745
|
+
let datasource = hasMixedDatasources ? "-- Mixed --" : (_d = (_c = queries.find((query) => {
|
|
10988
10746
|
var _a2;
|
|
10989
10747
|
return !!((_a2 = query.datasource) == null ? void 0 : _a2.uid);
|
|
10990
10748
|
})) == null ? void 0 : _c.datasource) == null ? void 0 : _d.uid;
|
|
@@ -11014,10 +10772,12 @@ function VizPanelExploreButtonComponent({ model }) {
|
|
|
11014
10772
|
const { options } = model.useState();
|
|
11015
10773
|
const { data } = sceneGraph.getData(model).useState();
|
|
11016
10774
|
const { from, to } = sceneGraph.getTimeRange(model).useState();
|
|
11017
|
-
const { value: exploreLink } = reactUse.useAsync(
|
|
11018
|
-
|
|
11019
|
-
|
|
11020
|
-
|
|
10775
|
+
const { value: exploreLink } = reactUse.useAsync(async () => {
|
|
10776
|
+
if (!data) {
|
|
10777
|
+
return "";
|
|
10778
|
+
}
|
|
10779
|
+
return getExploreURL(data, model, { from, to }, options.transform);
|
|
10780
|
+
}, [data, model, from, to]);
|
|
11021
10781
|
const returnToPrevious = runtime.useReturnToPrevious();
|
|
11022
10782
|
if (exploreLink) {
|
|
11023
10783
|
return /* @__PURE__ */ React__default["default"].createElement(ui.LinkButton, {
|