@c8y/ngx-components 1024.19.3 → 1024.19.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 (74) hide show
  1. package/fesm2022/c8y-ngx-components-ai-agents-html.mjs +0 -9
  2. package/fesm2022/c8y-ngx-components-ai-agents-html.mjs.map +1 -1
  3. package/fesm2022/c8y-ngx-components-ai-agents-scada.mjs +0 -4
  4. package/fesm2022/c8y-ngx-components-ai-agents-scada.mjs.map +1 -1
  5. package/fesm2022/c8y-ngx-components-ai.mjs +10 -10
  6. package/fesm2022/c8y-ngx-components-ai.mjs.map +1 -1
  7. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +13 -9
  8. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
  9. package/fesm2022/c8y-ngx-components-alarms.mjs +2 -2
  10. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  11. package/fesm2022/c8y-ngx-components-asset-properties.mjs +4 -3
  12. package/fesm2022/c8y-ngx-components-asset-properties.mjs.map +1 -1
  13. package/fesm2022/{c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-CG8k844T.mjs → c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-1WsTSnO_.mjs} +9 -5
  14. package/fesm2022/c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-1WsTSnO_.mjs.map +1 -0
  15. package/fesm2022/{c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-CTXM7Dkc.mjs → c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-C3KZGqlc.mjs} +2 -2
  16. package/fesm2022/{c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-CTXM7Dkc.mjs.map → c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-C3KZGqlc.mjs.map} +1 -1
  17. package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-Da3QVvuf.mjs → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-DOmwNU6m.mjs} +2 -2
  18. package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-Da3QVvuf.mjs.map → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-DOmwNU6m.mjs.map} +1 -1
  19. package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs +1 -1
  20. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +24 -5
  21. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  22. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +2 -2
  23. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  24. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +2 -2
  25. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs.map +1 -1
  26. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +12 -5
  27. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs.map +1 -1
  28. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +41 -12
  29. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  30. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +10 -6
  31. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
  32. package/fesm2022/c8y-ngx-components-echart.mjs +39 -25
  33. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  34. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +21 -9
  35. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  36. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-list.mjs +7 -4
  37. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-list.mjs.map +1 -1
  38. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +9 -5
  39. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  40. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +6 -2
  41. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
  42. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs +4 -3
  43. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs.map +1 -1
  44. package/fesm2022/c8y-ngx-components-widgets-implementations-pie-chart.mjs +3 -3
  45. package/fesm2022/c8y-ngx-components-widgets-implementations-pie-chart.mjs.map +1 -1
  46. package/fesm2022/c8y-ngx-components.mjs +158 -23
  47. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  48. package/package.json +1 -1
  49. package/types/c8y-ngx-components-ai-agents-html.d.ts.map +1 -1
  50. package/types/c8y-ngx-components-ai-agents-scada.d.ts.map +1 -1
  51. package/types/c8y-ngx-components-ai.d.ts +1 -1
  52. package/types/c8y-ngx-components-ai.d.ts.map +1 -1
  53. package/types/c8y-ngx-components-alarm-event-selector.d.ts.map +1 -1
  54. package/types/c8y-ngx-components-asset-properties.d.ts +0 -1
  55. package/types/c8y-ngx-components-asset-properties.d.ts.map +1 -1
  56. package/types/c8y-ngx-components-context-dashboard.d.ts +5 -0
  57. package/types/c8y-ngx-components-context-dashboard.d.ts.map +1 -1
  58. package/types/c8y-ngx-components-datapoint-library-list.d.ts.map +1 -1
  59. package/types/c8y-ngx-components-datapoint-selector.d.ts +13 -3
  60. package/types/c8y-ngx-components-datapoint-selector.d.ts.map +1 -1
  61. package/types/c8y-ngx-components-datapoints-export-selector.d.ts +2 -0
  62. package/types/c8y-ngx-components-datapoints-export-selector.d.ts.map +1 -1
  63. package/types/c8y-ngx-components-echart.d.ts +1 -0
  64. package/types/c8y-ngx-components-echart.d.ts.map +1 -1
  65. package/types/c8y-ngx-components-widgets-implementations-datapoints-graph.d.ts +7 -0
  66. package/types/c8y-ngx-components-widgets-implementations-datapoints-graph.d.ts.map +1 -1
  67. package/types/c8y-ngx-components-widgets-implementations-datapoints-list.d.ts.map +1 -1
  68. package/types/c8y-ngx-components-widgets-implementations-datapoints-table.d.ts.map +1 -1
  69. package/types/c8y-ngx-components-widgets-implementations-info-gauge.d.ts.map +1 -1
  70. package/types/c8y-ngx-components-widgets-implementations-kpi.d.ts.map +1 -1
  71. package/types/c8y-ngx-components-widgets-implementations-pie-chart.d.ts.map +1 -1
  72. package/types/c8y-ngx-components.d.ts +110 -4
  73. package/types/c8y-ngx-components.d.ts.map +1 -1
  74. package/fesm2022/c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-CG8k844T.mjs.map +0 -1
@@ -5,7 +5,7 @@ import { isEqual, cloneDeep } from 'lodash-es';
5
5
  import { from, merge, interval, BehaviorSubject, of, lastValueFrom, defer, forkJoin } from 'rxjs';
6
6
  import { mergeMap, map, tap, throttleTime, buffer, switchMap } from 'rxjs/operators';
7
7
  import * as i1$1 from '@c8y/ngx-components';
8
- import { CommonModule, FormsModule, IconDirective, C8yTranslatePipe, WidgetTimeContextMediatorService, WidgetTimeContextDateRangeService, ThemeSwitcherService, DismissAlertStrategy, DynamicComponentAlert, CoreModule, MeasurementRealtimeService, AlarmRealtimeService, EventRealtimeService } from '@c8y/ngx-components';
8
+ import { translateDatapointUnit, translateDatapointLabel, CommonModule, FormsModule, IconDirective, C8yTranslatePipe, DatapointLabelPipe, WidgetTimeContextMediatorService, WidgetTimeContextDateRangeService, ThemeSwitcherService, DismissAlertStrategy, DynamicComponentAlert, CoreModule, MeasurementRealtimeService, AlarmRealtimeService, EventRealtimeService } from '@c8y/ngx-components';
9
9
  import chroma from 'chroma-js';
10
10
  import * as echarts from 'echarts';
11
11
  import * as i1 from '@ngx-translate/core';
@@ -17,7 +17,7 @@ import * as i4 from '@c8y/ngx-components/alarms';
17
17
  import { AlarmsModule, AlarmSeverityToIconPipe, AlarmSeverityToLabelPipe } from '@c8y/ngx-components/alarms';
18
18
  import { INTERVALS } from '@c8y/ngx-components/interval-picker';
19
19
  import * as i1$2 from '@angular/common';
20
- import { NgIf, NgForOf, CommonModule as CommonModule$1 } from '@angular/common';
20
+ import { CommonModule as CommonModule$1 } from '@angular/common';
21
21
  import * as i2$1 from 'ngx-echarts';
22
22
  import { NgxEchartsModule, NGX_ECHARTS_CONFIG } from 'ngx-echarts';
23
23
  import { TooltipModule } from 'ngx-bootstrap/tooltip';
@@ -120,7 +120,7 @@ class YAxisService {
120
120
  if (YAxisOptions.forceMergeDatapoints) {
121
121
  return {
122
122
  name: Array.from(datapointsWithValues)
123
- .map((dp, index) => `{${index}|${dp.unit}}`)
123
+ .map((dp, index) => `{${index}|${translateDatapointUnit(dp, this.translate)}}`)
124
124
  .join(' /'),
125
125
  nameLocation: 'middle',
126
126
  nameTruncate: {
@@ -295,9 +295,11 @@ class YAxisService {
295
295
  return '';
296
296
  }
297
297
  if (!options.mergeMatchingDatapoints || !isFirstOccurrence) {
298
- return `${dp.label} [${dp.unit}]`;
298
+ return `${translateDatapointLabel(dp, this.translate)} [${translateDatapointUnit(dp, this.translate)}]`;
299
299
  }
300
- return uniqueUnitDps.map((dp, index) => `{${index}|${dp.unit}}`).join(' / ');
300
+ return uniqueUnitDps
301
+ .map((dp, index) => `{${index}|${translateDatapointUnit(dp, this.translate)}}`)
302
+ .join(' / ');
301
303
  }
302
304
  getDecimalPlaces(num) {
303
305
  const numStr = num.toString();
@@ -412,6 +414,7 @@ class ChartTypesService {
412
414
  color: color
413
415
  },
414
416
  emphasis: {
417
+ disabled: true,
415
418
  scale: 1.2,
416
419
  itemStyle: {
417
420
  color: color
@@ -1629,6 +1632,15 @@ class EchartsOptionsService {
1629
1632
  }
1630
1633
  }, []);
1631
1634
  }
1635
+ /**
1636
+ * Builds the display name of a datapoint. Passing the whole datapoint lets `translateDatapointLabel`
1637
+ * apply its `fragment → series` fallback, so an unlabeled datapoint still gets an informative
1638
+ * name. `DatapointsGraphWidgetViewComponent` derives the same string the same way, since
1639
+ * `toggleSeriesByName` matches series on exact string equality.
1640
+ */
1641
+ getTranslatedLabel(dp) {
1642
+ return translateDatapointLabel(dp, this.translate);
1643
+ }
1632
1644
  getSingleSeries(dp, renderType, idx, isMinMaxChart = false, displayOptions, seriesType = '', multiRenderTypeLabel) {
1633
1645
  const datapointId = dp.__target?.id + dp.fragment + dp.series;
1634
1646
  const isLine = dp.lineType === 'line' ||
@@ -1654,15 +1666,17 @@ class EchartsOptionsService {
1654
1666
  const displayType = isMinMaxChart && renderType === 'min' ? 'min — max' : effectiveLabel;
1655
1667
  return {
1656
1668
  datapointId,
1657
- datapointUnit: renderType !== 'count' ? dp.unit : '',
1669
+ datapointUnit: renderType !== 'count' ? translateDatapointUnit(dp, this.translate) : '',
1658
1670
  // 'id' property is needed as 'seriesId' in tooltip formatter
1659
1671
  id: isMinMaxChart
1660
1672
  ? `${datapointId}/${renderType}${seriesType}`
1661
1673
  : `${datapointId}${seriesType}${renderTypeSuffix}`,
1662
1674
  name: displayType
1663
- ? `[${displayType}] ${dp.label} (${dp.__target?.['name']})`
1664
- : `${dp.label} (${dp.__target?.['name']})`,
1665
- datapointLabel: displayType ? `[${displayType}] ${dp.label || ''}` : dp.label || '',
1675
+ ? `[${displayType}] ${this.getTranslatedLabel(dp)} (${dp.__target?.['name']})`
1676
+ : `${this.getTranslatedLabel(dp)} (${dp.__target?.['name']})`,
1677
+ datapointLabel: displayType
1678
+ ? `[${displayType}] ${this.getTranslatedLabel(dp)}`
1679
+ : this.getTranslatedLabel(dp),
1666
1680
  data,
1667
1681
  ...(displayOptions.forceMergeDatapoints ? {} : { yAxisIndex: idx }),
1668
1682
  ...this.chartTypesService.getSeriesOptions(dpForSeries, isMinMaxChart, renderType),
@@ -1713,7 +1727,7 @@ class EchartsOptionsService {
1713
1727
  datapointId,
1714
1728
  datapointUnit: '',
1715
1729
  id: `${datapointId}/band-max`,
1716
- name: `[band-max] ${dp.label} (${dp.__target?.['name']})`,
1730
+ name: `[band-max] ${this.getTranslatedLabel(dp)} (${dp.__target?.['name']})`,
1717
1731
  datapointLabel: '',
1718
1732
  typeOfSeries: 'fake',
1719
1733
  type: 'line',
@@ -1729,10 +1743,10 @@ class EchartsOptionsService {
1729
1743
  // a negative diff on a positive sum (or vice versa), leaving it at its raw value.
1730
1744
  const bandMinSeries = {
1731
1745
  datapointId,
1732
- datapointUnit: dp.unit || '',
1746
+ datapointUnit: translateDatapointUnit(dp, this.translate),
1733
1747
  id: `${datapointId}/band-area`,
1734
- name: `[band] ${dp.label} (${dp.__target?.['name']})`,
1735
- datapointLabel: `[band] ${dp.label || ''}`,
1748
+ name: `[band] ${this.getTranslatedLabel(dp)} (${dp.__target?.['name']})`,
1749
+ datapointLabel: `[band] ${this.getTranslatedLabel(dp)}`,
1736
1750
  typeOfSeries: 'fake',
1737
1751
  type: 'line',
1738
1752
  stack: stackId,
@@ -1747,10 +1761,10 @@ class EchartsOptionsService {
1747
1761
  // Visible max line — not stacked, drawn at actual maxVal.
1748
1762
  const maxSeries = {
1749
1763
  datapointId,
1750
- datapointUnit: dp.unit || '',
1764
+ datapointUnit: translateDatapointUnit(dp, this.translate),
1751
1765
  id: `${datapointId}/max`,
1752
- name: `[max] ${dp.label} (${dp.__target?.['name']})`,
1753
- datapointLabel: `[max] ${dp.label || ''}`,
1766
+ name: `[max] ${this.getTranslatedLabel(dp)} (${dp.__target?.['name']})`,
1767
+ datapointLabel: `[max] ${this.getTranslatedLabel(dp)}`,
1754
1768
  data: maxData,
1755
1769
  ...this.chartTypesService.getSeriesOptions({ ...dp, color: maxColor }, true, 'max'),
1756
1770
  ...yAxisIndex
@@ -1758,10 +1772,10 @@ class EchartsOptionsService {
1758
1772
  // Visible min line — not stacked, drawn at actual minVal. Tooltip shows combined [min — max].
1759
1773
  const minSeries = {
1760
1774
  datapointId,
1761
- datapointUnit: dp.unit || '',
1775
+ datapointUnit: translateDatapointUnit(dp, this.translate),
1762
1776
  id: `${datapointId}/min`,
1763
- name: `[min — max] ${dp.label} (${dp.__target?.['name']})`,
1764
- datapointLabel: `[min — max] ${dp.label || ''}`,
1777
+ name: `[min — max] ${this.getTranslatedLabel(dp)} (${dp.__target?.['name']})`,
1778
+ datapointLabel: `[min — max] ${this.getTranslatedLabel(dp)}`,
1765
1779
  tooltipColor: bandColor,
1766
1780
  data: minData,
1767
1781
  ...this.chartTypesService.getSeriesOptions({ ...dp, color: minColor }, true, 'min'),
@@ -2624,6 +2638,7 @@ class SelectAggregatedDatapointComponent {
2624
2638
  this.value = null;
2625
2639
  this.valueChange = new EventEmitter();
2626
2640
  this.chartHelpersService = inject(ChartHelpersService);
2641
+ this.translate = inject(TranslateService);
2627
2642
  this.selectedDatapointLabel = gettext('Select data point');
2628
2643
  this.selectedDatapointColor = '';
2629
2644
  }
@@ -2646,15 +2661,15 @@ class SelectAggregatedDatapointComponent {
2646
2661
  }
2647
2662
  const found = this.chartHelpersService.findMatchingDatapoint(this.activeDatapoints, this.value);
2648
2663
  if (this.value && !found) {
2649
- this.selectedDatapointLabel = this.value.label || '';
2664
+ this.selectedDatapointLabel = translateDatapointLabel(this.value, this.translate);
2650
2665
  this.selectedDatapointColor = this.value.color || '';
2651
2666
  return;
2652
2667
  }
2653
- this.selectedDatapointLabel = found?.label || '';
2668
+ this.selectedDatapointLabel = translateDatapointLabel(found, this.translate);
2654
2669
  this.selectedDatapointColor = found?.color || '';
2655
2670
  }
2656
2671
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: SelectAggregatedDatapointComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2657
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.19", type: SelectAggregatedDatapointComponent, isStandalone: true, selector: "c8y-select-aggregated-datapoint", inputs: { activeDatapoints: "activeDatapoints", value: "value" }, outputs: { valueChange: "valueChange" }, host: { classAttribute: "d-contents" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"dropdown dropup\"\n dropdown\n #datapointDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"datapointDropdown.isOpen\"\n *ngIf=\"activeDatapoints?.length > 0\"\n>\n <ng-template #selectedDatapoint>\n <div class=\"text-left\">\n <strong>{{ selectedDatapointLabel }}</strong>\n <br />\n {{ 'Click to change' | translate }}\n </div>\n </ng-template>\n <button\n class=\"btn btn-default d-flex a-i-center dropdown-toggle c8y-dropdown\"\n title=\"{{'Select a data point to view its aggregated values in the time slider.' | translate }}\"\n type=\"button\"\n dropdownToggle\n >\n <span\n [style.background-color]=\"selectedDatapointColor\"\n style=\"display: inline-block; width: 16px; height: 16px; border-radius: 50%\"\n ></span>\n <span class=\"caret\"></span>\n </button>\n <ul\n class=\"dropdown-menu dropdown-menu-right\"\n *dropdownMenu\n >\n <li *ngFor=\"let datapoint of activeDatapoints\">\n <button\n class=\"p-r-8\"\n type=\"button\"\n (click)=\"changeDatapointSelection(datapoint)\"\n >\n <span\n class=\"d-inline-block m-r-4\"\n [style.background-color]=\"datapoint?.color\"\n style=\"width: 16px; height: 16px; border-radius: 50%\"\n ></span>\n <span class=\"text-truncate\" style=\"max-width:220px!important\" title=\"{{ datapoint?.label || `${datapoint?.fragment}-${datapoint?.series}` }}\">\n {{ datapoint?.label || `${datapoint?.fragment}-${datapoint?.series}` }}\n </span>\n <span\n class=\"m-l-auto flex-no-shrink\"\n *ngIf=\"\n datapoint.__target.id === value?.__target.id &&\n datapoint.fragment === value?.fragment &&\n datapoint.series === value?.series\n \"\n >\n <i\n class=\"text-success h4\"\n [c8yIcon]=\"'check'\"\n ></i>\n </span>\n </button>\n </li>\n </ul>\n</div>\n<button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Select a data point to view its aggregated values in the time slider.' | translate\n }}\"\n placement=\"left\"\n triggers=\"focus\"\n container=\"body\"\n></button>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i1$4.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: BsDropdownModule }, { kind: "directive", type: i2.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i2.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i2.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
2672
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: SelectAggregatedDatapointComponent, isStandalone: true, selector: "c8y-select-aggregated-datapoint", inputs: { activeDatapoints: "activeDatapoints", value: "value" }, outputs: { valueChange: "valueChange" }, host: { classAttribute: "d-contents" }, usesOnChanges: true, ngImport: i0, template: "@if (activeDatapoints?.length > 0) {\n <div\n class=\"dropdown dropup\"\n dropdown\n #datapointDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"datapointDropdown.isOpen\"\n >\n <ng-template #selectedDatapoint>\n <div class=\"text-left\">\n <strong>{{ selectedDatapointLabel }}</strong>\n <br />\n {{ 'Click to change' | translate }}\n </div>\n </ng-template>\n <button\n class=\"btn btn-default d-flex a-i-center dropdown-toggle c8y-dropdown\"\n title=\"{{\n 'Select a data point to view its aggregated values in the time slider.' | translate\n }}\"\n type=\"button\"\n dropdownToggle\n >\n <span\n [style.background-color]=\"selectedDatapointColor\"\n style=\"display: inline-block; width: 16px; height: 16px; border-radius: 50%\"\n ></span>\n <span class=\"caret\"></span>\n </button>\n <ul\n class=\"dropdown-menu dropdown-menu-right\"\n *dropdownMenu\n >\n @for (datapoint of activeDatapoints; track datapoint) {\n <li>\n <button\n class=\"p-r-8\"\n type=\"button\"\n (click)=\"changeDatapointSelection(datapoint)\"\n >\n <span\n class=\"d-inline-block m-r-4\"\n [style.background-color]=\"datapoint?.color\"\n style=\"width: 16px; height: 16px; border-radius: 50%\"\n ></span>\n <span\n class=\"text-truncate\"\n style=\"max-width: 220px !important\"\n title=\"{{ datapoint | datapointLabel }}\"\n >\n {{ datapoint | datapointLabel }}\n </span>\n @if (\n datapoint.__target.id === value?.__target.id &&\n datapoint.fragment === value?.fragment &&\n datapoint.series === value?.series\n ) {\n <span class=\"m-l-auto flex-no-shrink\">\n <i\n class=\"text-success h4\"\n [c8yIcon]=\"'check'\"\n ></i>\n </span>\n }\n </button>\n </li>\n }\n </ul>\n </div>\n}\n<button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Select a data point to view its aggregated values in the time slider.' | translate\n }}\"\n placement=\"left\"\n triggers=\"focus\"\n container=\"body\"\n></button>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i1$4.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: BsDropdownModule }, { kind: "directive", type: i2.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i2.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i2.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: DatapointLabelPipe, name: "datapointLabel" }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
2658
2673
  }
2659
2674
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: SelectAggregatedDatapointComponent, decorators: [{
2660
2675
  type: Component,
@@ -2668,9 +2683,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImpo
2668
2683
  BsDropdownModule,
2669
2684
  A11yModule,
2670
2685
  IconDirective,
2671
- NgIf,
2672
- NgForOf
2673
- ], changeDetection: ChangeDetectionStrategy.Eager, template: "<div\n class=\"dropdown dropup\"\n dropdown\n #datapointDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"datapointDropdown.isOpen\"\n *ngIf=\"activeDatapoints?.length > 0\"\n>\n <ng-template #selectedDatapoint>\n <div class=\"text-left\">\n <strong>{{ selectedDatapointLabel }}</strong>\n <br />\n {{ 'Click to change' | translate }}\n </div>\n </ng-template>\n <button\n class=\"btn btn-default d-flex a-i-center dropdown-toggle c8y-dropdown\"\n title=\"{{'Select a data point to view its aggregated values in the time slider.' | translate }}\"\n type=\"button\"\n dropdownToggle\n >\n <span\n [style.background-color]=\"selectedDatapointColor\"\n style=\"display: inline-block; width: 16px; height: 16px; border-radius: 50%\"\n ></span>\n <span class=\"caret\"></span>\n </button>\n <ul\n class=\"dropdown-menu dropdown-menu-right\"\n *dropdownMenu\n >\n <li *ngFor=\"let datapoint of activeDatapoints\">\n <button\n class=\"p-r-8\"\n type=\"button\"\n (click)=\"changeDatapointSelection(datapoint)\"\n >\n <span\n class=\"d-inline-block m-r-4\"\n [style.background-color]=\"datapoint?.color\"\n style=\"width: 16px; height: 16px; border-radius: 50%\"\n ></span>\n <span class=\"text-truncate\" style=\"max-width:220px!important\" title=\"{{ datapoint?.label || `${datapoint?.fragment}-${datapoint?.series}` }}\">\n {{ datapoint?.label || `${datapoint?.fragment}-${datapoint?.series}` }}\n </span>\n <span\n class=\"m-l-auto flex-no-shrink\"\n *ngIf=\"\n datapoint.__target.id === value?.__target.id &&\n datapoint.fragment === value?.fragment &&\n datapoint.series === value?.series\n \"\n >\n <i\n class=\"text-success h4\"\n [c8yIcon]=\"'check'\"\n ></i>\n </span>\n </button>\n </li>\n </ul>\n</div>\n<button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Select a data point to view its aggregated values in the time slider.' | translate\n }}\"\n placement=\"left\"\n triggers=\"focus\"\n container=\"body\"\n></button>\n" }]
2686
+ DatapointLabelPipe
2687
+ ], changeDetection: ChangeDetectionStrategy.Eager, template: "@if (activeDatapoints?.length > 0) {\n <div\n class=\"dropdown dropup\"\n dropdown\n #datapointDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"datapointDropdown.isOpen\"\n >\n <ng-template #selectedDatapoint>\n <div class=\"text-left\">\n <strong>{{ selectedDatapointLabel }}</strong>\n <br />\n {{ 'Click to change' | translate }}\n </div>\n </ng-template>\n <button\n class=\"btn btn-default d-flex a-i-center dropdown-toggle c8y-dropdown\"\n title=\"{{\n 'Select a data point to view its aggregated values in the time slider.' | translate\n }}\"\n type=\"button\"\n dropdownToggle\n >\n <span\n [style.background-color]=\"selectedDatapointColor\"\n style=\"display: inline-block; width: 16px; height: 16px; border-radius: 50%\"\n ></span>\n <span class=\"caret\"></span>\n </button>\n <ul\n class=\"dropdown-menu dropdown-menu-right\"\n *dropdownMenu\n >\n @for (datapoint of activeDatapoints; track datapoint) {\n <li>\n <button\n class=\"p-r-8\"\n type=\"button\"\n (click)=\"changeDatapointSelection(datapoint)\"\n >\n <span\n class=\"d-inline-block m-r-4\"\n [style.background-color]=\"datapoint?.color\"\n style=\"width: 16px; height: 16px; border-radius: 50%\"\n ></span>\n <span\n class=\"text-truncate\"\n style=\"max-width: 220px !important\"\n title=\"{{ datapoint | datapointLabel }}\"\n >\n {{ datapoint | datapointLabel }}\n </span>\n @if (\n datapoint.__target.id === value?.__target.id &&\n datapoint.fragment === value?.fragment &&\n datapoint.series === value?.series\n ) {\n <span class=\"m-l-auto flex-no-shrink\">\n <i\n class=\"text-success h4\"\n [c8yIcon]=\"'check'\"\n ></i>\n </span>\n }\n </button>\n </li>\n }\n </ul>\n </div>\n}\n<button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Select a data point to view its aggregated values in the time slider.' | translate\n }}\"\n placement=\"left\"\n triggers=\"focus\"\n container=\"body\"\n></button>\n" }]
2674
2688
  }], propDecorators: { activeDatapoints: [{
2675
2689
  type: Input
2676
2690
  }], value: [{