@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/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 originFilters = this._variable.state.originFilters;
3960
+ const baseFilters = this._variable.state.baseFilters;
3961
3961
  let value = [];
3962
- if (filters.length === 0 && (originFilters == null ? void 0 : originFilters.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(escapeOriginFilterUrlDelimiters).join("|"))
3967
+ ...filters.filter(isFilterComplete).filter((filter) => !filter.hidden).map((filter) => toArray(filter).map(escapeInjectedFilterUrlDelimiters).join("|"))
3968
3968
  );
3969
3969
  }
3970
- if (originFilters == null ? void 0 : originFilters.length) {
3970
+ if (baseFilters == null ? void 0 : baseFilters.length) {
3971
3971
  value.push(
3972
- ...originFilters == null ? void 0 : originFilters.filter(isFilterComplete).filter((filter) => !filter.hidden && filter.origin && filter.restorable).map(
3973
- (filter) => toArray(filter).map(escapeOriginFilterUrlDelimiters).join("|").concat(`#${filter.origin}#restorable`)
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 originFilters = updateOriginFilters([...this._variable.state.originFilters || []], filters);
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
- originFilters
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 { originFilters, filters, readOnly } = model.useState();
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
- originFilters == null ? void 0 : originFilters.map(
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: (_d = state.filterExpression) != null ? _d : renderExpression(state.expressionBuilder, [...(_b = state.originFilters) != null ? _b : [], ...(_c = state.filters) != null ? _c : []]),
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.originFilters) == null ? void 0 : _a.forEach((filter) => {
5547
- if (filter.restorable) {
5548
- this.restoreOriginalFilter(filter);
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
- (_e = this.state.originFilters) == null ? void 0 : _e.forEach((filter) => {
5560
+ (_f = this.state.baseFilters) == null ? void 0 : _f.forEach((baseFilter) => {
5557
5561
  var _a2;
5558
- this._originalValues.set(filter.key, {
5559
- operator: filter.operator,
5560
- value: (_a2 = filter.values) != null ? _a2 : [filter.value]
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 || !scopes.length) {
5574
+ if (!scopes) {
5575
+ return;
5576
+ }
5577
+ if (!scopes.length) {
5569
5578
  this.setState({
5570
- originFilters: (_a = this.state.originFilters) == null ? void 0 : _a.filter((filter) => filter.origin !== "scope")
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.originFilters) == null ? void 0 : _b.forEach((filter) => {
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({ originFilters: [...finalFilters, ...remainingFilters] });
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.originFilters && update.originFilters !== this.state.originFilters) && !update.filterExpression) {
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 originFilters = (_b = update.originFilters) != null ? _b : this.state.originFilters;
5616
- update.filterExpression = renderExpression(this.state.expressionBuilder, [...originFilters != null ? originFilters : [], ...filters]);
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.originFilters) != null ? _a : [],
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 { originFilters, filters, _wip } = this.state;
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
- if (updateValues && !lodash.isEqual(updateValues, originalValues == null ? void 0 : originalValues.value) || update.operator && update.operator !== (originalValues == null ? void 0 : originalValues.operator)) {
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 updatedFilters2 = (_a = originFilters == null ? void 0 : originFilters.map((f) => {
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({ originFilters: updatedFilters2 });
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.originFilters) == null ? void 0 : _a.length) {
5746
- let filterToForceIndex = this.state.originFilters.length - 1;
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
- originFilters: this.state.originFilters.reduce((acc, f, index) => {
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 originFilters = (_d = (_c = this.state.originFilters) == null ? void 0 : _c.filter((f) => f.key !== filter.key)) != null ? _d : [];
5822
- const otherFilters = this.state.filters.filter((f) => f.key !== filter.key).concat(originFilters);
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
- ...(_a = this._adhocFiltersVar.state.originFilters) != null ? _a : [],
6308
- ...this._adhocFiltersVar.state.filters
6309
- ].filter(isFilterComplete);
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 escapeOriginFilterUrlDelimiters(value) {
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();