@c8y/ngx-components 1023.14.220 → 1023.14.222

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 (38) hide show
  1. package/alarm-event-selector/index.d.ts.map +1 -1
  2. package/datapoint-library/list/index.d.ts.map +1 -1
  3. package/datapoint-selector/index.d.ts +25 -7
  4. package/datapoint-selector/index.d.ts.map +1 -1
  5. package/echart/index.d.ts +1 -0
  6. package/echart/index.d.ts.map +1 -1
  7. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +13 -8
  8. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
  9. package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs +8 -3
  10. package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs.map +1 -1
  11. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +2 -2
  12. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs.map +1 -1
  13. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +13 -5
  14. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs.map +1 -1
  15. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +66 -39
  16. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  17. package/fesm2022/c8y-ngx-components-echart.mjs +25 -14
  18. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  19. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +15 -6
  20. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  21. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +10 -6
  22. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  23. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +20 -16
  24. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
  25. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs +3 -3
  26. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs.map +1 -1
  27. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +4 -4
  28. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs.map +1 -1
  29. package/fesm2022/c8y-ngx-components.mjs +145 -3
  30. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  31. package/index.d.ts +123 -2
  32. package/index.d.ts.map +1 -1
  33. package/locales/locales.pot +14 -8
  34. package/package.json +1 -1
  35. package/widgets/implementations/datapoints-graph/index.d.ts +6 -0
  36. package/widgets/implementations/datapoints-graph/index.d.ts.map +1 -1
  37. package/widgets/implementations/datapoints-table/index.d.ts.map +1 -1
  38. package/widgets/implementations/info-gauge/index.d.ts.map +1 -1
@@ -4,7 +4,7 @@ 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';
6
6
  import * as i1$1 from '@c8y/ngx-components';
7
- import { CommonModule, FormsModule, IconDirective, C8yTranslatePipe, WidgetTimeContextMediatorService, WidgetTimeContextDateRangeService, ThemeSwitcherService, DismissAlertStrategy, DynamicComponentAlert, CoreModule, MeasurementRealtimeService, AlarmRealtimeService, EventRealtimeService } from '@c8y/ngx-components';
7
+ import { translateDatapointUnit, translateDatapointLabel, CommonModule, FormsModule, IconDirective, C8yTranslatePipe, WidgetTimeContextMediatorService, WidgetTimeContextDateRangeService, ThemeSwitcherService, DismissAlertStrategy, DynamicComponentAlert, CoreModule, MeasurementRealtimeService, AlarmRealtimeService, EventRealtimeService } from '@c8y/ngx-components';
8
8
  import * as echarts from 'echarts';
9
9
  import * as i1 from '@ngx-translate/core';
10
10
  import { TranslateService } from '@ngx-translate/core';
@@ -15,7 +15,7 @@ import * as i4 from '@c8y/ngx-components/alarms';
15
15
  import { AlarmsModule, AlarmSeverityToIconPipe, AlarmSeverityToLabelPipe } from '@c8y/ngx-components/alarms';
16
16
  import { INTERVALS } from '@c8y/ngx-components/interval-picker';
17
17
  import * as i1$2 from '@angular/common';
18
- import { NgIf, NgForOf, CommonModule as CommonModule$1 } from '@angular/common';
18
+ import { CommonModule as CommonModule$1 } from '@angular/common';
19
19
  import * as i2$1 from 'ngx-echarts';
20
20
  import { NgxEchartsModule, NGX_ECHARTS_CONFIG } from 'ngx-echarts';
21
21
  import { TooltipModule } from 'ngx-bootstrap/tooltip';
@@ -26,6 +26,7 @@ import * as i2 from 'ngx-bootstrap/dropdown';
26
26
  import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
27
27
  import * as i3 from '@angular/cdk/a11y';
28
28
  import { A11yModule } from '@angular/cdk/a11y';
29
+ import { DatapointLabelPipe } from '@c8y/ngx-components/datapoint-selector';
29
30
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
30
31
 
31
32
  var DATE_SELECTION_EXTENDED;
@@ -105,7 +106,7 @@ class YAxisService {
105
106
  if (YAxisOptions.forceMergeDatapoints) {
106
107
  return {
107
108
  name: Array.from(datapointsWithValues)
108
- .map((dp, index) => `{${index}|${dp.unit}}`)
109
+ .map((dp, index) => `{${index}|${translateDatapointUnit(dp, this.translate)}}`)
109
110
  .join(' /'),
110
111
  nameLocation: 'middle',
111
112
  nameTruncate: {
@@ -276,9 +277,11 @@ class YAxisService {
276
277
  return '';
277
278
  }
278
279
  if (!options.mergeMatchingDatapoints || !isFirstOccurrence) {
279
- return `${dp.label} [${dp.unit}]`;
280
+ return `${translateDatapointLabel(dp, this.translate)} [${translateDatapointUnit(dp, this.translate)}]`;
280
281
  }
281
- return uniqueUnitDps.map((dp, index) => `{${index}|${dp.unit}}`).join(' / ');
282
+ return uniqueUnitDps
283
+ .map((dp, index) => `{${index}|${translateDatapointUnit(dp, this.translate)}}`)
284
+ .join(' / ');
282
285
  }
283
286
  getDecimalPlaces(num) {
284
287
  const numStr = num.toString();
@@ -1459,6 +1462,14 @@ class EchartsOptionsService {
1459
1462
  }
1460
1463
  }, []);
1461
1464
  }
1465
+ /**
1466
+ * Builds the display name of a datapoint. Passing the whole datapoint lets `translateDatapointLabel`
1467
+ * apply its `fragment → series` fallback, so an unlabeled datapoint still gets an informative
1468
+ * name.
1469
+ */
1470
+ getTranslatedLabel(dp) {
1471
+ return translateDatapointLabel(dp, this.translate);
1472
+ }
1462
1473
  getSingleSeries(dp, renderType, idx, isMinMaxChart = false, displayOptions, seriesType = '') {
1463
1474
  const datapointId = dp.__target?.id + dp.fragment + dp.series;
1464
1475
  const isAggr = seriesType === this.AGGREGATED_SERIES_TYPE;
@@ -1470,13 +1481,13 @@ class EchartsOptionsService {
1470
1481
  ]);
1471
1482
  return {
1472
1483
  datapointId,
1473
- datapointUnit: renderType !== 'count' ? dp.unit : '',
1484
+ datapointUnit: renderType !== 'count' ? translateDatapointUnit(dp, this.translate) : '',
1474
1485
  // 'id' property is needed as 'seriesId' in tooltip formatter
1475
1486
  id: isMinMaxChart
1476
1487
  ? `${datapointId}/${renderType}${seriesType}`
1477
1488
  : `${datapointId}${seriesType}`,
1478
- name: `${dp.label} (${dp.__target?.['name']})`,
1479
- datapointLabel: dp.label || '',
1489
+ name: `${this.getTranslatedLabel(dp)} (${dp.__target?.['name']})`,
1490
+ datapointLabel: this.getTranslatedLabel(dp),
1480
1491
  data,
1481
1492
  ...(displayOptions.forceMergeDatapoints ? {} : { yAxisIndex: idx }),
1482
1493
  ...this.chartTypesService.getSeriesOptions(dp, isMinMaxChart, renderType)
@@ -2068,6 +2079,7 @@ class SelectAggregatedDatapointComponent {
2068
2079
  this.value = null;
2069
2080
  this.valueChange = new EventEmitter();
2070
2081
  this.chartHelpersService = inject(ChartHelpersService);
2082
+ this.translate = inject(TranslateService);
2071
2083
  this.selectedDatapointLabel = gettext('Select data point');
2072
2084
  this.selectedDatapointColor = '';
2073
2085
  }
@@ -2090,15 +2102,15 @@ class SelectAggregatedDatapointComponent {
2090
2102
  }
2091
2103
  const found = this.chartHelpersService.findMatchingDatapoint(this.activeDatapoints, this.value);
2092
2104
  if (this.value && !found) {
2093
- this.selectedDatapointLabel = this.value.label || '';
2105
+ this.selectedDatapointLabel = translateDatapointLabel(this.value, this.translate);
2094
2106
  this.selectedDatapointColor = this.value.color || '';
2095
2107
  return;
2096
2108
  }
2097
- this.selectedDatapointLabel = found?.label || '';
2109
+ this.selectedDatapointLabel = translateDatapointLabel(found, this.translate);
2098
2110
  this.selectedDatapointColor = found?.color || '';
2099
2111
  }
2100
2112
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SelectAggregatedDatapointComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2101
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", 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" }] }); }
2113
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", 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" }] }); }
2102
2114
  }
2103
2115
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SelectAggregatedDatapointComponent, decorators: [{
2104
2116
  type: Component,
@@ -2112,9 +2124,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
2112
2124
  BsDropdownModule,
2113
2125
  A11yModule,
2114
2126
  IconDirective,
2115
- NgIf,
2116
- NgForOf
2117
- ], 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" }]
2127
+ DatapointLabelPipe
2128
+ ], 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" }]
2118
2129
  }], propDecorators: { activeDatapoints: [{
2119
2130
  type: Input
2120
2131
  }], value: [{