@c8y/ngx-components 1023.14.131 → 1023.14.135

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/echart/index.d.ts CHANGED
@@ -264,6 +264,7 @@ declare class ChartsComponent implements OnChanges, OnInit, OnDestroy {
264
264
  chart: ElementRef;
265
265
  CHART_VIEW_CONTEXT: typeof CHART_VIEW_CONTEXT;
266
266
  private configChangedSubject;
267
+ private destroyRef;
267
268
  private readonly measurementService;
268
269
  private readonly echartsOptionsService;
269
270
  private readonly chartRealtimeService;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sources":["../../echart/models/datapoints-graph-widget.model.ts","../../echart/models/chart.model.ts","../../echart/models/svg-icons.model.ts","../../echart/charts.component.ts","../../echart/services/chart-alarms.service.ts","../../echart/services/chart-events.service.ts","../../echart/services/chart-helpers.service.ts","../../echart/select-aggregated-datapoint/select-aggregated-datapoint.component.ts"],"sourcesContent":[null,null,null,null,null,null,null,null],"names":[],"mappings":";;;;;;;;;;;;;;AAmBM;;;;AAKA;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;AAOA;;AAEA;AACA;AACA;AACA;;;AAGA;;;;;;;;;AAUI;;;;;;;;;;AAUJ;;AAGI;;AAEJ;AACA;;AAGI;;;AAIN;;AAEG;;AAGG;AAIN;AACE;AACA;AACD;AAED;AACM;;AAEL;AAED;;;;AAIM;;;;;;;AAQL;AAED;;;;;AAUE;;;;;AAGD;;AAGC;;AAEA;;AAEE;;AAEF;;;AACD;;;;;;;AAQC;AACA;AACD;AAEK;AACA;AAEA;AAEA;AAEN;;;;AAKA;;;;;;;;;;;;;AAcM;AACA;AAEA;;;;AAKA;;;;;;;;;;;AAYL;AAED;;;;;;;;AAUE;AACA;AACD;;AC9MD;;;;;;AAMG;AACH;AACE;;;;AAIA;;;AACD;;;AAIA;;;AAIA;AAEK;AACA;AACJ;AACE;AACD;AACF;;AAGC;AACA;AACD;AAED;AACE;AACA;AACA;AACD;;AC3CD;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD;AAED;;;;;;;;;;;ACwDA;AA4BE;;AAEA;;;;;;;;AAQA;;;;;;AAMK;AACK;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEV;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AAoDA;;;;;AAqKuB;;;AAA4B;AAiDnD;AAOA;AAIA;AAwBA;AA6BA;AAWA;;;;AAIG;AACH;AAcA;;;;;AAKG;AACH;AAgCA;AAeA;AA0BA;;AA8DA;;;AA8MA;AA0DA;AA0CA;AAkBA;AAWA;AAYA;;;AA6BD;;AC5+BD;AAEc;AAAQ;AAEpB;;;;;AAKG;AACG;;;AAqCP;;AC/CD;AAEc;AAAQ;AAEpB;;;;;AAKG;AACG;;;AAuBP;;AChCD;AAEE;;;;AAIG;;;;;;;;;;;AAcH;AAcA;;;AAGD;;ACtBD;;AAqBW;AACC;AAEV;;AAGA;;;AAiBA;;;AAgBD;;;"}
1
+ {"version":3,"file":"index.d.ts","sources":["../../echart/models/datapoints-graph-widget.model.ts","../../echart/models/chart.model.ts","../../echart/models/svg-icons.model.ts","../../echart/charts.component.ts","../../echart/services/chart-alarms.service.ts","../../echart/services/chart-events.service.ts","../../echart/services/chart-helpers.service.ts","../../echart/select-aggregated-datapoint/select-aggregated-datapoint.component.ts"],"sourcesContent":[null,null,null,null,null,null,null,null],"names":[],"mappings":";;;;;;;;;;;;;;AAmBM;;;;AAKA;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;AAOA;;AAEA;AACA;AACA;AACA;;;AAGA;;;;;;;;;AAUI;;;;;;;;;;AAUJ;;AAGI;;AAEJ;AACA;;AAGI;;;AAIN;;AAEG;;AAGG;AAIN;AACE;AACA;AACD;AAED;AACM;;AAEL;AAED;;;;AAIM;;;;;;;AAQL;AAED;;;;;AAUE;;;;;AAGD;;AAGC;;AAEA;;AAEE;;AAEF;;;AACD;;;;;;;AAQC;AACA;AACD;AAEK;AACA;AAEA;AAEA;AAEN;;;;AAKA;;;;;;;;;;;;;AAcM;AACA;AAEA;;;;AAKA;;;;;;;;;;;AAYL;AAED;;;;;;;;AAUE;AACA;AACD;;AC9MD;;;;;;AAMG;AACH;AACE;;;;AAIA;;;AACD;;;AAIA;;;AAIA;AAEK;AACA;AACJ;AACE;AACD;AACF;;AAGC;AACA;AACD;AAED;AACE;AACA;AACA;AACD;;AC3CD;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD;AAED;;;;;;;;;;;AC0DA;AA4BE;;AAEA;;;;;;;;AAQA;;;;;;AAMK;AACK;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEV;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AAsDA;;;;;AAoKuB;;;AAA4B;AAiDnD;AAOA;AAIA;AAwBA;AA6BA;AAWA;;;;AAIG;AACH;AAcA;;;;;AAKG;AACH;AAgCA;AAeA;AA0BA;;AA8DA;;;AA8MA;AA0DA;AA0CA;AAkBA;AAWA;AAYA;;;AA6BD;;ACh/BD;AAEc;AAAQ;AAEpB;;;;;AAKG;AACG;;;AAqCP;;AC/CD;AAEc;AAAQ;AAEpB;;;;;AAKG;AACG;;;AAuBP;;AChCD;AAEE;;;;AAIG;;;;;;;;;;;AAcH;AAcA;;;AAGD;;ACtBD;;AAqBW;AACC;AAEV;;AAGA;;;AAiBA;;;AAgBD;;;"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, inject, SecurityContext, ViewChild, Input, Component, EventEmitter, Output } from '@angular/core';
2
+ import { Injectable, inject, SecurityContext, ViewChild, Input, Component, EventEmitter, Output, DestroyRef } from '@angular/core';
3
3
  import { gettext } from '@c8y/ngx-components/gettext';
4
4
  import { from, merge, interval, BehaviorSubject, of, lastValueFrom, defer, forkJoin } from 'rxjs';
5
5
  import { mergeMap, map, tap, throttleTime, buffer, switchMap } from 'rxjs/operators';
@@ -25,6 +25,7 @@ import * as i2 from 'ngx-bootstrap/dropdown';
25
25
  import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
26
26
  import * as i3 from '@angular/cdk/a11y';
27
27
  import { A11yModule } from '@angular/cdk/a11y';
28
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
28
29
 
29
30
  var DATE_SELECTION_EXTENDED;
30
31
  (function (DATE_SELECTION_EXTENDED) {
@@ -198,7 +199,8 @@ class YAxisService {
198
199
  }
199
200
  return new Intl.NumberFormat(this.intlNumberFormatCompliantLocale, {
200
201
  notation: 'compact',
201
- compactDisplay: 'short'
202
+ compactDisplay: 'short',
203
+ maximumFractionDigits: 3
202
204
  }).format(val);
203
205
  }
204
206
  },
@@ -1685,13 +1687,23 @@ class ChartRealtimeService {
1685
1687
  m.time,
1686
1688
  m[datapoint.fragment][datapoint.series].value
1687
1689
  ]);
1690
+ newValues.sort(([a], [b]) => new Date(a).valueOf() - new Date(b).valueOf());
1688
1691
  const datapointId = datapoint.__target?.id + datapoint.fragment + datapoint.series;
1689
1692
  const seriesMatchingDatapoint = allDataSeries.find(s => s['datapointId'] === datapointId);
1690
1693
  if (!seriesMatchingDatapoint) {
1691
1694
  return;
1692
1695
  }
1693
1696
  const seriesDataToUpdate = seriesMatchingDatapoint['data'];
1694
- seriesDataToUpdate.push(...newValues);
1697
+ let lastExistingTimestamp = seriesDataToUpdate.length
1698
+ ? new Date(seriesDataToUpdate[seriesDataToUpdate.length - 1][0]).valueOf()
1699
+ : -Infinity;
1700
+ for (const [timestamp, value] of newValues) {
1701
+ const ts = new Date(timestamp).valueOf();
1702
+ if (ts > lastExistingTimestamp) {
1703
+ seriesDataToUpdate.push([timestamp, value]);
1704
+ lastExistingTimestamp = ts;
1705
+ }
1706
+ }
1695
1707
  seriesMatchingDatapoint['data'] = this.removeValuesBeforeTimeRange(seriesMatchingDatapoint);
1696
1708
  this.checkForValuesAfterTimeRange(seriesMatchingDatapoint['data'], datapoint, datapointOutOfSyncCallback);
1697
1709
  });
@@ -2044,6 +2056,7 @@ class ChartsComponent {
2044
2056
  this.updateAggregatedSliderDatapoint = new EventEmitter();
2045
2057
  this.CHART_VIEW_CONTEXT = CHART_VIEW_CONTEXT;
2046
2058
  this.configChangedSubject = new BehaviorSubject(null);
2059
+ this.destroyRef = inject(DestroyRef);
2047
2060
  this.measurementService = inject(MeasurementService);
2048
2061
  this.echartsOptionsService = inject(EchartsOptionsService);
2049
2062
  this.chartRealtimeService = inject(ChartRealtimeService);
@@ -2085,7 +2098,9 @@ class ChartsComponent {
2085
2098
  this.echartsInstance.setOption(v, true, true);
2086
2099
  }
2087
2100
  }));
2088
- this.widgetTimeContextDateRangeService.fullReload$.subscribe(() => {
2101
+ this.widgetTimeContextDateRangeService.fullReload$
2102
+ .pipe(takeUntilDestroyed(this.destroyRef))
2103
+ .subscribe(() => {
2089
2104
  if (!this.isSliderDragging) {
2090
2105
  this.configChangedSubject.next();
2091
2106
  }
@@ -2133,7 +2148,6 @@ class ChartsComponent {
2133
2148
  }
2134
2149
  }
2135
2150
  ngOnDestroy() {
2136
- this.widgetTimeContextDateRangeService.fullReload$.unsubscribe();
2137
2151
  this.chartRealtimeService.stopRealtime();
2138
2152
  }
2139
2153
  onChartInit(ec) {