@c8y/ngx-components 1017.0.47 → 1017.0.49

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.
@@ -3,24 +3,27 @@ import { Router } from '@angular/router';
3
3
  import { InventoryService } from '@c8y/client';
4
4
  import { AlertService, gettext, ModalService } from '@c8y/ngx-components';
5
5
  import { TranslateService } from '@ngx-translate/core';
6
- import { BehaviorSubject } from 'rxjs';
7
- import { shareReplay, switchMap, tap } from 'rxjs/operators';
6
+ import { BehaviorSubject, pipe } from 'rxjs';
7
+ import { map, shareReplay, switchMap, tap } from 'rxjs/operators';
8
8
  import { pathToDatapointLibrary } from './datapoint-library.model';
9
+ import { DatapointParserService } from '@c8y/ngx-components/datapoint-library/services';
9
10
  import * as i0 from "@angular/core";
10
11
  import * as i1 from "@c8y/client";
11
12
  import * as i2 from "@angular/router";
12
13
  import * as i3 from "@c8y/ngx-components";
13
14
  import * as i4 from "@ngx-translate/core";
14
- import * as i5 from "@angular/cdk/a11y";
15
- import * as i6 from "@angular/common";
16
- import * as i7 from "ngx-bootstrap/dropdown";
15
+ import * as i5 from "@c8y/ngx-components/datapoint-library/services";
16
+ import * as i6 from "@angular/cdk/a11y";
17
+ import * as i7 from "@angular/common";
18
+ import * as i8 from "ngx-bootstrap/dropdown";
17
19
  export class DatapointLibraryListComponent {
18
- constructor(inventory, router, modalService, translateService, alertService) {
20
+ constructor(inventory, router, modalService, translateService, alertService, parser) {
19
21
  this.inventory = inventory;
20
22
  this.router = router;
21
23
  this.modalService = modalService;
22
24
  this.translateService = translateService;
23
25
  this.alertService = alertService;
26
+ this.parser = parser;
24
27
  this.listClass = '';
25
28
  this.isLoading = true;
26
29
  this.reload$ = new BehaviorSubject(null);
@@ -29,6 +32,7 @@ export class DatapointLibraryListComponent {
29
32
  }), switchMap(() => this.getDatapoints()), tap(() => {
30
33
  this.isLoading = false;
31
34
  }), shareReplay());
35
+ this.parsePipe = pipe(map((data) => this.parser.parseDatapoints(data)));
32
36
  }
33
37
  getDatapoints() {
34
38
  return this.inventory.list({ pageSize: 20, fragmentType: 'c8y_Kpi', withTotalPages: true });
@@ -58,10 +62,10 @@ export class DatapointLibraryListComponent {
58
62
  this.reload$.next();
59
63
  }
60
64
  }
61
- DatapointLibraryListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatapointLibraryListComponent, deps: [{ token: i1.InventoryService }, { token: i2.Router }, { token: i3.ModalService }, { token: i4.TranslateService }, { token: i3.AlertService }], target: i0.ɵɵFactoryTarget.Component });
62
- DatapointLibraryListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DatapointLibraryListComponent, selector: "c8y-datapoint-library-list", ngImport: i0, template: "<c8y-title>Data point library</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [icon]=\"'c8y-tools'\" [label]=\"'Configuration' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'Data point library' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<c8y-action-bar-item [placement]=\"'right'\" *c8yIfAllowed=\"['ROLE_INVENTORY_ADMIN']\" [priority]=\"1\">\n <button (click)=\"addDatapointEntry()\" class=\"btn btn-link\" [title]=\"'Add data point' | translate\">\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add data point' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\" [priority]=\"0\">\n <button\n (click)=\"reload()\"\n class=\"btn btn-link\"\n [disabled]=\"isLoading\"\n [title]=\"'Reload' | translate\"\n type=\"button\"\n >\n <i c8yIcon=\"refresh\" [ngClass]=\"{ 'icon-spin': isLoading }\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\" itemClass=\"navbar-form hidden-xs\">\n <c8y-list-display-switch\n (onListClassChange)=\"listClass = $event\"\n [listLength]=\"(datapoints$ | async)?.data?.length\"\n ></c8y-list-display-switch>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/users-guide/cockpit/#data-point-library\"></c8y-help>\n\n<!-- empty state\n-->\n<c8y-ui-empty-state\n *ngIf=\"(datapoints$ | async)?.data?.length === 0\"\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points to display.' | translate\"\n [subtitle]=\"'Add a data point using the button below.' | translate\"\n>\n <p>\n <button\n (click)=\"addDatapointEntry()\"\n class=\"btn btn-primary\"\n [title]=\"'Add data point' | translate\"\n type=\"button\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add data point' | translate }}\n </button>\n </p>\n</c8y-ui-empty-state>\n\n<!-- loading indicator -->\n<div *ngIf=\"isLoading\" class=\"d-flex j-c-center\">\n <c8y-loading></c8y-loading>\n</div>\n\n<div\n class=\"card-group\"\n [ngClass]=\"listClass\"\n *ngIf=\"!isLoading && (datapoints$ | async) as datapoints\"\n>\n <div class=\"page-sticky-header hidden-xs\" *ngIf=\"datapoints.data.length\">\n <div class=\"d-flex\">\n <div class=\"card-header\">\n <div class=\"card-icon\"></div>\n <p translate>Label</p>\n </div>\n <div class=\"card-actions\"></div>\n <div class=\"card-block p-l-0\">\n <div class=\"col-sm-3 p-l-16\">\n <p translate>Fragment</p>\n </div>\n <div class=\"col-sm-2\">\n <p translate>Series</p>\n </div>\n <div class=\"col-sm-1\">\n <span translate>Unit</span>\n </div>\n <div class=\"col-sm-2\">\n <span translate>Target</span>\n </div>\n <div class=\"col-sm-4\">\n <span translate>Range</span>\n </div>\n </div>\n </div>\n </div>\n <div\n *c8yFor=\"let datapoint of datapoints; loadMore: 'hidden'\"\n class=\"col-sm-6 col-md-4 col-lg-3 col-xs-12\"\n >\n <div class=\"card pointer\" (click)=\"editDatapointEntry(datapoint)\">\n <div class=\"card-actions\" (click)=\"$event.stopPropagation()\">\n <div class=\"dropdown settings pull-right\" dropdown #datapointOptionsDropdown=\"bs-dropdown\" [cdkTrapFocus]=\"datapointOptionsDropdown.isOpen\">\n <button\n [title]=\"'Actions' | translate\"\n type=\"button\"\n class=\"dropdown-toggle c8y-dropdown\"\n dropdownToggle\n >\n <i c8yIcon=\"ellipsis-v\"></i>\n </button>\n <ul class=\"dropdown-menu\" *dropdownMenu>\n <li>\n <button\n [title]=\"'Edit' | translate\"\n type=\"button\"\n (click)=\"editDatapointEntry(datapoint)\"\n >\n <i c8yIcon=\"pencil\"></i>\n {{ 'Edit' | translate }}\n </button>\n </li>\n <li>\n <button\n [title]=\"'Remove' | translate\"\n type=\"button\"\n (click)=\"removeDatapointEntry(datapoint)\"\n >\n <i c8yIcon=\"delete\"></i>\n {{ 'Remove' | translate }}\n </button>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"card-header separator\">\n <div class=\"card-icon\">\n <i c8yIcon=\"circle\" [style.color]=\"datapoint.c8y_Kpi?.color\"></i>\n </div>\n <div class=\"card-title text-truncate\" [title]=\"datapoint.c8y_Kpi?.label\">\n {{ datapoint.c8y_Kpi?.label }}\n </div>\n </div>\n <div class=\"card-block bg-level-1 p-b-24 card-hidden-list\">\n <div class=\"col-sm-3 col-md-2\">\n <c8y-range-display [config]=\"datapoint.c8y_Kpi\" [display]=\"'compact'\"></c8y-range-display>\n </div>\n </div>\n <div class=\"card-block\">\n <div class=\"col-sm-3 text-truncate\">\n <span>\n <label class=\"text-label-small m-r-4\" translate>Fragment</label>\n <span [title]=\"datapoint.c8y_Kpi?.fragment\">\n {{ datapoint.c8y_Kpi?.fragment }}\n </span>\n </span>\n </div>\n <div class=\"col-sm-2 text-truncate\">\n <label class=\"text-label-small m-r-4\" translate>Series</label>\n <span [title]=\"datapoint.c8y_Kpi?.series\">\n {{ datapoint.c8y_Kpi?.series }}\n </span>\n </div>\n <div class=\"col-sm-1 text-truncate card-hidden-grid\">\n <span *ngIf=\"datapoint.c8y_Kpi?.unit\">\n <label class=\"text-label-small m-r-4\" translate>Unit</label>\n <span [title]=\"datapoint.c8y_Kpi?.unit\">\n {{ datapoint.c8y_Kpi?.unit }}\n </span>\n </span>\n </div>\n <div class=\"col-sm-2 text-truncate\">\n <span *ngIf=\"datapoint.c8y_Kpi?.target\">\n <label class=\"text-label-small m-r-4\" translate>Target</label>\n <span [title]=\"datapoint.c8y_Kpi?.target\">\n {{ datapoint.c8y_Kpi?.target }}\n </span>\n </span>\n </div>\n <div class=\"col-sm-4 card-hidden-grid\">\n <c8y-range-display [config]=\"datapoint.c8y_Kpi\" [display]=\"'inline'\"></c8y-range-display>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i5.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: i3.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "component", type: i3.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i3.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.IfAllowedDirective, selector: "[c8yIfAllowed]", inputs: ["c8yIfAllowed", "c8yIfAllowedAllowAny"] }, { kind: "directive", type: i3.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount"] }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading" }, { kind: "component", type: i3.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i3.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "component", type: i3.RangeDisplayComponent, selector: "c8y-range-display", inputs: ["config", "display"] }, { kind: "component", type: i3.ListDisplaySwitchComponent, selector: "c8y-list-display-switch", inputs: ["listKey", "listLength", "filterPipe"], outputs: ["onListClassChange"] }, { kind: "directive", type: i7.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i7.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i7.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }] });
65
+ DatapointLibraryListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatapointLibraryListComponent, deps: [{ token: i1.InventoryService }, { token: i2.Router }, { token: i3.ModalService }, { token: i4.TranslateService }, { token: i3.AlertService }, { token: i5.DatapointParserService }], target: i0.ɵɵFactoryTarget.Component });
66
+ DatapointLibraryListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DatapointLibraryListComponent, selector: "c8y-datapoint-library-list", ngImport: i0, template: "<c8y-title>Data point library</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [icon]=\"'c8y-tools'\" [label]=\"'Configuration' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'Data point library' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<c8y-action-bar-item [placement]=\"'right'\" *c8yIfAllowed=\"['ROLE_INVENTORY_ADMIN']\" [priority]=\"1\">\n <button (click)=\"addDatapointEntry()\" class=\"btn btn-link\" [title]=\"'Add data point' | translate\">\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add data point' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\" [priority]=\"0\">\n <button\n (click)=\"reload()\"\n class=\"btn btn-link\"\n [disabled]=\"isLoading\"\n [title]=\"'Reload' | translate\"\n type=\"button\"\n >\n <i c8yIcon=\"refresh\" [ngClass]=\"{ 'icon-spin': isLoading }\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\" itemClass=\"navbar-form hidden-xs\">\n <c8y-list-display-switch\n (onListClassChange)=\"listClass = $event\"\n [listLength]=\"(datapoints$ | async)?.data?.length\"\n ></c8y-list-display-switch>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/users-guide/cockpit/#data-point-library\"></c8y-help>\n\n<!-- empty state\n-->\n<c8y-ui-empty-state\n *ngIf=\"(datapoints$ | async)?.data?.length === 0\"\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points to display.' | translate\"\n [subtitle]=\"'Add a data point using the button below.' | translate\"\n>\n <p>\n <button\n (click)=\"addDatapointEntry()\"\n class=\"btn btn-primary\"\n [title]=\"'Add data point' | translate\"\n type=\"button\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add data point' | translate }}\n </button>\n </p>\n</c8y-ui-empty-state>\n\n<!-- loading indicator -->\n<div *ngIf=\"isLoading\" class=\"d-flex j-c-center\">\n <c8y-loading></c8y-loading>\n</div>\n\n<div\n class=\"card-group\"\n [ngClass]=\"listClass\"\n *ngIf=\"!isLoading && (datapoints$ | async) as datapoints\"\n>\n <div class=\"page-sticky-header hidden-xs\" *ngIf=\"datapoints.data.length\">\n <div class=\"d-flex\">\n <div class=\"card-header\">\n <div class=\"card-icon\"></div>\n <p translate>Label</p>\n </div>\n <div class=\"card-actions\"></div>\n <div class=\"card-block p-l-0\">\n <div class=\"col-sm-3 p-l-16\">\n <p translate>Fragment</p>\n </div>\n <div class=\"col-sm-2\">\n <p translate>Series</p>\n </div>\n <div class=\"col-sm-1\">\n <span translate>Unit</span>\n </div>\n <div class=\"col-sm-2\">\n <span translate>Target</span>\n </div>\n <div class=\"col-sm-4\">\n <span translate>Range</span>\n </div>\n </div>\n </div>\n </div>\n <div\n *c8yFor=\"let datapoint of datapoints; loadMore: 'hidden'; pipe: parsePipe\"\n class=\"col-sm-6 col-md-4 col-lg-3 col-xs-12\"\n >\n <div class=\"card pointer\" (click)=\"editDatapointEntry(datapoint)\">\n <div class=\"card-actions\" (click)=\"$event.stopPropagation()\">\n <div class=\"dropdown settings pull-right\" dropdown #datapointOptionsDropdown=\"bs-dropdown\" [cdkTrapFocus]=\"datapointOptionsDropdown.isOpen\">\n <button\n [title]=\"'Actions' | translate\"\n type=\"button\"\n class=\"dropdown-toggle c8y-dropdown\"\n dropdownToggle\n >\n <i c8yIcon=\"ellipsis-v\"></i>\n </button>\n <ul class=\"dropdown-menu\" *dropdownMenu>\n <li>\n <button\n [title]=\"'Edit' | translate\"\n type=\"button\"\n (click)=\"editDatapointEntry(datapoint)\"\n >\n <i c8yIcon=\"pencil\"></i>\n {{ 'Edit' | translate }}\n </button>\n </li>\n <li>\n <button\n [title]=\"'Remove' | translate\"\n type=\"button\"\n (click)=\"removeDatapointEntry(datapoint)\"\n >\n <i c8yIcon=\"delete\"></i>\n {{ 'Remove' | translate }}\n </button>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"card-header separator\">\n <div class=\"card-icon\">\n <i c8yIcon=\"circle\" [style.color]=\"datapoint.c8y_Kpi?.color\"></i>\n </div>\n <div class=\"card-title text-truncate\" [title]=\"datapoint.c8y_Kpi?.label\">\n {{ datapoint.c8y_Kpi?.label }}\n </div>\n </div>\n <div class=\"card-block bg-level-1 p-b-24 card-hidden-list\">\n <div class=\"col-sm-3 col-md-2\">\n <c8y-range-display [config]=\"datapoint.c8y_Kpi\" [display]=\"'compact'\"></c8y-range-display>\n </div>\n </div>\n <div class=\"card-block\">\n <div class=\"col-sm-3 text-truncate\">\n <span>\n <label class=\"text-label-small m-r-4\" translate>Fragment</label>\n <span [title]=\"datapoint.c8y_Kpi?.fragment\">\n {{ datapoint.c8y_Kpi?.fragment }}\n </span>\n </span>\n </div>\n <div class=\"col-sm-2 text-truncate\">\n <label class=\"text-label-small m-r-4\" translate>Series</label>\n <span [title]=\"datapoint.c8y_Kpi?.series\">\n {{ datapoint.c8y_Kpi?.series }}\n </span>\n </div>\n <div class=\"col-sm-1 text-truncate card-hidden-grid\">\n <span *ngIf=\"datapoint.c8y_Kpi?.unit\">\n <label class=\"text-label-small m-r-4\" translate>Unit</label>\n <span [title]=\"datapoint.c8y_Kpi?.unit\">\n {{ datapoint.c8y_Kpi?.unit }}\n </span>\n </span>\n </div>\n <div class=\"col-sm-2 text-truncate\">\n <span *ngIf=\"datapoint.c8y_Kpi?.target\">\n <label class=\"text-label-small m-r-4\" translate>Target</label>\n <span [title]=\"datapoint.c8y_Kpi?.target\">\n {{ datapoint.c8y_Kpi?.target }}\n </span>\n </span>\n </div>\n <div class=\"col-sm-4 card-hidden-grid\">\n <c8y-range-display [config]=\"datapoint.c8y_Kpi\" [display]=\"'inline'\"></c8y-range-display>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i6.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: i3.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "component", type: i3.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i3.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.IfAllowedDirective, selector: "[c8yIfAllowed]", inputs: ["c8yIfAllowed", "c8yIfAllowedAllowAny"] }, { kind: "directive", type: i3.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount"] }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading" }, { kind: "component", type: i3.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i3.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "component", type: i3.RangeDisplayComponent, selector: "c8y-range-display", inputs: ["config", "display"] }, { kind: "component", type: i3.ListDisplaySwitchComponent, selector: "c8y-list-display-switch", inputs: ["listKey", "listLength", "filterPipe"], outputs: ["onListClassChange"] }, { kind: "directive", type: i8.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i8.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i8.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }] });
63
67
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatapointLibraryListComponent, decorators: [{
64
68
  type: Component,
65
- args: [{ selector: 'c8y-datapoint-library-list', template: "<c8y-title>Data point library</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [icon]=\"'c8y-tools'\" [label]=\"'Configuration' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'Data point library' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<c8y-action-bar-item [placement]=\"'right'\" *c8yIfAllowed=\"['ROLE_INVENTORY_ADMIN']\" [priority]=\"1\">\n <button (click)=\"addDatapointEntry()\" class=\"btn btn-link\" [title]=\"'Add data point' | translate\">\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add data point' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\" [priority]=\"0\">\n <button\n (click)=\"reload()\"\n class=\"btn btn-link\"\n [disabled]=\"isLoading\"\n [title]=\"'Reload' | translate\"\n type=\"button\"\n >\n <i c8yIcon=\"refresh\" [ngClass]=\"{ 'icon-spin': isLoading }\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\" itemClass=\"navbar-form hidden-xs\">\n <c8y-list-display-switch\n (onListClassChange)=\"listClass = $event\"\n [listLength]=\"(datapoints$ | async)?.data?.length\"\n ></c8y-list-display-switch>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/users-guide/cockpit/#data-point-library\"></c8y-help>\n\n<!-- empty state\n-->\n<c8y-ui-empty-state\n *ngIf=\"(datapoints$ | async)?.data?.length === 0\"\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points to display.' | translate\"\n [subtitle]=\"'Add a data point using the button below.' | translate\"\n>\n <p>\n <button\n (click)=\"addDatapointEntry()\"\n class=\"btn btn-primary\"\n [title]=\"'Add data point' | translate\"\n type=\"button\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add data point' | translate }}\n </button>\n </p>\n</c8y-ui-empty-state>\n\n<!-- loading indicator -->\n<div *ngIf=\"isLoading\" class=\"d-flex j-c-center\">\n <c8y-loading></c8y-loading>\n</div>\n\n<div\n class=\"card-group\"\n [ngClass]=\"listClass\"\n *ngIf=\"!isLoading && (datapoints$ | async) as datapoints\"\n>\n <div class=\"page-sticky-header hidden-xs\" *ngIf=\"datapoints.data.length\">\n <div class=\"d-flex\">\n <div class=\"card-header\">\n <div class=\"card-icon\"></div>\n <p translate>Label</p>\n </div>\n <div class=\"card-actions\"></div>\n <div class=\"card-block p-l-0\">\n <div class=\"col-sm-3 p-l-16\">\n <p translate>Fragment</p>\n </div>\n <div class=\"col-sm-2\">\n <p translate>Series</p>\n </div>\n <div class=\"col-sm-1\">\n <span translate>Unit</span>\n </div>\n <div class=\"col-sm-2\">\n <span translate>Target</span>\n </div>\n <div class=\"col-sm-4\">\n <span translate>Range</span>\n </div>\n </div>\n </div>\n </div>\n <div\n *c8yFor=\"let datapoint of datapoints; loadMore: 'hidden'\"\n class=\"col-sm-6 col-md-4 col-lg-3 col-xs-12\"\n >\n <div class=\"card pointer\" (click)=\"editDatapointEntry(datapoint)\">\n <div class=\"card-actions\" (click)=\"$event.stopPropagation()\">\n <div class=\"dropdown settings pull-right\" dropdown #datapointOptionsDropdown=\"bs-dropdown\" [cdkTrapFocus]=\"datapointOptionsDropdown.isOpen\">\n <button\n [title]=\"'Actions' | translate\"\n type=\"button\"\n class=\"dropdown-toggle c8y-dropdown\"\n dropdownToggle\n >\n <i c8yIcon=\"ellipsis-v\"></i>\n </button>\n <ul class=\"dropdown-menu\" *dropdownMenu>\n <li>\n <button\n [title]=\"'Edit' | translate\"\n type=\"button\"\n (click)=\"editDatapointEntry(datapoint)\"\n >\n <i c8yIcon=\"pencil\"></i>\n {{ 'Edit' | translate }}\n </button>\n </li>\n <li>\n <button\n [title]=\"'Remove' | translate\"\n type=\"button\"\n (click)=\"removeDatapointEntry(datapoint)\"\n >\n <i c8yIcon=\"delete\"></i>\n {{ 'Remove' | translate }}\n </button>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"card-header separator\">\n <div class=\"card-icon\">\n <i c8yIcon=\"circle\" [style.color]=\"datapoint.c8y_Kpi?.color\"></i>\n </div>\n <div class=\"card-title text-truncate\" [title]=\"datapoint.c8y_Kpi?.label\">\n {{ datapoint.c8y_Kpi?.label }}\n </div>\n </div>\n <div class=\"card-block bg-level-1 p-b-24 card-hidden-list\">\n <div class=\"col-sm-3 col-md-2\">\n <c8y-range-display [config]=\"datapoint.c8y_Kpi\" [display]=\"'compact'\"></c8y-range-display>\n </div>\n </div>\n <div class=\"card-block\">\n <div class=\"col-sm-3 text-truncate\">\n <span>\n <label class=\"text-label-small m-r-4\" translate>Fragment</label>\n <span [title]=\"datapoint.c8y_Kpi?.fragment\">\n {{ datapoint.c8y_Kpi?.fragment }}\n </span>\n </span>\n </div>\n <div class=\"col-sm-2 text-truncate\">\n <label class=\"text-label-small m-r-4\" translate>Series</label>\n <span [title]=\"datapoint.c8y_Kpi?.series\">\n {{ datapoint.c8y_Kpi?.series }}\n </span>\n </div>\n <div class=\"col-sm-1 text-truncate card-hidden-grid\">\n <span *ngIf=\"datapoint.c8y_Kpi?.unit\">\n <label class=\"text-label-small m-r-4\" translate>Unit</label>\n <span [title]=\"datapoint.c8y_Kpi?.unit\">\n {{ datapoint.c8y_Kpi?.unit }}\n </span>\n </span>\n </div>\n <div class=\"col-sm-2 text-truncate\">\n <span *ngIf=\"datapoint.c8y_Kpi?.target\">\n <label class=\"text-label-small m-r-4\" translate>Target</label>\n <span [title]=\"datapoint.c8y_Kpi?.target\">\n {{ datapoint.c8y_Kpi?.target }}\n </span>\n </span>\n </div>\n <div class=\"col-sm-4 card-hidden-grid\">\n <c8y-range-display [config]=\"datapoint.c8y_Kpi\" [display]=\"'inline'\"></c8y-range-display>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
66
- }], ctorParameters: function () { return [{ type: i1.InventoryService }, { type: i2.Router }, { type: i3.ModalService }, { type: i4.TranslateService }, { type: i3.AlertService }]; } });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LWxpYnJhcnktbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9kYXRhcG9pbnQtbGlicmFyeS9kYXRhcG9pbnQtbGlicmFyeS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2RhdGFwb2ludC1saWJyYXJ5L2RhdGFwb2ludC1saWJyYXJ5LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFrQixnQkFBZ0IsRUFBZSxNQUFNLGFBQWEsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7QUFNbkUsTUFBTSxPQUFPLDZCQUE2QjtJQWV4QyxZQUNVLFNBQTJCLEVBQzNCLE1BQWMsRUFDZCxZQUEwQixFQUMxQixnQkFBa0MsRUFDbEMsWUFBMEI7UUFKMUIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFuQnBDLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLFlBQU8sR0FBMEIsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0QsZ0JBQVcsR0FBNEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ3RFLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN4QixDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQ3JDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN6QixDQUFDLENBQUMsRUFDRixXQUFXLEVBQUUsQ0FDZCxDQUFDO0lBUUMsQ0FBQztJQUVKLGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQXFCO1FBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxLQUFxQjtRQUM5QyxJQUFJO1lBQ0YsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FDN0IsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEVBQzVCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQzNCLE9BQU8sQ0FBQyw2RUFBNkUsQ0FBQyxFQUN0RixFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUNqQyxFQUNELFFBQVEsQ0FDVCxDQUFDO1NBQ0g7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU87U0FDUjtRQUNELElBQUk7WUFDRixNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3JCO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RCLENBQUM7OzBIQTFEVSw2QkFBNkI7OEdBQTdCLDZCQUE2QixrRUNiMUMsMjNNQXlMQTsyRkQ1S2EsNkJBQTZCO2tCQUp6QyxTQUFTOytCQUNFLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0LCBJbnZlbnRvcnlTZXJ2aWNlLCBJUmVzdWx0TGlzdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSwgZ2V0dGV4dCwgTW9kYWxTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHBhdGhUb0RhdGFwb2ludExpYnJhcnkgfSBmcm9tICcuL2RhdGFwb2ludC1saWJyYXJ5Lm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRhdGFwb2ludC1saWJyYXJ5LWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YXBvaW50LWxpYnJhcnktbGlzdC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGF0YXBvaW50TGlicmFyeUxpc3RDb21wb25lbnQge1xuICBsaXN0Q2xhc3MgPSAnJztcbiAgaXNMb2FkaW5nID0gdHJ1ZTtcbiAgcmVsb2FkJDogQmVoYXZpb3JTdWJqZWN0PHZvaWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgZGF0YXBvaW50cyQ6IE9ic2VydmFibGU8SVJlc3VsdExpc3Q8SU1hbmFnZWRPYmplY3Q+PiA9IHRoaXMucmVsb2FkJC5waXBlKFxuICAgIHRhcCgoKSA9PiB7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgfSksXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZ2V0RGF0YXBvaW50cygpKSxcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgpXG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlXG4gICkge31cblxuICBnZXREYXRhcG9pbnRzKCk6IFByb21pc2U8SVJlc3VsdExpc3Q8SU1hbmFnZWRPYmplY3Q+PiB7XG4gICAgcmV0dXJuIHRoaXMuaW52ZW50b3J5Lmxpc3QoeyBwYWdlU2l6ZTogMjAsIGZyYWdtZW50VHlwZTogJ2M4eV9LcGknLCB3aXRoVG90YWxQYWdlczogdHJ1ZSB9KTtcbiAgfVxuXG4gIGFkZERhdGFwb2ludEVudHJ5KCkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtwYXRoVG9EYXRhcG9pbnRMaWJyYXJ5LCAnbmV3J10pO1xuICB9XG5cbiAgZWRpdERhdGFwb2ludEVudHJ5KGVudHJ5OiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtwYXRoVG9EYXRhcG9pbnRMaWJyYXJ5LCBlbnRyeS5pZF0pO1xuICB9XG5cbiAgYXN5bmMgcmVtb3ZlRGF0YXBvaW50RW50cnkoZW50cnk6IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMubW9kYWxTZXJ2aWNlLmNvbmZpcm0oXG4gICAgICAgIGdldHRleHQoJ0RlbGV0ZSBkYXRhIHBvaW50JyksXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgIGdldHRleHQoJ1lvdSBhcmUgYWJvdXQgdG8gZGVsZXRlIGRhdGEgcG9pbnQgXCJ7eyBkcExhYmVsIH19XCIuIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/JyksXG4gICAgICAgICAgeyBkcExhYmVsOiBlbnRyeS5jOHlfS3BpLmxhYmVsIH1cbiAgICAgICAgKSxcbiAgICAgICAgJ2RhbmdlcidcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5pbnZlbnRvcnkuZGVsZXRlKGVudHJ5LmlkKTtcbiAgICAgIHRoaXMucmVsb2FkJC5uZXh0KCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlKTtcbiAgICB9XG4gIH1cblxuICByZWxvYWQoKSB7XG4gICAgdGhpcy5yZWxvYWQkLm5leHQoKTtcbiAgfVxufVxuIiwiPGM4eS10aXRsZT5EYXRhIHBvaW50IGxpYnJhcnk8L2M4eS10aXRsZT5cbjxjOHktYnJlYWRjcnVtYj5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW0gW2ljb25dPVwiJ2M4eS10b29scydcIiBbbGFiZWxdPVwiJ0NvbmZpZ3VyYXRpb24nIHwgdHJhbnNsYXRlXCI+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIFtpY29uXT1cIidjOHktdG9vbHMnXCJcbiAgICBbbGFiZWxdPVwiJ0RhdGEgcG9pbnQgbGlicmFyeScgfCB0cmFuc2xhdGVcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuPC9jOHktYnJlYWRjcnVtYj5cbjxjOHktYWN0aW9uLWJhci1pdGVtIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiICpjOHlJZkFsbG93ZWQ9XCJbJ1JPTEVfSU5WRU5UT1JZX0FETUlOJ11cIiBbcHJpb3JpdHldPVwiMVwiPlxuICA8YnV0dG9uIChjbGljayk9XCJhZGREYXRhcG9pbnRFbnRyeSgpXCIgY2xhc3M9XCJidG4gYnRuLWxpbmtcIiBbdGl0bGVdPVwiJ0FkZCBkYXRhIHBvaW50JyB8IHRyYW5zbGF0ZVwiPlxuICAgIDxpIGM4eUljb249XCJwbHVzLWNpcmNsZVwiPjwvaT5cbiAgICB7eyAnQWRkIGRhdGEgcG9pbnQnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbSBbcGxhY2VtZW50XT1cIidyaWdodCdcIiBbcHJpb3JpdHldPVwiMFwiPlxuICA8YnV0dG9uXG4gICAgKGNsaWNrKT1cInJlbG9hZCgpXCJcbiAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgW2Rpc2FibGVkXT1cImlzTG9hZGluZ1wiXG4gICAgW3RpdGxlXT1cIidSZWxvYWQnIHwgdHJhbnNsYXRlXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgPlxuICAgIDxpIGM4eUljb249XCJyZWZyZXNoXCIgW25nQ2xhc3NdPVwieyAnaWNvbi1zcGluJzogaXNMb2FkaW5nIH1cIj48L2k+XG4gICAge3sgJ1JlbG9hZCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtIFtwbGFjZW1lbnRdPVwiJ2xlZnQnXCIgaXRlbUNsYXNzPVwibmF2YmFyLWZvcm0gaGlkZGVuLXhzXCI+XG4gIDxjOHktbGlzdC1kaXNwbGF5LXN3aXRjaFxuICAgIChvbkxpc3RDbGFzc0NoYW5nZSk9XCJsaXN0Q2xhc3MgPSAkZXZlbnRcIlxuICAgIFtsaXN0TGVuZ3RoXT1cIihkYXRhcG9pbnRzJCB8IGFzeW5jKT8uZGF0YT8ubGVuZ3RoXCJcbiAgPjwvYzh5LWxpc3QtZGlzcGxheS1zd2l0Y2g+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktaGVscCBzcmM9XCIvdXNlcnMtZ3VpZGUvY29ja3BpdC8jZGF0YS1wb2ludC1saWJyYXJ5XCI+PC9jOHktaGVscD5cblxuPCEtLSBlbXB0eSBzdGF0ZVxuLS0+XG48Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICpuZ0lmPVwiKGRhdGFwb2ludHMkIHwgYXN5bmMpPy5kYXRhPy5sZW5ndGggPT09IDBcIlxuICBbaWNvbl09XCInYzh5LWRhdGEtcG9pbnRzJ1wiXG4gIFt0aXRsZV09XCInTm8gZGF0YSBwb2ludHMgdG8gZGlzcGxheS4nIHwgdHJhbnNsYXRlXCJcbiAgW3N1YnRpdGxlXT1cIidBZGQgYSBkYXRhIHBvaW50IHVzaW5nIHRoZSBidXR0b24gYmVsb3cuJyB8IHRyYW5zbGF0ZVwiXG4+XG4gIDxwPlxuICAgIDxidXR0b25cbiAgICAgIChjbGljayk9XCJhZGREYXRhcG9pbnRFbnRyeSgpXCJcbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgIFt0aXRsZV09XCInQWRkIGRhdGEgcG9pbnQnIHwgdHJhbnNsYXRlXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgID5cbiAgICAgIDxpIGM4eUljb249XCJwbHVzLWNpcmNsZVwiPjwvaT5cbiAgICAgIHt7ICdBZGQgZGF0YSBwb2ludCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9wPlxuPC9jOHktdWktZW1wdHktc3RhdGU+XG5cbjwhLS0gbG9hZGluZyBpbmRpY2F0b3IgLS0+XG48ZGl2ICpuZ0lmPVwiaXNMb2FkaW5nXCIgY2xhc3M9XCJkLWZsZXggai1jLWNlbnRlclwiPlxuICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbjwvZGl2PlxuXG48ZGl2XG4gIGNsYXNzPVwiY2FyZC1ncm91cFwiXG4gIFtuZ0NsYXNzXT1cImxpc3RDbGFzc1wiXG4gICpuZ0lmPVwiIWlzTG9hZGluZyAmJiAoZGF0YXBvaW50cyQgfCBhc3luYykgYXMgZGF0YXBvaW50c1wiXG4+XG4gIDxkaXYgY2xhc3M9XCJwYWdlLXN0aWNreS1oZWFkZXIgaGlkZGVuLXhzXCIgKm5nSWY9XCJkYXRhcG9pbnRzLmRhdGEubGVuZ3RoXCI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWljb25cIj48L2Rpdj5cbiAgICAgICAgPHAgdHJhbnNsYXRlPkxhYmVsPC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1hY3Rpb25zXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBwLWwtMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTMgcC1sLTE2XCI+XG4gICAgICAgICAgPHAgdHJhbnNsYXRlPkZyYWdtZW50PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yXCI+XG4gICAgICAgICAgPHAgdHJhbnNsYXRlPlNlcmllczwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMVwiPlxuICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5Vbml0PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yXCI+XG4gICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPlRhcmdldDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiPlxuICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5SYW5nZTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICAqYzh5Rm9yPVwibGV0IGRhdGFwb2ludCBvZiBkYXRhcG9pbnRzOyBsb2FkTW9yZTogJ2hpZGRlbidcIlxuICAgIGNsYXNzPVwiY29sLXNtLTYgY29sLW1kLTQgY29sLWxnLTMgY29sLXhzLTEyXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIHBvaW50ZXJcIiAoY2xpY2spPVwiZWRpdERhdGFwb2ludEVudHJ5KGRhdGFwb2ludClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWFjdGlvbnNcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93biBzZXR0aW5ncyBwdWxsLXJpZ2h0XCIgZHJvcGRvd24gI2RhdGFwb2ludE9wdGlvbnNEcm9wZG93bj1cImJzLWRyb3Bkb3duXCIgW2Nka1RyYXBGb2N1c109XCJkYXRhcG9pbnRPcHRpb25zRHJvcGRvd24uaXNPcGVuXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgW3RpdGxlXT1cIidBY3Rpb25zJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tdG9nZ2xlIGM4eS1kcm9wZG93blwiXG4gICAgICAgICAgICBkcm9wZG93blRvZ2dsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGM4eUljb249XCJlbGxpcHNpcy12XCI+PC9pPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDx1bCBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiAqZHJvcGRvd25NZW51PlxuICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidFZGl0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImVkaXREYXRhcG9pbnRFbnRyeShkYXRhcG9pbnQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJwZW5jaWxcIj48L2k+XG4gICAgICAgICAgICAgICAge3sgJ0VkaXQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCInUmVtb3ZlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZURhdGFwb2ludEVudHJ5KGRhdGFwb2ludClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cImRlbGV0ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICB7eyAnUmVtb3ZlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1pY29uXCI+XG4gICAgICAgICAgPGkgYzh5SWNvbj1cImNpcmNsZVwiIFtzdHlsZS5jb2xvcl09XCJkYXRhcG9pbnQuYzh5X0twaT8uY29sb3JcIj48L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSB0ZXh0LXRydW5jYXRlXCIgW3RpdGxlXT1cImRhdGFwb2ludC5jOHlfS3BpPy5sYWJlbFwiPlxuICAgICAgICAgIHt7IGRhdGFwb2ludC5jOHlfS3BpPy5sYWJlbCB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgYmctbGV2ZWwtMSBwLWItMjQgY2FyZC1oaWRkZW4tbGlzdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTMgY29sLW1kLTJcIj5cbiAgICAgICAgICA8Yzh5LXJhbmdlLWRpc3BsYXkgW2NvbmZpZ109XCJkYXRhcG9pbnQuYzh5X0twaVwiIFtkaXNwbGF5XT1cIidjb21wYWN0J1wiPjwvYzh5LXJhbmdlLWRpc3BsYXk+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9ja1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTMgdGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbCBtLXItNFwiIHRyYW5zbGF0ZT5GcmFnbWVudDwvbGFiZWw+XG4gICAgICAgICAgICA8c3BhbiBbdGl0bGVdPVwiZGF0YXBvaW50LmM4eV9LcGk/LmZyYWdtZW50XCI+XG4gICAgICAgICAgICAgIHt7IGRhdGFwb2ludC5jOHlfS3BpPy5mcmFnbWVudCB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMiB0ZXh0LXRydW5jYXRlXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbCBtLXItNFwiIHRyYW5zbGF0ZT5TZXJpZXM8L2xhYmVsPlxuICAgICAgICAgIDxzcGFuIFt0aXRsZV09XCJkYXRhcG9pbnQuYzh5X0twaT8uc2VyaWVzXCI+XG4gICAgICAgICAgICB7eyBkYXRhcG9pbnQuYzh5X0twaT8uc2VyaWVzIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xIHRleHQtdHJ1bmNhdGUgY2FyZC1oaWRkZW4tZ3JpZFwiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF0YXBvaW50LmM4eV9LcGk/LnVuaXRcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRleHQtbGFiZWwtc21hbGwgbS1yLTRcIiB0cmFuc2xhdGU+VW5pdDwvbGFiZWw+XG4gICAgICAgICAgICA8c3BhbiBbdGl0bGVdPVwiZGF0YXBvaW50LmM4eV9LcGk/LnVuaXRcIj5cbiAgICAgICAgICAgICAge3sgZGF0YXBvaW50LmM4eV9LcGk/LnVuaXQgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTIgdGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF0YXBvaW50LmM4eV9LcGk/LnRhcmdldFwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbCBtLXItNFwiIHRyYW5zbGF0ZT5UYXJnZXQ8L2xhYmVsPlxuICAgICAgICAgICAgPHNwYW4gW3RpdGxlXT1cImRhdGFwb2ludC5jOHlfS3BpPy50YXJnZXRcIj5cbiAgICAgICAgICAgICAge3sgZGF0YXBvaW50LmM4eV9LcGk/LnRhcmdldCB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNCBjYXJkLWhpZGRlbi1ncmlkXCI+XG4gICAgICAgICAgPGM4eS1yYW5nZS1kaXNwbGF5IFtjb25maWddPVwiZGF0YXBvaW50LmM4eV9LcGlcIiBbZGlzcGxheV09XCInaW5saW5lJ1wiPjwvYzh5LXJhbmdlLWRpc3BsYXk+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
69
+ args: [{ selector: 'c8y-datapoint-library-list', template: "<c8y-title>Data point library</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [icon]=\"'c8y-tools'\" [label]=\"'Configuration' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'Data point library' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<c8y-action-bar-item [placement]=\"'right'\" *c8yIfAllowed=\"['ROLE_INVENTORY_ADMIN']\" [priority]=\"1\">\n <button (click)=\"addDatapointEntry()\" class=\"btn btn-link\" [title]=\"'Add data point' | translate\">\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add data point' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\" [priority]=\"0\">\n <button\n (click)=\"reload()\"\n class=\"btn btn-link\"\n [disabled]=\"isLoading\"\n [title]=\"'Reload' | translate\"\n type=\"button\"\n >\n <i c8yIcon=\"refresh\" [ngClass]=\"{ 'icon-spin': isLoading }\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\" itemClass=\"navbar-form hidden-xs\">\n <c8y-list-display-switch\n (onListClassChange)=\"listClass = $event\"\n [listLength]=\"(datapoints$ | async)?.data?.length\"\n ></c8y-list-display-switch>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/users-guide/cockpit/#data-point-library\"></c8y-help>\n\n<!-- empty state\n-->\n<c8y-ui-empty-state\n *ngIf=\"(datapoints$ | async)?.data?.length === 0\"\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points to display.' | translate\"\n [subtitle]=\"'Add a data point using the button below.' | translate\"\n>\n <p>\n <button\n (click)=\"addDatapointEntry()\"\n class=\"btn btn-primary\"\n [title]=\"'Add data point' | translate\"\n type=\"button\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add data point' | translate }}\n </button>\n </p>\n</c8y-ui-empty-state>\n\n<!-- loading indicator -->\n<div *ngIf=\"isLoading\" class=\"d-flex j-c-center\">\n <c8y-loading></c8y-loading>\n</div>\n\n<div\n class=\"card-group\"\n [ngClass]=\"listClass\"\n *ngIf=\"!isLoading && (datapoints$ | async) as datapoints\"\n>\n <div class=\"page-sticky-header hidden-xs\" *ngIf=\"datapoints.data.length\">\n <div class=\"d-flex\">\n <div class=\"card-header\">\n <div class=\"card-icon\"></div>\n <p translate>Label</p>\n </div>\n <div class=\"card-actions\"></div>\n <div class=\"card-block p-l-0\">\n <div class=\"col-sm-3 p-l-16\">\n <p translate>Fragment</p>\n </div>\n <div class=\"col-sm-2\">\n <p translate>Series</p>\n </div>\n <div class=\"col-sm-1\">\n <span translate>Unit</span>\n </div>\n <div class=\"col-sm-2\">\n <span translate>Target</span>\n </div>\n <div class=\"col-sm-4\">\n <span translate>Range</span>\n </div>\n </div>\n </div>\n </div>\n <div\n *c8yFor=\"let datapoint of datapoints; loadMore: 'hidden'; pipe: parsePipe\"\n class=\"col-sm-6 col-md-4 col-lg-3 col-xs-12\"\n >\n <div class=\"card pointer\" (click)=\"editDatapointEntry(datapoint)\">\n <div class=\"card-actions\" (click)=\"$event.stopPropagation()\">\n <div class=\"dropdown settings pull-right\" dropdown #datapointOptionsDropdown=\"bs-dropdown\" [cdkTrapFocus]=\"datapointOptionsDropdown.isOpen\">\n <button\n [title]=\"'Actions' | translate\"\n type=\"button\"\n class=\"dropdown-toggle c8y-dropdown\"\n dropdownToggle\n >\n <i c8yIcon=\"ellipsis-v\"></i>\n </button>\n <ul class=\"dropdown-menu\" *dropdownMenu>\n <li>\n <button\n [title]=\"'Edit' | translate\"\n type=\"button\"\n (click)=\"editDatapointEntry(datapoint)\"\n >\n <i c8yIcon=\"pencil\"></i>\n {{ 'Edit' | translate }}\n </button>\n </li>\n <li>\n <button\n [title]=\"'Remove' | translate\"\n type=\"button\"\n (click)=\"removeDatapointEntry(datapoint)\"\n >\n <i c8yIcon=\"delete\"></i>\n {{ 'Remove' | translate }}\n </button>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"card-header separator\">\n <div class=\"card-icon\">\n <i c8yIcon=\"circle\" [style.color]=\"datapoint.c8y_Kpi?.color\"></i>\n </div>\n <div class=\"card-title text-truncate\" [title]=\"datapoint.c8y_Kpi?.label\">\n {{ datapoint.c8y_Kpi?.label }}\n </div>\n </div>\n <div class=\"card-block bg-level-1 p-b-24 card-hidden-list\">\n <div class=\"col-sm-3 col-md-2\">\n <c8y-range-display [config]=\"datapoint.c8y_Kpi\" [display]=\"'compact'\"></c8y-range-display>\n </div>\n </div>\n <div class=\"card-block\">\n <div class=\"col-sm-3 text-truncate\">\n <span>\n <label class=\"text-label-small m-r-4\" translate>Fragment</label>\n <span [title]=\"datapoint.c8y_Kpi?.fragment\">\n {{ datapoint.c8y_Kpi?.fragment }}\n </span>\n </span>\n </div>\n <div class=\"col-sm-2 text-truncate\">\n <label class=\"text-label-small m-r-4\" translate>Series</label>\n <span [title]=\"datapoint.c8y_Kpi?.series\">\n {{ datapoint.c8y_Kpi?.series }}\n </span>\n </div>\n <div class=\"col-sm-1 text-truncate card-hidden-grid\">\n <span *ngIf=\"datapoint.c8y_Kpi?.unit\">\n <label class=\"text-label-small m-r-4\" translate>Unit</label>\n <span [title]=\"datapoint.c8y_Kpi?.unit\">\n {{ datapoint.c8y_Kpi?.unit }}\n </span>\n </span>\n </div>\n <div class=\"col-sm-2 text-truncate\">\n <span *ngIf=\"datapoint.c8y_Kpi?.target\">\n <label class=\"text-label-small m-r-4\" translate>Target</label>\n <span [title]=\"datapoint.c8y_Kpi?.target\">\n {{ datapoint.c8y_Kpi?.target }}\n </span>\n </span>\n </div>\n <div class=\"col-sm-4 card-hidden-grid\">\n <c8y-range-display [config]=\"datapoint.c8y_Kpi\" [display]=\"'inline'\"></c8y-range-display>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
70
+ }], ctorParameters: function () { return [{ type: i1.InventoryService }, { type: i2.Router }, { type: i3.ModalService }, { type: i4.TranslateService }, { type: i3.AlertService }, { type: i5.DatapointParserService }]; } });
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LWxpYnJhcnktbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9kYXRhcG9pbnQtbGlicmFyeS9kYXRhcG9pbnQtbGlicmFyeS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2RhdGFwb2ludC1saWJyYXJ5L2RhdGFwb2ludC1saWJyYXJ5LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFrQixnQkFBZ0IsRUFBZSxNQUFNLGFBQWEsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7Ozs7Ozs7Ozs7QUFNeEYsTUFBTSxPQUFPLDZCQUE2QjtJQWlCeEMsWUFDVSxTQUEyQixFQUMzQixNQUFjLEVBQ2QsWUFBMEIsRUFDMUIsZ0JBQWtDLEVBQ2xDLFlBQTBCLEVBQzFCLE1BQThCO1FBTDlCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFdBQU0sR0FBTixNQUFNLENBQXdCO1FBdEJ4QyxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixZQUFPLEdBQTBCLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNELGdCQUFXLEdBQTRDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUN0RSxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDeEIsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxFQUNyQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDekIsQ0FBQyxDQUFDLEVBQ0YsV0FBVyxFQUFFLENBQ2QsQ0FBQztRQUVGLGNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBc0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBU2xGLENBQUM7SUFFSixhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFxQjtRQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxLQUFLLENBQUMsb0JBQW9CLENBQUMsS0FBcUI7UUFDOUMsSUFBSTtZQUNGLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQzdCLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxFQUM1QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUMzQixPQUFPLENBQUMsNkVBQTZFLENBQUMsRUFDdEYsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FDakMsRUFDRCxRQUFRLENBQ1QsQ0FBQztTQUNIO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPO1NBQ1I7UUFDRCxJQUFJO1lBQ0YsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNyQjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDOzswSEE3RFUsNkJBQTZCOzhHQUE3Qiw2QkFBNkIsa0VDZDFDLDQ0TUF5TEE7MkZEM0thLDZCQUE2QjtrQkFKekMsU0FBUzsrQkFDRSw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSwgSVJlc3VsdExpc3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UsIGdldHRleHQsIE1vZGFsU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBwaXBlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHBhdGhUb0RhdGFwb2ludExpYnJhcnkgfSBmcm9tICcuL2RhdGFwb2ludC1saWJyYXJ5Lm1vZGVsJztcbmltcG9ydCB7IERhdGFwb2ludFBhcnNlclNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2RhdGFwb2ludC1saWJyYXJ5L3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRhdGFwb2ludC1saWJyYXJ5LWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YXBvaW50LWxpYnJhcnktbGlzdC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGF0YXBvaW50TGlicmFyeUxpc3RDb21wb25lbnQge1xuICBsaXN0Q2xhc3MgPSAnJztcbiAgaXNMb2FkaW5nID0gdHJ1ZTtcbiAgcmVsb2FkJDogQmVoYXZpb3JTdWJqZWN0PHZvaWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgZGF0YXBvaW50cyQ6IE9ic2VydmFibGU8SVJlc3VsdExpc3Q8SU1hbmFnZWRPYmplY3Q+PiA9IHRoaXMucmVsb2FkJC5waXBlKFxuICAgIHRhcCgoKSA9PiB7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgfSksXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZ2V0RGF0YXBvaW50cygpKSxcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgpXG4gICk7XG5cbiAgcGFyc2VQaXBlID0gcGlwZShtYXAoKGRhdGE6IElNYW5hZ2VkT2JqZWN0W10pID0+IHRoaXMucGFyc2VyLnBhcnNlRGF0YXBvaW50cyhkYXRhKSkpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW52ZW50b3J5OiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHBhcnNlcjogRGF0YXBvaW50UGFyc2VyU2VydmljZVxuICApIHt9XG5cbiAgZ2V0RGF0YXBvaW50cygpOiBQcm9taXNlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj4ge1xuICAgIHJldHVybiB0aGlzLmludmVudG9yeS5saXN0KHsgcGFnZVNpemU6IDIwLCBmcmFnbWVudFR5cGU6ICdjOHlfS3BpJywgd2l0aFRvdGFsUGFnZXM6IHRydWUgfSk7XG4gIH1cblxuICBhZGREYXRhcG9pbnRFbnRyeSgpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcGF0aFRvRGF0YXBvaW50TGlicmFyeSwgJ25ldyddKTtcbiAgfVxuXG4gIGVkaXREYXRhcG9pbnRFbnRyeShlbnRyeTogSU1hbmFnZWRPYmplY3QpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcGF0aFRvRGF0YXBvaW50TGlicmFyeSwgZW50cnkuaWRdKTtcbiAgfVxuXG4gIGFzeW5jIHJlbW92ZURhdGFwb2ludEVudHJ5KGVudHJ5OiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm1vZGFsU2VydmljZS5jb25maXJtKFxuICAgICAgICBnZXR0ZXh0KCdEZWxldGUgZGF0YSBwb2ludCcpLFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICBnZXR0ZXh0KCdZb3UgYXJlIGFib3V0IHRvIGRlbGV0ZSBkYXRhIHBvaW50IFwie3sgZHBMYWJlbCB9fVwiLiBEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycpLFxuICAgICAgICAgIHsgZHBMYWJlbDogZW50cnkuYzh5X0twaS5sYWJlbCB9XG4gICAgICAgICksXG4gICAgICAgICdkYW5nZXInXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuaW52ZW50b3J5LmRlbGV0ZShlbnRyeS5pZCk7XG4gICAgICB0aGlzLnJlbG9hZCQubmV4dCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZSk7XG4gICAgfVxuICB9XG5cbiAgcmVsb2FkKCkge1xuICAgIHRoaXMucmVsb2FkJC5uZXh0KCk7XG4gIH1cbn1cbiIsIjxjOHktdGl0bGU+RGF0YSBwb2ludCBsaWJyYXJ5PC9jOHktdGl0bGU+XG48Yzh5LWJyZWFkY3J1bWI+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtIFtpY29uXT1cIidjOHktdG9vbHMnXCIgW2xhYmVsXT1cIidDb25maWd1cmF0aW9uJyB8IHRyYW5zbGF0ZVwiPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCInYzh5LXRvb2xzJ1wiXG4gICAgW2xhYmVsXT1cIidEYXRhIHBvaW50IGxpYnJhcnknIHwgdHJhbnNsYXRlXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbjwvYzh5LWJyZWFkY3J1bWI+XG48Yzh5LWFjdGlvbi1iYXItaXRlbSBbcGxhY2VtZW50XT1cIidyaWdodCdcIiAqYzh5SWZBbGxvd2VkPVwiWydST0xFX0lOVkVOVE9SWV9BRE1JTiddXCIgW3ByaW9yaXR5XT1cIjFcIj5cbiAgPGJ1dHRvbiAoY2xpY2spPVwiYWRkRGF0YXBvaW50RW50cnkoKVwiIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCIgW3RpdGxlXT1cIidBZGQgZGF0YSBwb2ludCcgfCB0cmFuc2xhdGVcIj5cbiAgICA8aSBjOHlJY29uPVwicGx1cy1jaXJjbGVcIj48L2k+XG4gICAge3sgJ0FkZCBkYXRhIHBvaW50JyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW0gW3BsYWNlbWVudF09XCIncmlnaHQnXCIgW3ByaW9yaXR5XT1cIjBcIj5cbiAgPGJ1dHRvblxuICAgIChjbGljayk9XCJyZWxvYWQoKVwiXG4gICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIlxuICAgIFtkaXNhYmxlZF09XCJpc0xvYWRpbmdcIlxuICAgIFt0aXRsZV09XCInUmVsb2FkJyB8IHRyYW5zbGF0ZVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwicmVmcmVzaFwiIFtuZ0NsYXNzXT1cInsgJ2ljb24tc3Bpbic6IGlzTG9hZGluZyB9XCI+PC9pPlxuICAgIHt7ICdSZWxvYWQnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbSBbcGxhY2VtZW50XT1cIidsZWZ0J1wiIGl0ZW1DbGFzcz1cIm5hdmJhci1mb3JtIGhpZGRlbi14c1wiPlxuICA8Yzh5LWxpc3QtZGlzcGxheS1zd2l0Y2hcbiAgICAob25MaXN0Q2xhc3NDaGFuZ2UpPVwibGlzdENsYXNzID0gJGV2ZW50XCJcbiAgICBbbGlzdExlbmd0aF09XCIoZGF0YXBvaW50cyQgfCBhc3luYyk/LmRhdGE/Lmxlbmd0aFwiXG4gID48L2M4eS1saXN0LWRpc3BsYXktc3dpdGNoPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWhlbHAgc3JjPVwiL3VzZXJzLWd1aWRlL2NvY2twaXQvI2RhdGEtcG9pbnQtbGlicmFyeVwiPjwvYzh5LWhlbHA+XG5cbjwhLS0gZW1wdHkgc3RhdGVcbi0tPlxuPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAqbmdJZj1cIihkYXRhcG9pbnRzJCB8IGFzeW5jKT8uZGF0YT8ubGVuZ3RoID09PSAwXCJcbiAgW2ljb25dPVwiJ2M4eS1kYXRhLXBvaW50cydcIlxuICBbdGl0bGVdPVwiJ05vIGRhdGEgcG9pbnRzIHRvIGRpc3BsYXkuJyB8IHRyYW5zbGF0ZVwiXG4gIFtzdWJ0aXRsZV09XCInQWRkIGEgZGF0YSBwb2ludCB1c2luZyB0aGUgYnV0dG9uIGJlbG93LicgfCB0cmFuc2xhdGVcIlxuPlxuICA8cD5cbiAgICA8YnV0dG9uXG4gICAgICAoY2xpY2spPVwiYWRkRGF0YXBvaW50RW50cnkoKVwiXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICBbdGl0bGVdPVwiJ0FkZCBkYXRhIHBvaW50JyB8IHRyYW5zbGF0ZVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICA+XG4gICAgICA8aSBjOHlJY29uPVwicGx1cy1jaXJjbGVcIj48L2k+XG4gICAgICB7eyAnQWRkIGRhdGEgcG9pbnQnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvcD5cbjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuXG48IS0tIGxvYWRpbmcgaW5kaWNhdG9yIC0tPlxuPGRpdiAqbmdJZj1cImlzTG9hZGluZ1wiIGNsYXNzPVwiZC1mbGV4IGotYy1jZW50ZXJcIj5cbiAgPGM4eS1sb2FkaW5nPjwvYzh5LWxvYWRpbmc+XG48L2Rpdj5cblxuPGRpdlxuICBjbGFzcz1cImNhcmQtZ3JvdXBcIlxuICBbbmdDbGFzc109XCJsaXN0Q2xhc3NcIlxuICAqbmdJZj1cIiFpc0xvYWRpbmcgJiYgKGRhdGFwb2ludHMkIHwgYXN5bmMpIGFzIGRhdGFwb2ludHNcIlxuPlxuICA8ZGl2IGNsYXNzPVwicGFnZS1zdGlja3ktaGVhZGVyIGhpZGRlbi14c1wiICpuZ0lmPVwiZGF0YXBvaW50cy5kYXRhLmxlbmd0aFwiPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1pY29uXCI+PC9kaXY+XG4gICAgICAgIDxwIHRyYW5zbGF0ZT5MYWJlbDwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYWN0aW9uc1wiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgcC1sLTBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0zIHAtbC0xNlwiPlxuICAgICAgICAgIDxwIHRyYW5zbGF0ZT5GcmFnbWVudDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMlwiPlxuICAgICAgICAgIDxwIHRyYW5zbGF0ZT5TZXJpZXM8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTFcIj5cbiAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+VW5pdDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMlwiPlxuICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5UYXJnZXQ8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTRcIj5cbiAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+UmFuZ2U8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgKmM4eUZvcj1cImxldCBkYXRhcG9pbnQgb2YgZGF0YXBvaW50czsgbG9hZE1vcmU6ICdoaWRkZW4nOyBwaXBlOiBwYXJzZVBpcGVcIlxuICAgIGNsYXNzPVwiY29sLXNtLTYgY29sLW1kLTQgY29sLWxnLTMgY29sLXhzLTEyXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIHBvaW50ZXJcIiAoY2xpY2spPVwiZWRpdERhdGFwb2ludEVudHJ5KGRhdGFwb2ludClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWFjdGlvbnNcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93biBzZXR0aW5ncyBwdWxsLXJpZ2h0XCIgZHJvcGRvd24gI2RhdGFwb2ludE9wdGlvbnNEcm9wZG93bj1cImJzLWRyb3Bkb3duXCIgW2Nka1RyYXBGb2N1c109XCJkYXRhcG9pbnRPcHRpb25zRHJvcGRvd24uaXNPcGVuXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgW3RpdGxlXT1cIidBY3Rpb25zJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tdG9nZ2xlIGM4eS1kcm9wZG93blwiXG4gICAgICAgICAgICBkcm9wZG93blRvZ2dsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGM4eUljb249XCJlbGxpcHNpcy12XCI+PC9pPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDx1bCBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiAqZHJvcGRvd25NZW51PlxuICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidFZGl0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImVkaXREYXRhcG9pbnRFbnRyeShkYXRhcG9pbnQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJwZW5jaWxcIj48L2k+XG4gICAgICAgICAgICAgICAge3sgJ0VkaXQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCInUmVtb3ZlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZURhdGFwb2ludEVudHJ5KGRhdGFwb2ludClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cImRlbGV0ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICB7eyAnUmVtb3ZlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1pY29uXCI+XG4gICAgICAgICAgPGkgYzh5SWNvbj1cImNpcmNsZVwiIFtzdHlsZS5jb2xvcl09XCJkYXRhcG9pbnQuYzh5X0twaT8uY29sb3JcIj48L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSB0ZXh0LXRydW5jYXRlXCIgW3RpdGxlXT1cImRhdGFwb2ludC5jOHlfS3BpPy5sYWJlbFwiPlxuICAgICAgICAgIHt7IGRhdGFwb2ludC5jOHlfS3BpPy5sYWJlbCB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgYmctbGV2ZWwtMSBwLWItMjQgY2FyZC1oaWRkZW4tbGlzdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTMgY29sLW1kLTJcIj5cbiAgICAgICAgICA8Yzh5LXJhbmdlLWRpc3BsYXkgW2NvbmZpZ109XCJkYXRhcG9pbnQuYzh5X0twaVwiIFtkaXNwbGF5XT1cIidjb21wYWN0J1wiPjwvYzh5LXJhbmdlLWRpc3BsYXk+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9ja1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTMgdGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbCBtLXItNFwiIHRyYW5zbGF0ZT5GcmFnbWVudDwvbGFiZWw+XG4gICAgICAgICAgICA8c3BhbiBbdGl0bGVdPVwiZGF0YXBvaW50LmM4eV9LcGk/LmZyYWdtZW50XCI+XG4gICAgICAgICAgICAgIHt7IGRhdGFwb2ludC5jOHlfS3BpPy5mcmFnbWVudCB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMiB0ZXh0LXRydW5jYXRlXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbCBtLXItNFwiIHRyYW5zbGF0ZT5TZXJpZXM8L2xhYmVsPlxuICAgICAgICAgIDxzcGFuIFt0aXRsZV09XCJkYXRhcG9pbnQuYzh5X0twaT8uc2VyaWVzXCI+XG4gICAgICAgICAgICB7eyBkYXRhcG9pbnQuYzh5X0twaT8uc2VyaWVzIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xIHRleHQtdHJ1bmNhdGUgY2FyZC1oaWRkZW4tZ3JpZFwiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF0YXBvaW50LmM4eV9LcGk/LnVuaXRcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRleHQtbGFiZWwtc21hbGwgbS1yLTRcIiB0cmFuc2xhdGU+VW5pdDwvbGFiZWw+XG4gICAgICAgICAgICA8c3BhbiBbdGl0bGVdPVwiZGF0YXBvaW50LmM4eV9LcGk/LnVuaXRcIj5cbiAgICAgICAgICAgICAge3sgZGF0YXBvaW50LmM4eV9LcGk/LnVuaXQgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTIgdGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF0YXBvaW50LmM4eV9LcGk/LnRhcmdldFwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbCBtLXItNFwiIHRyYW5zbGF0ZT5UYXJnZXQ8L2xhYmVsPlxuICAgICAgICAgICAgPHNwYW4gW3RpdGxlXT1cImRhdGFwb2ludC5jOHlfS3BpPy50YXJnZXRcIj5cbiAgICAgICAgICAgICAge3sgZGF0YXBvaW50LmM4eV9LcGk/LnRhcmdldCB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNCBjYXJkLWhpZGRlbi1ncmlkXCI+XG4gICAgICAgICAgPGM4eS1yYW5nZS1kaXNwbGF5IFtjb25maWddPVwiZGF0YXBvaW50LmM4eV9LcGlcIiBbZGlzcGxheV09XCInaW5saW5lJ1wiPjwvYzh5LXJhbmdlLWRpc3BsYXk+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYzh5LW5neC1jb21wb25lbnRzLWRhdGFwb2ludC1saWJyYXJ5LXNlcnZpY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZGF0YXBvaW50LWxpYnJhcnkvc2VydmljZXMvYzh5LW5neC1jb21wb25lbnRzLWRhdGFwb2ludC1saWJyYXJ5LXNlcnZpY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,43 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class DatapointParserService {
4
+ constructor() {
5
+ this.attributeToParse = [
6
+ 'target',
7
+ 'yellowRangeMin',
8
+ 'yellowRangeMax',
9
+ 'redRangeMin',
10
+ 'redRangeMax',
11
+ 'min',
12
+ 'max'
13
+ ];
14
+ }
15
+ parseDatapoints(datapoints) {
16
+ return datapoints.map(dp => this.parseDatapoint(dp));
17
+ }
18
+ parseDatapoint(datapoint) {
19
+ if (!datapoint.c8y_Kpi) {
20
+ return datapoint;
21
+ }
22
+ const kpi = datapoint.c8y_Kpi;
23
+ for (const key of this.attributeToParse) {
24
+ if (typeof kpi[key] === 'string') {
25
+ const num = Number.parseFloat(kpi[key]);
26
+ if (!Number.isNaN(num)) {
27
+ kpi[key] = num;
28
+ }
29
+ else {
30
+ delete kpi[key];
31
+ }
32
+ }
33
+ }
34
+ return datapoint;
35
+ }
36
+ }
37
+ DatapointParserService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatapointParserService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
38
+ DatapointParserService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatapointParserService, providedIn: 'root' });
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatapointParserService, decorators: [{
40
+ type: Injectable,
41
+ args: [{ providedIn: 'root' }]
42
+ }] });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LXBhcnNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZGF0YXBvaW50LWxpYnJhcnkvc2VydmljZXMvZGF0YXBvaW50LXBhcnNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSTNDLE1BQU0sT0FBTyxzQkFBc0I7SUFEbkM7UUFFcUIscUJBQWdCLEdBQUc7WUFDcEMsUUFBUTtZQUNSLGdCQUFnQjtZQUNoQixnQkFBZ0I7WUFDaEIsYUFBYTtZQUNiLGFBQWE7WUFDYixLQUFLO1lBQ0wsS0FBSztTQUNHLENBQUM7S0F5Qlo7SUF2QkMsZUFBZSxDQUFDLFVBQTRCO1FBQzFDLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsY0FBYyxDQUFDLFNBQXlCO1FBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFO1lBQ3RCLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBRUQsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUM5QixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2QyxJQUFJLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsRUFBRTtnQkFDaEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ3RCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7aUJBQ2hCO3FCQUFNO29CQUNMLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNqQjthQUNGO1NBQ0Y7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDOzttSEFqQ1Usc0JBQXNCO3VIQUF0QixzQkFBc0IsY0FEVCxNQUFNOzJGQUNuQixzQkFBc0I7a0JBRGxDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgRGF0YXBvaW50UGFyc2VyU2VydmljZSB7XG4gIHByb3RlY3RlZCByZWFkb25seSBhdHRyaWJ1dGVUb1BhcnNlID0gW1xuICAgICd0YXJnZXQnLFxuICAgICd5ZWxsb3dSYW5nZU1pbicsXG4gICAgJ3llbGxvd1JhbmdlTWF4JyxcbiAgICAncmVkUmFuZ2VNaW4nLFxuICAgICdyZWRSYW5nZU1heCcsXG4gICAgJ21pbicsXG4gICAgJ21heCdcbiAgXSBhcyBjb25zdDtcblxuICBwYXJzZURhdGFwb2ludHMoZGF0YXBvaW50czogSU1hbmFnZWRPYmplY3RbXSkge1xuICAgIHJldHVybiBkYXRhcG9pbnRzLm1hcChkcCA9PiB0aGlzLnBhcnNlRGF0YXBvaW50KGRwKSk7XG4gIH1cblxuICBwYXJzZURhdGFwb2ludChkYXRhcG9pbnQ6IElNYW5hZ2VkT2JqZWN0KTogSU1hbmFnZWRPYmplY3Qge1xuICAgIGlmICghZGF0YXBvaW50LmM4eV9LcGkpIHtcbiAgICAgIHJldHVybiBkYXRhcG9pbnQ7XG4gICAgfVxuXG4gICAgY29uc3Qga3BpID0gZGF0YXBvaW50LmM4eV9LcGk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgdGhpcy5hdHRyaWJ1dGVUb1BhcnNlKSB7XG4gICAgICBpZiAodHlwZW9mIGtwaVtrZXldID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCBudW0gPSBOdW1iZXIucGFyc2VGbG9hdChrcGlba2V5XSk7XG4gICAgICAgIGlmICghTnVtYmVyLmlzTmFOKG51bSkpIHtcbiAgICAgICAgICBrcGlba2V5XSA9IG51bTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWxldGUga3BpW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YXBvaW50O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './datapoint-parser.service';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9kYXRhcG9pbnQtbGlicmFyeS9zZXJ2aWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kYXRhcG9pbnQtcGFyc2VyLnNlcnZpY2UnO1xuIl19
@@ -0,0 +1,50 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable } from '@angular/core';
3
+
4
+ class DatapointParserService {
5
+ constructor() {
6
+ this.attributeToParse = [
7
+ 'target',
8
+ 'yellowRangeMin',
9
+ 'yellowRangeMax',
10
+ 'redRangeMin',
11
+ 'redRangeMax',
12
+ 'min',
13
+ 'max'
14
+ ];
15
+ }
16
+ parseDatapoints(datapoints) {
17
+ return datapoints.map(dp => this.parseDatapoint(dp));
18
+ }
19
+ parseDatapoint(datapoint) {
20
+ if (!datapoint.c8y_Kpi) {
21
+ return datapoint;
22
+ }
23
+ const kpi = datapoint.c8y_Kpi;
24
+ for (const key of this.attributeToParse) {
25
+ if (typeof kpi[key] === 'string') {
26
+ const num = Number.parseFloat(kpi[key]);
27
+ if (!Number.isNaN(num)) {
28
+ kpi[key] = num;
29
+ }
30
+ else {
31
+ delete kpi[key];
32
+ }
33
+ }
34
+ }
35
+ return datapoint;
36
+ }
37
+ }
38
+ DatapointParserService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatapointParserService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
39
+ DatapointParserService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatapointParserService, providedIn: 'root' });
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatapointParserService, decorators: [{
41
+ type: Injectable,
42
+ args: [{ providedIn: 'root' }]
43
+ }] });
44
+
45
+ /**
46
+ * Generated bundle index. Do not edit.
47
+ */
48
+
49
+ export { DatapointParserService };
50
+ //# sourceMappingURL=c8y-ngx-components-datapoint-library-services.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"c8y-ngx-components-datapoint-library-services.mjs","sources":["../../datapoint-library/services/datapoint-parser.service.ts","../../datapoint-library/services/c8y-ngx-components-datapoint-library-services.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\n\n@Injectable({ providedIn: 'root' })\nexport class DatapointParserService {\n protected readonly attributeToParse = [\n 'target',\n 'yellowRangeMin',\n 'yellowRangeMax',\n 'redRangeMin',\n 'redRangeMax',\n 'min',\n 'max'\n ] as const;\n\n parseDatapoints(datapoints: IManagedObject[]) {\n return datapoints.map(dp => this.parseDatapoint(dp));\n }\n\n parseDatapoint(datapoint: IManagedObject): IManagedObject {\n if (!datapoint.c8y_Kpi) {\n return datapoint;\n }\n\n const kpi = datapoint.c8y_Kpi;\n for (const key of this.attributeToParse) {\n if (typeof kpi[key] === 'string') {\n const num = Number.parseFloat(kpi[key]);\n if (!Number.isNaN(num)) {\n kpi[key] = num;\n } else {\n delete kpi[key];\n }\n }\n }\n\n return datapoint;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAIa,sBAAsB,CAAA;AADnC,IAAA,WAAA,GAAA;QAEqB,IAAA,CAAA,gBAAgB,GAAG;YACpC,QAAQ;YACR,gBAAgB;YAChB,gBAAgB;YAChB,aAAa;YACb,aAAa;YACb,KAAK;YACL,KAAK;SACG,CAAC;KAyBZ;AAvBC,IAAA,eAAe,CAAC,UAA4B,EAAA;AAC1C,QAAA,OAAO,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;KACtD;AAED,IAAA,cAAc,CAAC,SAAyB,EAAA;AACtC,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AACtB,YAAA,OAAO,SAAS,CAAC;AAClB,SAAA;AAED,QAAA,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC;AAC9B,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvC,YAAA,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;gBAChC,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AACtB,oBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAChB,iBAAA;AAAM,qBAAA;AACL,oBAAA,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;AACjB,iBAAA;AACF,aAAA;AACF,SAAA;AAED,QAAA,OAAO,SAAS,CAAC;KAClB;;mHAjCU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cADT,MAAM,EAAA,CAAA,CAAA;2FACnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;ACHlC;;AAEG;;;;"}