@c8y/ngx-components 1024.15.16 → 1024.16.10

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.
Files changed (81) hide show
  1. package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs +303 -63
  2. package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs.map +1 -1
  3. package/fesm2022/c8y-ngx-components-ai-agents-html.mjs +9 -0
  4. package/fesm2022/c8y-ngx-components-ai-agents-html.mjs.map +1 -1
  5. package/fesm2022/c8y-ngx-components-ai-agents-scada.mjs +4 -0
  6. package/fesm2022/c8y-ngx-components-ai-agents-scada.mjs.map +1 -1
  7. package/fesm2022/c8y-ngx-components-ai-ai-chat.mjs +394 -52
  8. package/fesm2022/c8y-ngx-components-ai-ai-chat.mjs.map +1 -1
  9. package/fesm2022/c8y-ngx-components-ai.mjs +329 -19
  10. package/fesm2022/c8y-ngx-components-ai.mjs.map +1 -1
  11. package/fesm2022/c8y-ngx-components-bookmarks.mjs +1 -1
  12. package/fesm2022/c8y-ngx-components-bookmarks.mjs.map +1 -1
  13. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +5 -1
  14. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  15. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +96 -77
  16. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  17. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +92 -47
  18. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  19. package/fesm2022/c8y-ngx-components-device-profile.mjs +1 -1
  20. package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
  21. package/fesm2022/c8y-ngx-components-echart.mjs +25 -4
  22. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  23. package/fesm2022/c8y-ngx-components-ecosystem.mjs +1 -1
  24. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  25. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +1 -1
  26. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
  27. package/fesm2022/c8y-ngx-components-register-device.mjs +5 -6
  28. package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
  29. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +1 -1
  30. package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
  31. package/fesm2022/c8y-ngx-components-repository-software.mjs +1 -1
  32. package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
  33. package/fesm2022/c8y-ngx-components-sub-assets.mjs +30 -10
  34. package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
  35. package/fesm2022/c8y-ngx-components-time-context.mjs +13 -9
  36. package/fesm2022/c8y-ngx-components-time-context.mjs.map +1 -1
  37. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +1 -1
  38. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  39. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs +3 -2
  40. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs.map +1 -1
  41. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-table.mjs +4 -6
  42. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-table.mjs.map +1 -1
  43. package/fesm2022/c8y-ngx-components-widgets-implementations-scada.mjs +3 -2
  44. package/fesm2022/c8y-ngx-components-widgets-implementations-scada.mjs.map +1 -1
  45. package/fesm2022/c8y-ngx-components.mjs +122 -24
  46. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  47. package/locales/de.po +147 -16
  48. package/locales/es.po +143 -11
  49. package/locales/fr.po +459 -324
  50. package/locales/ja_JP.po +143 -11
  51. package/locales/ko.po +143 -11
  52. package/locales/locales.pot +136 -10
  53. package/locales/nl.po +143 -11
  54. package/locales/pl.po +143 -11
  55. package/locales/pt_BR.po +143 -11
  56. package/locales/zh_CN.po +143 -11
  57. package/locales/zh_TW.po +143 -11
  58. package/package.json +1 -1
  59. package/types/c8y-ngx-components-ai-agent-chat.d.ts +111 -4
  60. package/types/c8y-ngx-components-ai-agent-chat.d.ts.map +1 -1
  61. package/types/c8y-ngx-components-ai-agents-html.d.ts.map +1 -1
  62. package/types/c8y-ngx-components-ai-agents-scada.d.ts.map +1 -1
  63. package/types/c8y-ngx-components-ai-ai-chat.d.ts +224 -10
  64. package/types/c8y-ngx-components-ai-ai-chat.d.ts.map +1 -1
  65. package/types/c8y-ngx-components-ai.d.ts +176 -6
  66. package/types/c8y-ngx-components-ai.d.ts.map +1 -1
  67. package/types/c8y-ngx-components-context-dashboard.d.ts.map +1 -1
  68. package/types/c8y-ngx-components-datapoint-explorer-view.d.ts +7 -2
  69. package/types/c8y-ngx-components-datapoint-explorer-view.d.ts.map +1 -1
  70. package/types/c8y-ngx-components-datapoint-selector.d.ts +63 -50
  71. package/types/c8y-ngx-components-datapoint-selector.d.ts.map +1 -1
  72. package/types/c8y-ngx-components-echart.d.ts +12 -0
  73. package/types/c8y-ngx-components-echart.d.ts.map +1 -1
  74. package/types/c8y-ngx-components-register-device.d.ts.map +1 -1
  75. package/types/c8y-ngx-components-sub-assets.d.ts +10 -1
  76. package/types/c8y-ngx-components-sub-assets.d.ts.map +1 -1
  77. package/types/c8y-ngx-components-time-context.d.ts +2 -0
  78. package/types/c8y-ngx-components-time-context.d.ts.map +1 -1
  79. package/types/c8y-ngx-components-widgets-implementations-scada.d.ts.map +1 -1
  80. package/types/c8y-ngx-components.d.ts +37 -5
  81. package/types/c8y-ngx-components.d.ts.map +1 -1
@@ -1,6 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, inject, SecurityContext, ViewChild, Input, Component, EventEmitter, Output, DestroyRef } from '@angular/core';
3
3
  import { gettext } from '@c8y/ngx-components/gettext';
4
+ import { isEqual, cloneDeep } from 'lodash-es';
4
5
  import { from, merge, interval, BehaviorSubject, of, lastValueFrom, defer, forkJoin } from 'rxjs';
5
6
  import { mergeMap, map, tap, throttleTime, buffer, switchMap } from 'rxjs/operators';
6
7
  import * as i1$1 from '@c8y/ngx-components';
@@ -2706,12 +2707,24 @@ class ChartsComponent {
2706
2707
  */
2707
2708
  this.duplicateAggregationsDetected = new EventEmitter();
2708
2709
  this.CHART_VIEW_CONTEXT = CHART_VIEW_CONTEXT;
2710
+ /**
2711
+ * Aggregation params are serialized verbatim into the query string, so a missing
2712
+ * `aggregationFunction` would reach the platform as the literal string 'undefined' and get the
2713
+ * whole request rejected. Every site that sends one falls back to 'avg', matching the default
2714
+ * the chart renders with (see `EchartsOptionsService.getSingleSeries`).
2715
+ */
2709
2716
  this.AGGREGATION_INTERVAL_MAP = {
2710
2717
  [aggregationType.MINUTELY]: '1m',
2711
2718
  [aggregationType.HOURLY]: '60m',
2712
2719
  [aggregationType.DAILY]: '1d'
2713
2720
  };
2714
2721
  this.configChangedSubject = new BehaviorSubject(null);
2722
+ /**
2723
+ * Deep copy of the config the last reload ran with; content-identical rebuilds are skipped.
2724
+ * A copy, not a reference: the chart mutates datapoints in place (e.g. backfills `unit`), and a
2725
+ * stored reference would mutate along with the config and always compare as unchanged.
2726
+ */
2727
+ this.lastConfig = null;
2715
2728
  /** Series names hidden by the user via per-function legend toggles; re-applied after each setOption. */
2716
2729
  this.userHiddenSeriesNames = new Set();
2717
2730
  /** DpIds whose per-fn series were stripped to a single series on the last render. */
@@ -2820,6 +2833,8 @@ class ChartsComponent {
2820
2833
  }
2821
2834
  const wasFromZoom = this.isChangeFromZoom;
2822
2835
  this.isChangeFromZoom = false;
2836
+ const configContentChanged = !isEqual(this.config, this.lastConfig);
2837
+ this.lastConfig = cloneDeep(this.config);
2823
2838
  if (wasFromZoom) {
2824
2839
  const currentRange = this.getTimeRange();
2825
2840
  const isWithinLoadedRange = this.loadedTimeRange &&
@@ -2854,6 +2869,12 @@ class ChartsComponent {
2854
2869
  }
2855
2870
  }
2856
2871
  else {
2872
+ // Parent forms rebuild the config object on every valueChanges emission;
2873
+ // a content-identical rebuild must not restart the fetch pipeline.
2874
+ if (!configContentChanged) {
2875
+ this.mediator.isSliderZoomUpdate.set(false);
2876
+ return;
2877
+ }
2857
2878
  // Only reset initialTimeRange if the change is NOT from a slider zoom on another widget
2858
2879
  if (!this.mediator.isSliderZoomUpdate()) {
2859
2880
  this.widgetTimeContextDateRangeService.updateInitialTimeRange(null);
@@ -3537,7 +3558,7 @@ class ChartsComponent {
3537
3558
  return {};
3538
3559
  if (this.config.showAdvancedChartOptions) {
3539
3560
  return {
3540
- aggregationFunction: dp.renderType ?? 'avg',
3561
+ aggregationFunction: dp.renderType || 'avg',
3541
3562
  aggregationInterval: interval
3542
3563
  };
3543
3564
  }
@@ -3554,7 +3575,7 @@ class ChartsComponent {
3554
3575
  this.config.aggregation &&
3555
3576
  this.config.showAdvancedChartOptions &&
3556
3577
  dp.renderType !== 'area' && {
3557
- aggregationFunction: dp.renderType,
3578
+ aggregationFunction: dp.renderType || 'avg',
3558
3579
  aggregationInterval: this.AGGREGATION_INTERVAL_MAP[this.config.aggregation]
3559
3580
  })
3560
3581
  })).pipe(map(res => {
@@ -3619,7 +3640,7 @@ class ChartsComponent {
3619
3640
  return {};
3620
3641
  if (this.config.showAdvancedChartOptions) {
3621
3642
  return {
3622
- aggregationFunction: aggregatedDatapoint.renderType ?? 'avg',
3643
+ aggregationFunction: aggregatedDatapoint.renderType || 'avg',
3623
3644
  aggregationInterval: interval
3624
3645
  };
3625
3646
  }
@@ -3638,7 +3659,7 @@ class ChartsComponent {
3638
3659
  (this.config.aggregation || customTimeRange) &&
3639
3660
  this.config.showAdvancedChartOptions &&
3640
3661
  aggregatedDatapoint.renderType !== 'area' && {
3641
- aggregationFunction: aggregatedDatapoint.renderType,
3662
+ aggregationFunction: aggregatedDatapoint.renderType || 'avg',
3642
3663
  aggregationInterval: this.AGGREGATION_INTERVAL_MAP[(customTimeRange ? this.getAggregationTypeForTimeRange() : this.config.aggregation)]
3643
3664
  })
3644
3665
  })).pipe(map(res => {