@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
40 lines • 12.1 kB
JavaScript
import { Component, Input } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { RouterModule } from '@angular/router';
import { CoreModule } from '@c8y/ngx-components';
import { TrackingService } from './tracking.service';
import * as i0 from "@angular/core";
import * as i1 from "./tracking.service";
import * as i2 from "@c8y/ngx-components";
import * as i3 from "@angular/common";
import * as i4 from "@angular/router";
export class TrackingMarkerPopupComponent {
constructor(trackingService) {
this.trackingService = trackingService;
/**
* Displays link to device tracking tab.
*/
this.showTrackingLink = false;
}
async ngOnInit() {
this.isDevice = !this.trackingService.isLocationUpdateEvent(this.context);
if (this.isDevice) {
this.trackingService.setDeviceId(this.context.id);
this.date = await this.trackingService.latestPositionUpdate(this.context);
}
else {
this.date = this.context.time;
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TrackingMarkerPopupComponent, deps: [{ token: i1.TrackingService }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TrackingMarkerPopupComponent, isStandalone: true, selector: "c8y-tracking-marker-popup", inputs: { context: "context", showTrackingLink: "showTrackingLink" }, ngImport: i0, template: "<div class=\"map-marker\">\n <a\n class=\"text-truncate text-14 text-medium p-0 m-b-8 deviceLink\"\n [title]=\"context?.name\"\n *ngIf=\"isDevice\"\n [routerLink]=\"['/device/', context?.id]\"\n >\n {{ context?.name }}\n </a>\n <div\n class=\"m-b-8\"\n ng-if=\"lastUpdated\"\n >\n <p class=\"m-0\">{{ 'Position:' | translate }}</p>\n <div class=\"text-muted\">\n <p class=\"m-b-0\">{{ context?.c8y_Position?.lat }},</p>\n <p class=\"m-t-0\">{{ context?.c8y_Position?.lng }}</p>\n </div>\n @if (!!context?.c8y_Position?.alt || context?.c8y_Position?.alt === 0) {\n <p class=\"m-0\">{{ 'Altitude:' | translate }}</p>\n <div class=\"text-muted\">\n <p\n class=\"m-b-0\"\n [translate]=\"'{{alt}} m`meters, altitude`'\"\n [translateParams]=\"{ alt: context?.c8y_Position?.alt }\"\n ></p>\n </div>\n }\n @if (!!date) {\n <p class=\"m-0 p-t-4\">{{ 'Date and time:' | translate }}</p>\n <span class=\"text-muted\">{{ date | c8yDate }}</span>\n }\n </div>\n\n @if (isDevice) {\n @if (showTrackingLink) {\n <span>\n Go to\n <a [routerLink]=\"['/device', context?.id, 'tracking']\">Tracking</a>\n </span>\n } @else {\n <div class=\"d-flex a-i-center\">\n <label\n class=\"c8y-switch\"\n for=\"switch\"\n >\n <input\n id=\"switch\"\n type=\"checkbox\"\n [checked]=\"trackingService.trackVisible\"\n (change)=\"trackingService.toggleTrack()\"\n />\n <span></span>\n </label>\n <div class=\"description p-b-0\">\n {{ 'Show track' | translate }}\n </div>\n </div>\n }\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.DatePipe, name: "c8yDate" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: FormsModule }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TrackingMarkerPopupComponent, decorators: [{
type: Component,
args: [{ standalone: true, selector: 'c8y-tracking-marker-popup', imports: [CoreModule, RouterModule, FormsModule], template: "<div class=\"map-marker\">\n <a\n class=\"text-truncate text-14 text-medium p-0 m-b-8 deviceLink\"\n [title]=\"context?.name\"\n *ngIf=\"isDevice\"\n [routerLink]=\"['/device/', context?.id]\"\n >\n {{ context?.name }}\n </a>\n <div\n class=\"m-b-8\"\n ng-if=\"lastUpdated\"\n >\n <p class=\"m-0\">{{ 'Position:' | translate }}</p>\n <div class=\"text-muted\">\n <p class=\"m-b-0\">{{ context?.c8y_Position?.lat }},</p>\n <p class=\"m-t-0\">{{ context?.c8y_Position?.lng }}</p>\n </div>\n @if (!!context?.c8y_Position?.alt || context?.c8y_Position?.alt === 0) {\n <p class=\"m-0\">{{ 'Altitude:' | translate }}</p>\n <div class=\"text-muted\">\n <p\n class=\"m-b-0\"\n [translate]=\"'{{alt}} m`meters, altitude`'\"\n [translateParams]=\"{ alt: context?.c8y_Position?.alt }\"\n ></p>\n </div>\n }\n @if (!!date) {\n <p class=\"m-0 p-t-4\">{{ 'Date and time:' | translate }}</p>\n <span class=\"text-muted\">{{ date | c8yDate }}</span>\n }\n </div>\n\n @if (isDevice) {\n @if (showTrackingLink) {\n <span>\n Go to\n <a [routerLink]=\"['/device', context?.id, 'tracking']\">Tracking</a>\n </span>\n } @else {\n <div class=\"d-flex a-i-center\">\n <label\n class=\"c8y-switch\"\n for=\"switch\"\n >\n <input\n id=\"switch\"\n type=\"checkbox\"\n [checked]=\"trackingService.trackVisible\"\n (change)=\"trackingService.toggleTrack()\"\n />\n <span></span>\n </label>\n <div class=\"description p-b-0\">\n {{ 'Show track' | translate }}\n </div>\n </div>\n }\n }\n</div>\n" }]
}], ctorParameters: () => [{ type: i1.TrackingService }], propDecorators: { context: [{
type: Input
}], showTrackingLink: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2tpbmctbWFya2VyLXBvcHVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RyYWNraW5nL3RyYWNraW5nLW1hcmtlci1wb3B1cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi90cmFja2luZy90cmFja2luZy1tYXJrZXItcG9wdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7QUFRckQsTUFBTSxPQUFPLDRCQUE0QjtJQWF2QyxZQUFtQixlQUFnQztRQUFoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFUbkQ7O1dBRUc7UUFFSCxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFLNkIsQ0FBQztJQUV2RCxLQUFLLENBQUMsUUFBUTtRQUNaLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUE0QixDQUFDLENBQUM7UUFDL0YsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FDekQsSUFBSSxDQUFDLE9BQWdDLENBQ3RDLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7K0dBekJVLDRCQUE0QjttR0FBNUIsNEJBQTRCLDJKQ2R6QywwdURBNkRBLDJDRGpEWSxVQUFVLHdWQUFFLFlBQVksK1FBQUUsV0FBVzs7NEZBRXBDLDRCQUE0QjtrQkFOeEMsU0FBUztpQ0FDSSxJQUFJLFlBQ04sMkJBQTJCLFdBRTVCLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxXQUFXLENBQUM7b0ZBSWhELE9BQU87c0JBRE4sS0FBSztnQkFPTixnQkFBZ0I7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSUV2ZW50IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQ29yZU1vZHVsZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgUG9zaXRpb25NYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9tYXAnO1xuaW1wb3J0IHsgVHJhY2tpbmdTZXJ2aWNlIH0gZnJvbSAnLi90cmFja2luZy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnYzh5LXRyYWNraW5nLW1hcmtlci1wb3B1cCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90cmFja2luZy1tYXJrZXItcG9wdXAuY29tcG9uZW50Lmh0bWwnLFxuICBpbXBvcnRzOiBbQ29yZU1vZHVsZSwgUm91dGVyTW9kdWxlLCBGb3Jtc01vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgVHJhY2tpbmdNYXJrZXJQb3B1cENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIGNvbnRleHQ6IFBvc2l0aW9uTWFuYWdlZE9iamVjdCB8IElFdmVudDtcblxuICAvKipcbiAgICogRGlzcGxheXMgbGluayB0byBkZXZpY2UgdHJhY2tpbmcgdGFiLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2hvd1RyYWNraW5nTGluayA9IGZhbHNlO1xuXG4gIGlzRGV2aWNlOiBib29sZWFuO1xuICBkYXRlOiBEYXRlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0cmFja2luZ1NlcnZpY2U6IFRyYWNraW5nU2VydmljZSkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlzRGV2aWNlID0gIXRoaXMudHJhY2tpbmdTZXJ2aWNlLmlzTG9jYXRpb25VcGRhdGVFdmVudCh0aGlzLmNvbnRleHQgYXMgdW5rbm93biBhcyBJRXZlbnQpO1xuICAgIGlmICh0aGlzLmlzRGV2aWNlKSB7XG4gICAgICB0aGlzLnRyYWNraW5nU2VydmljZS5zZXREZXZpY2VJZCh0aGlzLmNvbnRleHQuaWQpO1xuICAgICAgdGhpcy5kYXRlID0gYXdhaXQgdGhpcy50cmFja2luZ1NlcnZpY2UubGF0ZXN0UG9zaXRpb25VcGRhdGUoXG4gICAgICAgIHRoaXMuY29udGV4dCBhcyBQb3NpdGlvbk1hbmFnZWRPYmplY3RcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0ZSA9IHRoaXMuY29udGV4dC50aW1lO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1hcC1tYXJrZXJcIj5cbiAgPGFcbiAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGUgdGV4dC0xNCB0ZXh0LW1lZGl1bSBwLTAgbS1iLTggZGV2aWNlTGlua1wiXG4gICAgW3RpdGxlXT1cImNvbnRleHQ/Lm5hbWVcIlxuICAgICpuZ0lmPVwiaXNEZXZpY2VcIlxuICAgIFtyb3V0ZXJMaW5rXT1cIlsnL2RldmljZS8nLCBjb250ZXh0Py5pZF1cIlxuICA+XG4gICAge3sgY29udGV4dD8ubmFtZSB9fVxuICA8L2E+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm0tYi04XCJcbiAgICBuZy1pZj1cImxhc3RVcGRhdGVkXCJcbiAgPlxuICAgIDxwIGNsYXNzPVwibS0wXCI+e3sgJ1Bvc2l0aW9uOicgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWRcIj5cbiAgICAgIDxwIGNsYXNzPVwibS1iLTBcIj57eyBjb250ZXh0Py5jOHlfUG9zaXRpb24/LmxhdCB9fSw8L3A+XG4gICAgICA8cCBjbGFzcz1cIm0tdC0wXCI+e3sgY29udGV4dD8uYzh5X1Bvc2l0aW9uPy5sbmcgfX08L3A+XG4gICAgPC9kaXY+XG4gICAgQGlmICghIWNvbnRleHQ/LmM4eV9Qb3NpdGlvbj8uYWx0IHx8IGNvbnRleHQ/LmM4eV9Qb3NpdGlvbj8uYWx0ID09PSAwKSB7XG4gICAgICA8cCBjbGFzcz1cIm0tMFwiPnt7ICdBbHRpdHVkZTonIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWRcIj5cbiAgICAgICAgPHBcbiAgICAgICAgICBjbGFzcz1cIm0tYi0wXCJcbiAgICAgICAgICBbdHJhbnNsYXRlXT1cIid7e2FsdH19IG1gbWV0ZXJzLCBhbHRpdHVkZWAnXCJcbiAgICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cInsgYWx0OiBjb250ZXh0Py5jOHlfUG9zaXRpb24/LmFsdCB9XCJcbiAgICAgICAgPjwvcD5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKCEhZGF0ZSkge1xuICAgICAgPHAgY2xhc3M9XCJtLTAgcC10LTRcIj57eyAnRGF0ZSBhbmQgdGltZTonIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkXCI+e3sgZGF0ZSB8IGM4eURhdGUgfX08L3NwYW4+XG4gICAgfVxuICA8L2Rpdj5cblxuICBAaWYgKGlzRGV2aWNlKSB7XG4gICAgQGlmIChzaG93VHJhY2tpbmdMaW5rKSB7XG4gICAgICA8c3Bhbj5cbiAgICAgICAgR28gdG9cbiAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiWycvZGV2aWNlJywgY29udGV4dD8uaWQsICd0cmFja2luZyddXCI+VHJhY2tpbmc8L2E+XG4gICAgICA8L3NwYW4+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgY2xhc3M9XCJjOHktc3dpdGNoXCJcbiAgICAgICAgICBmb3I9XCJzd2l0Y2hcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBpZD1cInN3aXRjaFwiXG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwidHJhY2tpbmdTZXJ2aWNlLnRyYWNrVmlzaWJsZVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cInRyYWNraW5nU2VydmljZS50b2dnbGVUcmFjaygpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uIHAtYi0wXCI+XG4gICAgICAgICAge3sgJ1Nob3cgdHJhY2snIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICB9XG48L2Rpdj5cbiJdfQ==