@grafana/scenes 4.18.0--canary.724.9001989710.0 → 4.18.0--canary.725.9002029358.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.d.ts CHANGED
@@ -549,7 +549,6 @@ interface DataQueryExtended extends DataQuery$1 {
549
549
  declare class SceneQueryRunner extends SceneObjectBase<QueryRunnerState> implements SceneDataProvider {
550
550
  private _querySub?;
551
551
  private _dataLayersSub?;
552
- private _dataLayersMerger;
553
552
  private _timeSub?;
554
553
  private _timeSubRange?;
555
554
  private _containerWidth?;
@@ -1221,7 +1220,19 @@ declare class AnnotationsDataLayer extends SceneDataLayerBase<AnnotationsDataLay
1221
1220
  runLayer(): void;
1222
1221
  private runWithTimeRange;
1223
1222
  protected resolveDataSource(query: AnnotationQuery): Promise<_grafana_data.DataSourceApi<_grafana_data.DataQuery, _grafana_data.DataSourceJsonData, {}>>;
1224
- protected processEvents(query: AnnotationQuery, events: AnnotationQueryResults): PanelData;
1223
+ protected processEvents(query: AnnotationQuery, events: AnnotationQueryResults): {
1224
+ state: LoadingState;
1225
+ series: _grafana_data.DataFrame[];
1226
+ structureRev?: number;
1227
+ annotations?: _grafana_data.DataFrame[];
1228
+ alertState?: _grafana_data.AlertStateInfo;
1229
+ request?: _grafana_data.DataQueryRequest<_grafana_data.DataQuery>;
1230
+ timings?: _grafana_data.DataQueryTimings;
1231
+ errors?: _grafana_data.DataQueryError[];
1232
+ error?: _grafana_data.DataQueryError;
1233
+ timeRange: _grafana_data.TimeRange;
1234
+ traceIds?: string[];
1235
+ };
1225
1236
  }
1226
1237
  declare function AnnotationsDataLayerRenderer({ model }: SceneComponentProps<AnnotationsDataLayer>): React__default.JSX.Element;
1227
1238
 
@@ -1306,7 +1317,6 @@ declare abstract class SceneDataLayerSetBase<T extends SceneDataLayerProviderSta
1306
1317
  * Subject to emit results to.
1307
1318
  */
1308
1319
  private _results;
1309
- private _dataLayersMerger;
1310
1320
  protected subscribeToAllLayers(layers: SceneDataLayerProvider[]): void;
1311
1321
  private _onLayerUpdateReceived;
1312
1322
  getResultsStream(): Observable<SceneDataProviderResult>;
@@ -1350,6 +1360,7 @@ interface SceneDataTransformerState extends SceneDataState {
1350
1360
  declare class SceneDataTransformer extends SceneObjectBase<SceneDataTransformerState> implements SceneDataProvider {
1351
1361
  private _transformSub?;
1352
1362
  private _results;
1363
+ private _prevDataFromSource?;
1353
1364
  /**
1354
1365
  * Scan transformations for variable usage and re-process transforms when a variable values change
1355
1366
  */
@@ -1362,6 +1373,8 @@ declare class SceneDataTransformer extends SceneObjectBase<SceneDataTransformerS
1362
1373
  reprocessTransformations(): void;
1363
1374
  cancelQuery(): void;
1364
1375
  getResultsStream(): ReplaySubject<SceneDataProviderResult>;
1376
+ clone(withState?: Partial<SceneDataTransformerState>): this;
1377
+ private haveAlreadyTransformedData;
1365
1378
  private transform;
1366
1379
  }
1367
1380
 
package/dist/index.js CHANGED
@@ -3745,46 +3745,23 @@ function toSelectableValue({ text, value }) {
3745
3745
  };
3746
3746
  }
3747
3747
 
3748
- class DataLayersMerger {
3749
- constructor() {
3750
- this._resultsMap = /* @__PURE__ */ new Map();
3751
- this._prevLayers = [];
3752
- }
3753
- getMergedStream(layers) {
3754
- if (areDifferentLayers(layers, this._prevLayers)) {
3755
- this._resultsMap = /* @__PURE__ */ new Map();
3756
- this._prevLayers = layers;
3757
- }
3758
- const resultStreams = layers.map((l) => l.getResultsStream());
3759
- const deactivationHandlers = [];
3760
- for (const layer of layers) {
3761
- deactivationHandlers.push(layer.activate());
3762
- }
3763
- return rxjs.merge(resultStreams).pipe(
3764
- rxjs.mergeAll(),
3765
- rxjs.filter((v) => {
3766
- return this._resultsMap.get(v.origin.state.key) !== v;
3767
- }),
3768
- rxjs.map((v) => {
3769
- this._resultsMap.set(v.origin.state.key, v);
3770
- return this._resultsMap.values();
3771
- }),
3772
- rxjs.finalize(() => {
3773
- deactivationHandlers.forEach((handler) => handler());
3774
- })
3775
- );
3776
- }
3777
- }
3778
- function areDifferentLayers(a, b) {
3779
- if (a.length !== b.length) {
3780
- return true;
3781
- }
3782
- for (let i = 0; i < a.length; i++) {
3783
- if (a[i] !== b[i]) {
3784
- return true;
3785
- }
3786
- }
3787
- return false;
3748
+ function mergeMultipleDataLayers(layers) {
3749
+ const resultStreams = layers.map((l) => l.getResultsStream());
3750
+ const resultsMap = /* @__PURE__ */ new Map();
3751
+ const deactivationHandlers = [];
3752
+ for (const layer of layers) {
3753
+ deactivationHandlers.push(layer.activate());
3754
+ }
3755
+ return rxjs.merge(resultStreams).pipe(
3756
+ rxjs.mergeAll(),
3757
+ rxjs.map((v) => {
3758
+ resultsMap.set(v.origin.state.key, v);
3759
+ return resultsMap.values();
3760
+ }),
3761
+ rxjs.finalize(() => {
3762
+ deactivationHandlers.forEach((handler) => handler());
3763
+ })
3764
+ );
3788
3765
  }
3789
3766
 
3790
3767
  var __defProp$w = Object.defineProperty;
@@ -3813,7 +3790,6 @@ function getNextRequestId$1() {
3813
3790
  class SceneQueryRunner extends SceneObjectBase {
3814
3791
  constructor(initialState) {
3815
3792
  super(initialState);
3816
- this._dataLayersMerger = new DataLayersMerger();
3817
3793
  this._variableValueRecorder = new VariableValueRecorder();
3818
3794
  this._results = new rxjs.ReplaySubject(1);
3819
3795
  this._scopedVars = { __sceneObject: { value: this, text: "__sceneObject" } };
@@ -3928,10 +3904,10 @@ class SceneQueryRunner extends SceneObjectBase {
3928
3904
  if (dataLayers.length === 0) {
3929
3905
  return;
3930
3906
  }
3931
- this._dataLayersSub = this._dataLayersMerger.getMergedStream(dataLayers).subscribe(this._onLayersReceived.bind(this));
3907
+ this._dataLayersSub = mergeMultipleDataLayers(dataLayers).subscribe(this._onLayersReceived.bind(this));
3932
3908
  }
3933
3909
  _onLayersReceived(results) {
3934
- var _a, _b, _c, _d, _e;
3910
+ var _a, _b, _c, _d;
3935
3911
  const timeRange = sceneGraph.getTimeRange(this);
3936
3912
  const { dataLayerFilter } = this.state;
3937
3913
  let annotations = [];
@@ -3963,15 +3939,12 @@ class SceneQueryRunner extends SceneObjectBase {
3963
3939
  }
3964
3940
  }
3965
3941
  }
3966
- if (alertState === ((_c = this.state.data) == null ? void 0 : _c.alertState) && allFramesEmpty(annotations) && allFramesEmpty(this._layerAnnotations)) {
3967
- return;
3968
- }
3969
- this._layerAnnotations = annotations;
3970
3942
  const baseStateUpdate = this.state.data ? this.state.data : __spreadProps$k(__spreadValues$w({}, emptyPanelData), { timeRange: timeRange.state.value });
3943
+ this._layerAnnotations = annotations;
3971
3944
  this.setState({
3972
3945
  data: __spreadProps$k(__spreadValues$w({}, baseStateUpdate), {
3973
- annotations: [...(_d = this._resultAnnotations) != null ? _d : [], ...annotations],
3974
- alertState: alertState != null ? alertState : (_e = this.state.data) == null ? void 0 : _e.alertState
3946
+ annotations: [...(_c = this._resultAnnotations) != null ? _c : [], ...annotations],
3947
+ alertState: alertState != null ? alertState : (_d = this.state.data) == null ? void 0 : _d.alertState
3975
3948
  })
3976
3949
  });
3977
3950
  }
@@ -4207,17 +4180,6 @@ function findFirstDatasource(targets) {
4207
4180
  var _a, _b;
4208
4181
  return (_b = (_a = targets.find((t) => t.datasource !== null)) == null ? void 0 : _a.datasource) != null ? _b : void 0;
4209
4182
  }
4210
- function allFramesEmpty(frames) {
4211
- if (!frames) {
4212
- return true;
4213
- }
4214
- for (let i = 0; i < frames.length; i++) {
4215
- if (frames[i].length > 0) {
4216
- return false;
4217
- }
4218
- }
4219
- return true;
4220
- }
4221
4183
 
4222
4184
  function isVariableValueEqual(a, b) {
4223
4185
  if (a === b) {
@@ -5286,7 +5248,7 @@ class SceneDataLayerBase extends SceneObjectBase {
5286
5248
  super(__spreadValues$r({
5287
5249
  isEnabled: true
5288
5250
  }, initialState));
5289
- this._results = new rxjs.ReplaySubject(1);
5251
+ this._results = new rxjs.ReplaySubject();
5290
5252
  this.isDataLayer = true;
5291
5253
  this._variableValueRecorder = new VariableValueRecorder();
5292
5254
  this._variableDependency = new VariableDependencyConfig(this, {
@@ -6010,12 +5972,11 @@ class SceneDataLayerSetBase extends SceneObjectBase {
6010
5972
  constructor() {
6011
5973
  super(...arguments);
6012
5974
  this.isDataLayer = true;
6013
- this._results = new rxjs.ReplaySubject(1);
6014
- this._dataLayersMerger = new DataLayersMerger();
5975
+ this._results = new rxjs.ReplaySubject();
6015
5976
  }
6016
5977
  subscribeToAllLayers(layers) {
6017
5978
  if (layers.length > 0) {
6018
- this.querySub = this._dataLayersMerger.getMergedStream(layers).subscribe(this._onLayerUpdateReceived.bind(this));
5979
+ this.querySub = mergeMultipleDataLayers(layers).subscribe(this._onLayerUpdateReceived.bind(this));
6019
5980
  } else {
6020
5981
  this._results.next({ origin: this, data: emptyPanelData });
6021
5982
  this.setStateHelper({ data: emptyPanelData });
@@ -6147,7 +6108,7 @@ class SceneDataTransformer extends SceneObjectBase {
6147
6108
  return true;
6148
6109
  }
6149
6110
  reprocessTransformations() {
6150
- this.transform(this.getSourceData().state.data);
6111
+ this.transform(this.getSourceData().state.data, true);
6151
6112
  }
6152
6113
  cancelQuery() {
6153
6114
  var _a, _b;
@@ -6156,8 +6117,42 @@ class SceneDataTransformer extends SceneObjectBase {
6156
6117
  getResultsStream() {
6157
6118
  return this._results;
6158
6119
  }
6159
- transform(data$1) {
6120
+ clone(withState) {
6121
+ const clone = super.clone(withState);
6122
+ if (this._prevDataFromSource) {
6123
+ clone["_prevDataFromSource"] = this._prevDataFromSource;
6124
+ }
6125
+ return clone;
6126
+ }
6127
+ haveAlreadyTransformedData(data) {
6128
+ if (!this._prevDataFromSource) {
6129
+ return false;
6130
+ }
6131
+ if (data === this._prevDataFromSource) {
6132
+ return true;
6133
+ }
6134
+ const { series, annotations } = this._prevDataFromSource;
6135
+ if (data.series === series && data.annotations === annotations) {
6136
+ if (this.state.data && data.state !== this.state.data.state) {
6137
+ this.setState({ data: __spreadProps$a(__spreadValues$k({}, this.state.data), { state: data.state }) });
6138
+ }
6139
+ return true;
6140
+ }
6141
+ return false;
6142
+ }
6143
+ transform(data$1, force = false) {
6160
6144
  var _a;
6145
+ if (this.state.transformations.length === 0 || !data$1) {
6146
+ this._prevDataFromSource = data$1;
6147
+ this.setState({ data: data$1 });
6148
+ if (data$1) {
6149
+ this._results.next({ origin: this, data: data$1 });
6150
+ }
6151
+ return;
6152
+ }
6153
+ if (!force && this.haveAlreadyTransformedData(data$1)) {
6154
+ return;
6155
+ }
6161
6156
  const seriesTransformations = this.state.transformations.filter((transformation) => {
6162
6157
  if ("options" in transformation || "topic" in transformation) {
6163
6158
  return transformation.topic == null || transformation.topic === data.DataTopic.Series;
@@ -6170,13 +6165,6 @@ class SceneDataTransformer extends SceneObjectBase {
6170
6165
  }
6171
6166
  return false;
6172
6167
  }).map((transformation) => "operator" in transformation ? transformation.operator : transformation);
6173
- if (this.state.transformations.length === 0 || !data$1) {
6174
- this.setState({ data: data$1 });
6175
- if (data$1) {
6176
- this._results.next({ origin: this, data: data$1 });
6177
- }
6178
- return;
6179
- }
6180
6168
  if (this._transformSub) {
6181
6169
  this._transformSub.unsubscribe();
6182
6170
  }
@@ -6211,9 +6199,10 @@ class SceneDataTransformer extends SceneObjectBase {
6211
6199
  });
6212
6200
  return rxjs.of(result);
6213
6201
  })
6214
- ).subscribe((data2) => {
6215
- this.setState({ data: data2 });
6216
- this._results.next({ origin: this, data: data2 });
6202
+ ).subscribe((transformedData) => {
6203
+ this.setState({ data: transformedData });
6204
+ this._results.next({ origin: this, data: transformedData });
6205
+ this._prevDataFromSource = data$1;
6217
6206
  });
6218
6207
  }
6219
6208
  }