@grafana/scenes 6.28.2--canary.1194.16495101475.0 → 6.28.2--canary.1195.16517016489.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
@@ -646,7 +646,7 @@ class SceneRenderProfiler {
646
646
  );
647
647
  __privateSet$3(this, _trailAnimationFrameId, null);
648
648
  const profileEndTs = profileStartTs + profileDuration + slowFramesTime;
649
- performance.measure("DashboardInteraction", {
649
+ performance.measure(`DashboardInteraction ${__privateGet$3(this, _profileInProgress).origin}`, {
650
650
  start: profileStartTs,
651
651
  end: profileEndTs
652
652
  });
@@ -664,6 +664,7 @@ class SceneRenderProfiler {
664
664
  // @ts-ignore
665
665
  totalJSHeapSize: performance.memory ? performance.memory.totalJSHeapSize : 0
666
666
  });
667
+ __privateSet$3(this, _profileInProgress, null);
667
668
  }
668
669
  if (window.__runs) {
669
670
  window.__runs += `${Date.now()}, ${profileDuration + slowFramesTime}
@@ -676,14 +677,22 @@ class SceneRenderProfiler {
676
677
  };
677
678
  }
678
679
  startProfile(name) {
679
- if (__privateGet$3(this, _trailAnimationFrameId)) {
680
- cancelAnimationFrame(__privateGet$3(this, _trailAnimationFrameId));
681
- __privateSet$3(this, _trailAnimationFrameId, null);
682
- writeSceneLog(this.constructor.name, "New profile: Stopped recording frames");
680
+ if (__privateGet$3(this, _profileInProgress)) {
681
+ if (__privateGet$3(this, _trailAnimationFrameId)) {
682
+ cancelAnimationFrame(__privateGet$3(this, _trailAnimationFrameId));
683
+ __privateSet$3(this, _trailAnimationFrameId, null);
684
+ writeSceneLog(this.constructor.name, "New profile: Stopped recording frames ");
685
+ __privateSet$3(this, _profileInProgress, { origin: name, crumbs: [] });
686
+ __privateSet$3(this, _profileStartTs, performance.now());
687
+ writeSceneLog(this.constructor.name, "Profile started:", __privateGet$3(this, _profileInProgress), __privateGet$3(this, _profileStartTs));
688
+ } else {
689
+ this.addCrumb(name);
690
+ }
691
+ } else {
692
+ __privateSet$3(this, _profileInProgress, { origin: name, crumbs: [] });
693
+ __privateSet$3(this, _profileStartTs, performance.now());
694
+ writeSceneLog(this.constructor.name, "Profile started:", __privateGet$3(this, _profileInProgress), __privateGet$3(this, _profileStartTs));
683
695
  }
684
- __privateSet$3(this, _profileInProgress, { origin: name, crumbs: [] });
685
- __privateSet$3(this, _profileStartTs, performance.now());
686
- writeSceneLog(this.constructor.name, "Profile started:", __privateGet$3(this, _profileInProgress), __privateGet$3(this, _profileStartTs));
687
696
  }
688
697
  recordProfileTail(measurementStartTime, profileStartTs) {
689
698
  __privateSet$3(this, _trailAnimationFrameId, requestAnimationFrame(
@@ -709,6 +718,7 @@ class SceneRenderProfiler {
709
718
  }
710
719
  addCrumb(crumb) {
711
720
  if (__privateGet$3(this, _profileInProgress)) {
721
+ writeSceneLog(this.constructor.name, "Adding crumb:", crumb);
712
722
  __privateGet$3(this, _profileInProgress).crumbs.push(crumb);
713
723
  }
714
724
  }
@@ -757,6 +767,13 @@ function calculateNetworkTime(requests) {
757
767
  totalNetworkTime += currentEnd - currentStart;
758
768
  return totalNetworkTime;
759
769
  }
770
+ const REFRESH_INTERACTION = "refresh";
771
+ const TIME_RANGE_CHANGE_INTERACTION = "time-range-change";
772
+ const FILTER_REMOVED_INTERACTION = "filter-removed";
773
+ const FILTER_CHANGED_INTERACTION = "filter-changed";
774
+ const FILTER_RESTORED_INTERACTION = "filter-restored";
775
+ const VARIABLE_VALUE_CHANGED_INTERACTION = "variable-value-changed";
776
+ const SCOPES_CHANGED_INTERACTION = "scopes-changed";
760
777
 
761
778
  var __typeError$2 = (msg) => {
762
779
  throw TypeError(msg);
@@ -1038,7 +1055,7 @@ class SceneTimeRange extends SceneObjectBase {
1038
1055
  );
1039
1056
  if (update.from !== this.state.from || update.to !== this.state.to) {
1040
1057
  const queryController = getQueryController(this);
1041
- queryController == null ? void 0 : queryController.startProfile("SceneTimeRange");
1058
+ queryController == null ? void 0 : queryController.startProfile(TIME_RANGE_CHANGE_INTERACTION);
1042
1059
  this._urlSync.performBrowserHistoryAction(() => {
1043
1060
  this.setState(update);
1044
1061
  });
@@ -1214,12 +1231,11 @@ function getTimeWindow(time, timeWindow) {
1214
1231
  };
1215
1232
  }
1216
1233
  function getValidTimeZone(timeZone) {
1217
- var _a;
1218
1234
  if (timeZone === void 0) {
1219
1235
  return void 0;
1220
1236
  }
1221
1237
  if (lodash.isEmpty(timeZone)) {
1222
- return (_a = runtime.config.bootData.user) == null ? void 0 : _a.timezone;
1238
+ return runtime.config.bootData.user.timezone;
1223
1239
  }
1224
1240
  if (timeZone === schema.defaultTimeZone) {
1225
1241
  return timeZone;
@@ -2554,6 +2570,7 @@ function wrapPromiseInStateObservable(promise) {
2554
2570
  }
2555
2571
 
2556
2572
  async function getDataSource(datasource, scopedVars) {
2573
+ var _a;
2557
2574
  if (datasource == null ? void 0 : datasource.uid) {
2558
2575
  const runtimeDataSource = runtimeDataSources.get(datasource.uid);
2559
2576
  if (runtimeDataSource) {
@@ -2569,7 +2586,7 @@ async function getDataSource(datasource, scopedVars) {
2569
2586
  if (queryControler && queryControler.state.enableProfiling) {
2570
2587
  wrapPromiseInStateObservable(dsPromise).pipe(
2571
2588
  registerQueryWithController({
2572
- type: "plugin",
2589
+ type: `plugin/${(_a = datasource == null ? void 0 : datasource.type) != null ? _a : "unknown"}`,
2573
2590
  origin: scopedVars.__sceneObject.value.valueOf()
2574
2591
  })
2575
2592
  ).subscribe(() => {
@@ -2911,7 +2928,7 @@ function VariableValueSelect({ model, state }) {
2911
2928
  "data-testid": e2eSelectors.selectors.pages.Dashboard.SubMenu.submenuItemValueDropDownValueLinkTexts(`${value}`),
2912
2929
  onChange: (newValue) => {
2913
2930
  model.changeValueTo(newValue.value, newValue.label, true);
2914
- queryController == null ? void 0 : queryController.startProfile("VariableValueSelect");
2931
+ queryController == null ? void 0 : queryController.startProfile(VARIABLE_VALUE_CHANGED_INTERACTION);
2915
2932
  if (hasCustomValue !== newValue.__isNew__) {
2916
2933
  setHasCustomValue(newValue.__isNew__);
2917
2934
  }
@@ -2984,7 +3001,7 @@ function VariableValueSelectMulti({
2984
3001
  onInputChange,
2985
3002
  onBlur: () => {
2986
3003
  model.changeValueTo(uncommittedValue, void 0, true);
2987
- queryController == null ? void 0 : queryController.startProfile("VariableValueSelectMulti");
3004
+ queryController == null ? void 0 : queryController.startProfile(VARIABLE_VALUE_CHANGED_INTERACTION);
2988
3005
  },
2989
3006
  filterOption: filterNoOp$2,
2990
3007
  "data-testid": e2eSelectors.selectors.pages.Dashboard.SubMenu.submenuItemValueDropDownValueLinkTexts(`${uncommittedValue}`),
@@ -4627,6 +4644,14 @@ const AdHocCombobox = React.forwardRef(function AdHocCombobox2({ filter, model,
4627
4644
  valueLabels.push((_a2 = item.label) != null ? _a2 : item.value);
4628
4645
  values.push(item.value);
4629
4646
  });
4647
+ let shouldUpdate = true;
4648
+ if (Array.isArray(filter2.values) && filter2.values.length === values.length) {
4649
+ shouldUpdate = !filter2.values.every((v, i) => v === values[i]);
4650
+ }
4651
+ if (shouldUpdate) {
4652
+ const queryController = getQueryController(model2);
4653
+ queryController == null ? void 0 : queryController.startProfile(FILTER_CHANGED_INTERACTION);
4654
+ }
4630
4655
  model2._updateFilter(filter2, { valueLabels, values, value: values[0] });
4631
4656
  setFilterMultiValues([]);
4632
4657
  }
@@ -4779,6 +4804,10 @@ const AdHocCombobox = React.forwardRef(function AdHocCombobox2({ filter, model,
4779
4804
  return;
4780
4805
  }
4781
4806
  focusOnWipInputRef == null ? void 0 : focusOnWipInputRef();
4807
+ if (isFilterComplete(filter)) {
4808
+ const queryController = getQueryController(model);
4809
+ queryController == null ? void 0 : queryController.startProfile(FILTER_REMOVED_INTERACTION);
4810
+ }
4782
4811
  model._handleComboboxBackspace(filter);
4783
4812
  if (isAlwaysWip) {
4784
4813
  handleResetWip();
@@ -4843,16 +4872,18 @@ const AdHocCombobox = React.forwardRef(function AdHocCombobox2({ filter, model,
4843
4872
  handleLocalMultiValueChange(selectedItem);
4844
4873
  setInputValue("");
4845
4874
  } else {
4846
- model._updateFilter(
4875
+ const payload = generateFilterUpdatePayload({
4876
+ filterInputType,
4877
+ item: selectedItem,
4847
4878
  filter,
4848
- generateFilterUpdatePayload({
4849
- filterInputType,
4850
- item: selectedItem,
4851
- filter,
4852
- setFilterMultiValues,
4853
- onAddCustomValue
4854
- })
4855
- );
4879
+ setFilterMultiValues,
4880
+ onAddCustomValue
4881
+ });
4882
+ if (filterInputType === "value" && payload.value !== (filter == null ? void 0 : filter.value)) {
4883
+ const queryController = getQueryController(model);
4884
+ queryController == null ? void 0 : queryController.startProfile(FILTER_CHANGED_INTERACTION);
4885
+ }
4886
+ model._updateFilter(filter, payload);
4856
4887
  populateInputValueOnInputTypeSwitch({
4857
4888
  populateInputOnEdit,
4858
4889
  item: selectedItem,
@@ -5100,16 +5131,18 @@ const AdHocCombobox = React.forwardRef(function AdHocCombobox2({ filter, model,
5100
5131
  setInputValue("");
5101
5132
  (_a3 = refs.domReference.current) == null ? void 0 : _a3.focus();
5102
5133
  } else {
5103
- model._updateFilter(
5134
+ const payload = generateFilterUpdatePayload({
5135
+ filterInputType,
5136
+ item,
5104
5137
  filter,
5105
- generateFilterUpdatePayload({
5106
- filterInputType,
5107
- item,
5108
- filter,
5109
- setFilterMultiValues,
5110
- onAddCustomValue
5111
- })
5112
- );
5138
+ setFilterMultiValues,
5139
+ onAddCustomValue
5140
+ });
5141
+ if (filterInputType === "value" && payload.value !== (filter == null ? void 0 : filter.value)) {
5142
+ const queryController = getQueryController(model);
5143
+ queryController == null ? void 0 : queryController.startProfile(FILTER_CHANGED_INTERACTION);
5144
+ }
5145
+ model._updateFilter(filter, payload);
5113
5146
  populateInputValueOnInputTypeSwitch({
5114
5147
  populateInputOnEdit,
5115
5148
  item,
@@ -5835,6 +5868,8 @@ class AdHocFiltersVariable extends SceneObjectBase {
5835
5868
  original.valueLabels = originalFilter == null ? void 0 : originalFilter.value;
5836
5869
  original.operator = originalFilter == null ? void 0 : originalFilter.operator;
5837
5870
  original.nonApplicable = originalFilter == null ? void 0 : originalFilter.nonApplicable;
5871
+ const queryController = getQueryController(this);
5872
+ queryController == null ? void 0 : queryController.startProfile(FILTER_RESTORED_INTERACTION);
5838
5873
  this._updateFilter(filter, original);
5839
5874
  }
5840
5875
  }
@@ -5891,6 +5926,8 @@ class AdHocFiltersVariable extends SceneObjectBase {
5891
5926
  this.setState({ _wip: void 0 });
5892
5927
  return;
5893
5928
  }
5929
+ const queryController = getQueryController(this);
5930
+ queryController == null ? void 0 : queryController.startProfile(FILTER_REMOVED_INTERACTION);
5894
5931
  this._setStateWithFiltersApplicabilityCheck({
5895
5932
  filters: this.state.filters.filter((f) => f !== filter),
5896
5933
  originFilters: this.state.originFilters
@@ -7533,6 +7570,8 @@ class ScopesVariable extends SceneObjectBase {
7533
7570
  const newScopes = state.value.map((scope) => scope.metadata.name);
7534
7571
  const scopesHaveChanged = !lodash.isEqual(oldScopes, newScopes);
7535
7572
  if (!loading && (scopesHaveChanged || newScopes.length === 0)) {
7573
+ const queryController = getQueryController(this);
7574
+ queryController == null ? void 0 : queryController.startProfile(SCOPES_CHANGED_INTERACTION);
7536
7575
  this.setState({ scopes: state.value, loading });
7537
7576
  this.publishEvent(new SceneVariableValueChangedEvent(this), true);
7538
7577
  } else {
@@ -8649,7 +8688,7 @@ class VizPanel extends SceneObjectBase {
8649
8688
  const panelPromise = importPanelPlugin(pluginId);
8650
8689
  const queryControler = sceneGraph.getQueryController(this);
8651
8690
  if (queryControler && queryControler.state.enableProfiling) {
8652
- wrapPromiseInStateObservable(panelPromise).pipe(registerQueryWithController({ type: "plugin", origin: this })).subscribe(() => {
8691
+ wrapPromiseInStateObservable(panelPromise).pipe(registerQueryWithController({ type: `plugin/${pluginId}`, origin: this })).subscribe(() => {
8653
8692
  });
8654
8693
  }
8655
8694
  const result = await panelPromise;
@@ -12016,7 +12055,7 @@ class SceneRefreshPicker extends SceneObjectBase {
12016
12055
  this._autoRefreshBlocked = false;
12017
12056
  this.onRefresh = () => {
12018
12057
  const queryController = sceneGraph.getQueryController(this);
12019
- queryController == null ? void 0 : queryController.startProfile("SceneRefreshPicker");
12058
+ queryController == null ? void 0 : queryController.startProfile(REFRESH_INTERACTION);
12020
12059
  if (queryController == null ? void 0 : queryController.state.isRunning) {
12021
12060
  queryController.cancelAll();
12022
12061
  return;
@@ -12073,7 +12112,7 @@ class SceneRefreshPicker extends SceneObjectBase {
12073
12112
  this._intervalTimer = setInterval(() => {
12074
12113
  if (this.isTabVisible()) {
12075
12114
  const queryController = sceneGraph.getQueryController(this);
12076
- queryController == null ? void 0 : queryController.startProfile("SceneRefreshPicker");
12115
+ queryController == null ? void 0 : queryController.startProfile(REFRESH_INTERACTION);
12077
12116
  timeRange.onRefresh();
12078
12117
  } else {
12079
12118
  this._autoRefreshBlocked = true;