@c8y/ngx-components 1018.503.45 → 1018.503.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.
- package/context-dashboard/add-dashboard.factory.d.ts +3 -2
- package/context-dashboard/context-dashboard.model.d.ts +16 -1
- package/context-dashboard/context-dashboard.service.d.ts +4 -2
- package/context-dashboard/report-dashboard/report-dashboard-list.component.d.ts +3 -2
- package/core/common/ApplicationOptions.d.ts +2 -2
- package/core/login/credentials.component.d.ts +1 -3
- package/core/login/login.component.d.ts +3 -1
- package/esm2020/context-dashboard/add-dashboard.factory.mjs +17 -5
- package/esm2020/context-dashboard/context-dashboard.component.mjs +24 -4
- package/esm2020/context-dashboard/context-dashboard.model.mjs +19 -4
- package/esm2020/context-dashboard/context-dashboard.service.mjs +21 -6
- package/esm2020/context-dashboard/dashboard-availability.component.mjs +3 -3
- package/esm2020/context-dashboard/report-dashboard/report-dashboard-list.component.mjs +21 -6
- package/esm2020/core/common/ApplicationOptions.mjs +1 -1
- package/esm2020/core/login/credentials.component.mjs +15 -18
- package/esm2020/core/login/login.component.mjs +18 -15
- package/esm2020/widgets/implementations/device-control-message/device-control-message-widget-view/device-control-message-widget-view.component.mjs +17 -9
- package/esm2020/widgets/implementations/map/map-widget.component.mjs +26 -11
- package/esm2020/widgets/implementations/three-d-rotation/lazy-box-model/lazy-load-box-model.mjs +3 -3
- package/esm2020/widgets/implementations/three-d-rotation/lazy-phone-model/lazy-load-phone-model.mjs +3 -3
- package/fesm2015/c8y-ngx-components-context-dashboard.mjs +91 -15
- package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-widgets-implementations-device-control-message.mjs +19 -8
- package/fesm2015/c8y-ngx-components-widgets-implementations-device-control-message.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-widgets-implementations-map.mjs +37 -20
- package/fesm2015/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-box-model.mjs +2 -2
- package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-box-model.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-phone-model.mjs +2 -2
- package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-phone-model.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components.mjs +11 -11
- package/fesm2015/c8y-ngx-components.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-context-dashboard.mjs +91 -15
- package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-widgets-implementations-device-control-message.mjs +15 -8
- package/fesm2020/c8y-ngx-components-widgets-implementations-device-control-message.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-widgets-implementations-map.mjs +25 -13
- package/fesm2020/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-box-model.mjs +2 -2
- package/fesm2020/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-box-model.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-phone-model.mjs +2 -2
- package/fesm2020/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-phone-model.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components.mjs +11 -11
- package/fesm2020/c8y-ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/widgets/implementations/device-control-message/device-control-message-widget-view/device-control-message-widget-view.component.d.ts +4 -2
- package/widgets/implementations/map/map-widget.component.d.ts +7 -4
- package/widgets/implementations/three-d-rotation/lazy-box-model/lazy-load-box-model.d.ts +79 -1
- package/widgets/implementations/three-d-rotation/lazy-phone-model/lazy-load-phone-model.d.ts +76 -1
- package/esm2020/widgets/implementations/three-d-rotation/box-model/c8y-ngx-components-widgets-implementations-three-d-rotation-box-model.mjs +0 -5
- package/esm2020/widgets/implementations/three-d-rotation/box-model/index.mjs +0 -4
- package/esm2020/widgets/implementations/three-d-rotation/phone-model/c8y-ngx-components-widgets-implementations-three-d-rotation-phone-model.mjs +0 -5
- package/esm2020/widgets/implementations/three-d-rotation/phone-model/index.mjs +0 -4
- package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-box-model.mjs +0 -10
- package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-box-model.mjs.map +0 -1
- package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-phone-model.mjs +0 -10
- package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-phone-model.mjs.map +0 -1
- package/fesm2020/c8y-ngx-components-widgets-implementations-three-d-rotation-box-model.mjs +0 -10
- package/fesm2020/c8y-ngx-components-widgets-implementations-three-d-rotation-box-model.mjs.map +0 -1
- package/fesm2020/c8y-ngx-components-widgets-implementations-three-d-rotation-phone-model.mjs +0 -10
- package/fesm2020/c8y-ngx-components-widgets-implementations-three-d-rotation-phone-model.mjs.map +0 -1
- package/widgets/implementations/three-d-rotation/box-model/index.d.ts +0 -1
- package/widgets/implementations/three-d-rotation/phone-model/index.d.ts +0 -1
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Component, Input, NgModule } from '@angular/core';
|
|
2
|
+
import { Component, Optional, Input, NgModule } from '@angular/core';
|
|
3
3
|
import * as i1 from '@c8y/ngx-components';
|
|
4
4
|
import { DynamicComponentAlert, gettext, CoreModule } from '@c8y/ngx-components';
|
|
5
|
-
import * as
|
|
5
|
+
import * as i6 from '@angular/forms';
|
|
6
6
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
7
7
|
import { __awaiter } from 'tslib';
|
|
8
8
|
import { BehaviorSubject } from 'rxjs';
|
|
9
9
|
import { map, shareReplay } from 'rxjs/operators';
|
|
10
10
|
import * as i2 from '@c8y/client';
|
|
11
11
|
import * as i3 from '@ngx-translate/core';
|
|
12
|
-
import * as i4 from '@
|
|
12
|
+
import * as i4 from '@c8y/ngx-components/context-dashboard';
|
|
13
|
+
import * as i5 from '@angular/common';
|
|
13
14
|
|
|
14
15
|
class DeviceControlMessageWidgetViewComponent {
|
|
15
|
-
constructor(alert, operation, translate) {
|
|
16
|
+
constructor(alert, operation, translate, dashboard) {
|
|
16
17
|
this.alert = alert;
|
|
17
18
|
this.operation = operation;
|
|
18
19
|
this.translate = translate;
|
|
20
|
+
this.dashboard = dashboard;
|
|
19
21
|
this.messageToBeSent = '';
|
|
20
22
|
this.operationAttribute = 'c8y_Message';
|
|
21
23
|
this.currentDevice = new BehaviorSubject(null);
|
|
@@ -31,6 +33,10 @@ class DeviceControlMessageWidgetViewComponent {
|
|
|
31
33
|
}), shareReplay({ refCount: true, bufferSize: 1 }));
|
|
32
34
|
}
|
|
33
35
|
ngOnInit() {
|
|
36
|
+
var _a, _b, _c;
|
|
37
|
+
if (((_a = this.dashboard) === null || _a === void 0 ? void 0 : _a.isDeviceTypeDashboard) && ((_c = (_b = this.dashboard) === null || _b === void 0 ? void 0 : _b.context) === null || _c === void 0 ? void 0 : _c.id)) {
|
|
38
|
+
this.currentDevice.next(this.dashboard.context);
|
|
39
|
+
}
|
|
34
40
|
this.operationSupportedByDeviceSubscription = this.operationSupportedByDevice$.subscribe(supported => {
|
|
35
41
|
if (!supported) {
|
|
36
42
|
this.alerts.addAlerts(new DynamicComponentAlert({
|
|
@@ -48,7 +54,8 @@ class DeviceControlMessageWidgetViewComponent {
|
|
|
48
54
|
(_a = this.operationSupportedByDeviceSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
49
55
|
}
|
|
50
56
|
ngOnChanges() {
|
|
51
|
-
|
|
57
|
+
var _a;
|
|
58
|
+
if (!((_a = this.dashboard) === null || _a === void 0 ? void 0 : _a.isDeviceTypeDashboard) && this.config.device) {
|
|
52
59
|
this.currentDevice.next(this.config.device);
|
|
53
60
|
}
|
|
54
61
|
}
|
|
@@ -72,12 +79,16 @@ class DeviceControlMessageWidgetViewComponent {
|
|
|
72
79
|
});
|
|
73
80
|
}
|
|
74
81
|
}
|
|
75
|
-
DeviceControlMessageWidgetViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DeviceControlMessageWidgetViewComponent, deps: [{ token: i1.AlertService }, { token: i2.OperationService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
76
|
-
DeviceControlMessageWidgetViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DeviceControlMessageWidgetViewComponent, selector: "c8y-device-control-message-widget-view", inputs: { config: "config" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"operationSupportedByDevice$ | async\" class=\"input-group p-16\">\n <input\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"messageToBeSent\"\n placeholder=\"{{ 'Message' | translate }}\"\n />\n <span class=\"input-group-btn\">\n <button\n title=\"{{ 'Send' | translate }}\"\n class=\"btn btn-primary\"\n (click)=\"sendMessage()\"\n [disabled]=\"!messageToBeSent\"\n translate\n >\n Send\n </button>\n </span>\n</div>\n", dependencies: [{ kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type:
|
|
82
|
+
DeviceControlMessageWidgetViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DeviceControlMessageWidgetViewComponent, deps: [{ token: i1.AlertService }, { token: i2.OperationService }, { token: i3.TranslateService }, { token: i4.ContextDashboardComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
83
|
+
DeviceControlMessageWidgetViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DeviceControlMessageWidgetViewComponent, selector: "c8y-device-control-message-widget-view", inputs: { config: "config" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"operationSupportedByDevice$ | async\" class=\"input-group p-16\">\n <input\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"messageToBeSent\"\n placeholder=\"{{ 'Message' | translate }}\"\n />\n <span class=\"input-group-btn\">\n <button\n title=\"{{ 'Send' | translate }}\"\n class=\"btn btn-primary\"\n (click)=\"sendMessage()\"\n [disabled]=\"!messageToBeSent\"\n translate\n >\n Send\n </button>\n </span>\n</div>\n", dependencies: [{ kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] });
|
|
77
84
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DeviceControlMessageWidgetViewComponent, decorators: [{
|
|
78
85
|
type: Component,
|
|
79
86
|
args: [{ selector: 'c8y-device-control-message-widget-view', template: "<div *ngIf=\"operationSupportedByDevice$ | async\" class=\"input-group p-16\">\n <input\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"messageToBeSent\"\n placeholder=\"{{ 'Message' | translate }}\"\n />\n <span class=\"input-group-btn\">\n <button\n title=\"{{ 'Send' | translate }}\"\n class=\"btn btn-primary\"\n (click)=\"sendMessage()\"\n [disabled]=\"!messageToBeSent\"\n translate\n >\n Send\n </button>\n </span>\n</div>\n" }]
|
|
80
|
-
}], ctorParameters: function () {
|
|
87
|
+
}], ctorParameters: function () {
|
|
88
|
+
return [{ type: i1.AlertService }, { type: i2.OperationService }, { type: i3.TranslateService }, { type: i4.ContextDashboardComponent, decorators: [{
|
|
89
|
+
type: Optional
|
|
90
|
+
}] }];
|
|
91
|
+
}, propDecorators: { config: [{
|
|
81
92
|
type: Input
|
|
82
93
|
}] } });
|
|
83
94
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c8y-ngx-components-widgets-implementations-device-control-message.mjs","sources":["../../widgets/implementations/device-control-message/device-control-message-widget-view/device-control-message-widget-view.component.ts","../../widgets/implementations/device-control-message/device-control-message-widget-view/device-control-message-widget-view.component.html","../../widgets/implementations/device-control-message/device-control-message-widget.module.ts","../../widgets/implementations/device-control-message/c8y-ngx-components-widgets-implementations-device-control-message.ts"],"sourcesContent":["import { Component, Input, OnChanges, OnDestroy, OnInit } from '@angular/core';\nimport {\n AlertService,\n DynamicComponent,\n DynamicComponentAlert,\n DynamicComponentAlertAggregator,\n gettext\n} from '@c8y/ngx-components';\nimport { IManagedObject, OperationService } from '@c8y/client';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { map, shareReplay } from 'rxjs/operators';\n\n@Component({\n selector: 'c8y-device-control-message-widget-view',\n templateUrl: './device-control-message-widget-view.component.html'\n})\nexport class DeviceControlMessageWidgetViewComponent\n implements OnChanges, DynamicComponent, OnDestroy, OnInit\n{\n @Input() config: { device?: IManagedObject };\n operationSupportedByDevice$: Observable<boolean>;\n messageToBeSent = '';\n alerts: DynamicComponentAlertAggregator;\n private readonly operationAttribute = 'c8y_Message';\n private currentDevice = new BehaviorSubject<IManagedObject | null>(null);\n private operationSupportedByDeviceSubscription: Subscription;\n\n constructor(\n private alert: AlertService,\n private operation: OperationService,\n private translate: TranslateService\n ) {\n this.operationSupportedByDevice$ = this.currentDevice.pipe(\n map(device => {\n if (!device) {\n return false;\n }\n const supportedOperations = device.c8y_SupportedOperations;\n if (supportedOperations && Array.isArray(supportedOperations)) {\n return supportedOperations.includes(this.operationAttribute);\n }\n return false;\n }),\n shareReplay({ refCount: true, bufferSize: 1 })\n );\n }\n\n ngOnInit(): void {\n this.operationSupportedByDeviceSubscription = this.operationSupportedByDevice$.subscribe(\n supported => {\n if (!supported) {\n this.alerts.addAlerts(\n new DynamicComponentAlert({\n type: 'warning',\n text: gettext('Operation not supported by this device')\n })\n );\n } else {\n this.alerts.clear();\n }\n }\n );\n }\n\n ngOnDestroy(): void {\n this.operationSupportedByDeviceSubscription?.unsubscribe();\n }\n\n ngOnChanges(): void {\n if (this.config.device) {\n this.currentDevice.next(this.config.device);\n }\n }\n\n async sendMessage() {\n const msg = this.messageToBeSent;\n const operationDescription = this.translate.instant(gettext('Send message \"{{msg}}\"'), { msg });\n try {\n await this.operation.create({\n deviceId: this.currentDevice.value?.id,\n description: operationDescription,\n [this.operationAttribute]: { text: msg }\n });\n this.alert.success(gettext('Message will be sent.'));\n this.messageToBeSent = '';\n } catch (e) {\n this.alert.addServerFailure(e);\n }\n }\n}\n","<div *ngIf=\"operationSupportedByDevice$ | async\" class=\"input-group p-16\">\n <input\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"messageToBeSent\"\n placeholder=\"{{ 'Message' | translate }}\"\n />\n <span class=\"input-group-btn\">\n <button\n title=\"{{ 'Send' | translate }}\"\n class=\"btn btn-primary\"\n (click)=\"sendMessage()\"\n [disabled]=\"!messageToBeSent\"\n translate\n >\n Send\n </button>\n </span>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { DeviceControlMessageWidgetViewComponent } from './device-control-message-widget-view/device-control-message-widget-view.component';\n\n@NgModule({\n imports: [CoreModule, ReactiveFormsModule],\n declarations: [DeviceControlMessageWidgetViewComponent]\n})\nexport class DeviceControlMessageWidgetModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"c8y-ngx-components-widgets-implementations-device-control-message.mjs","sources":["../../widgets/implementations/device-control-message/device-control-message-widget-view/device-control-message-widget-view.component.ts","../../widgets/implementations/device-control-message/device-control-message-widget-view/device-control-message-widget-view.component.html","../../widgets/implementations/device-control-message/device-control-message-widget.module.ts","../../widgets/implementations/device-control-message/c8y-ngx-components-widgets-implementations-device-control-message.ts"],"sourcesContent":["import { Component, Input, OnChanges, OnDestroy, OnInit, Optional } from '@angular/core';\nimport {\n AlertService,\n DynamicComponent,\n DynamicComponentAlert,\n DynamicComponentAlertAggregator,\n gettext\n} from '@c8y/ngx-components';\nimport { IManagedObject, OperationService } from '@c8y/client';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { map, shareReplay } from 'rxjs/operators';\nimport { ContextDashboardComponent } from '@c8y/ngx-components/context-dashboard';\n\n@Component({\n selector: 'c8y-device-control-message-widget-view',\n templateUrl: './device-control-message-widget-view.component.html'\n})\nexport class DeviceControlMessageWidgetViewComponent\n implements OnChanges, DynamicComponent, OnDestroy, OnInit\n{\n @Input() config: { device?: IManagedObject };\n operationSupportedByDevice$: Observable<boolean>;\n messageToBeSent = '';\n alerts: DynamicComponentAlertAggregator;\n private readonly operationAttribute = 'c8y_Message';\n private currentDevice = new BehaviorSubject<IManagedObject | null>(null);\n private operationSupportedByDeviceSubscription: Subscription;\n\n constructor(\n private alert: AlertService,\n private operation: OperationService,\n private translate: TranslateService,\n @Optional() private dashboard: ContextDashboardComponent\n ) {\n this.operationSupportedByDevice$ = this.currentDevice.pipe(\n map(device => {\n if (!device) {\n return false;\n }\n const supportedOperations = device.c8y_SupportedOperations;\n if (supportedOperations && Array.isArray(supportedOperations)) {\n return supportedOperations.includes(this.operationAttribute);\n }\n return false;\n }),\n shareReplay({ refCount: true, bufferSize: 1 })\n );\n }\n\n ngOnInit(): void {\n if (this.dashboard?.isDeviceTypeDashboard && this.dashboard?.context?.id) {\n this.currentDevice.next(this.dashboard.context);\n }\n this.operationSupportedByDeviceSubscription = this.operationSupportedByDevice$.subscribe(\n supported => {\n if (!supported) {\n this.alerts.addAlerts(\n new DynamicComponentAlert({\n type: 'warning',\n text: gettext('Operation not supported by this device')\n })\n );\n } else {\n this.alerts.clear();\n }\n }\n );\n }\n\n ngOnDestroy(): void {\n this.operationSupportedByDeviceSubscription?.unsubscribe();\n }\n\n ngOnChanges(): void {\n if (!this.dashboard?.isDeviceTypeDashboard && this.config.device) {\n this.currentDevice.next(this.config.device);\n }\n }\n\n async sendMessage() {\n const msg = this.messageToBeSent;\n const operationDescription = this.translate.instant(gettext('Send message \"{{msg}}\"'), { msg });\n try {\n await this.operation.create({\n deviceId: this.currentDevice.value?.id,\n description: operationDescription,\n [this.operationAttribute]: { text: msg }\n });\n this.alert.success(gettext('Message will be sent.'));\n this.messageToBeSent = '';\n } catch (e) {\n this.alert.addServerFailure(e);\n }\n }\n}\n","<div *ngIf=\"operationSupportedByDevice$ | async\" class=\"input-group p-16\">\n <input\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"messageToBeSent\"\n placeholder=\"{{ 'Message' | translate }}\"\n />\n <span class=\"input-group-btn\">\n <button\n title=\"{{ 'Send' | translate }}\"\n class=\"btn btn-primary\"\n (click)=\"sendMessage()\"\n [disabled]=\"!messageToBeSent\"\n translate\n >\n Send\n </button>\n </span>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { DeviceControlMessageWidgetViewComponent } from './device-control-message-widget-view/device-control-message-widget-view.component';\n\n@NgModule({\n imports: [CoreModule, ReactiveFormsModule],\n declarations: [DeviceControlMessageWidgetViewComponent]\n})\nexport class DeviceControlMessageWidgetModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { __awaiter } from 'tslib';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { Component, Input, Inject, ViewChild, NgModule } from '@angular/core';
|
|
3
|
+
import { Component, Input, Inject, ViewChild, Optional, NgModule } from '@angular/core';
|
|
4
4
|
import * as i1 from '@c8y/client';
|
|
5
|
-
import * as
|
|
5
|
+
import * as i4 from '@angular/common';
|
|
6
6
|
import { CommonModule } from '@angular/common';
|
|
7
|
-
import * as i2
|
|
7
|
+
import * as i2 from '@c8y/ngx-components';
|
|
8
8
|
import { gettext, CommonModule as CommonModule$1, FormsModule as FormsModule$1 } from '@c8y/ngx-components';
|
|
9
9
|
import * as i5 from '@angular/forms';
|
|
10
10
|
import { ControlContainer, NgForm, FormsModule } from '@angular/forms';
|
|
@@ -18,7 +18,8 @@ import * as i6 from '@c8y/ngx-components/icon-selector';
|
|
|
18
18
|
import { IconSelectorModule } from '@c8y/ngx-components/icon-selector';
|
|
19
19
|
import * as i7 from 'ngx-bootstrap/tooltip';
|
|
20
20
|
import { TooltipModule } from 'ngx-bootstrap/tooltip';
|
|
21
|
-
import * as
|
|
21
|
+
import * as i2$1 from '@c8y/ngx-components/context-dashboard';
|
|
22
|
+
import * as i6$1 from '@angular/router';
|
|
22
23
|
import { RouterModule } from '@angular/router';
|
|
23
24
|
|
|
24
25
|
class MapEventInfoComponent {
|
|
@@ -42,7 +43,7 @@ class MapEventInfoComponent {
|
|
|
42
43
|
}
|
|
43
44
|
}
|
|
44
45
|
MapEventInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: MapEventInfoComponent, deps: [{ token: i1.EventService }], target: i0.ɵɵFactoryTarget.Component });
|
|
45
|
-
MapEventInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: MapEventInfoComponent, selector: "c8y-map-event-info", inputs: { asset: "asset" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"text-muted text-10 p-t-4 p-b-4\">\n <span translate>Last position update:</span>\n <br />\n <c8y-loading *ngIf=\"loading\"></c8y-loading>\n <ng-container *ngIf=\"!loading\">\n <i *ngIf=\"!event\" translate>No information found</i>\n <ng-container *ngIf=\"event\">\n <i>{{ event.time | c8yDate }}</i>\n <ng-content></ng-content>\n </ng-container>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type:
|
|
46
|
+
MapEventInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: MapEventInfoComponent, selector: "c8y-map-event-info", inputs: { asset: "asset" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"text-muted text-10 p-t-4 p-b-4\">\n <span translate>Last position update:</span>\n <br />\n <c8y-loading *ngIf=\"loading\"></c8y-loading>\n <ng-container *ngIf=\"!loading\">\n <i *ngIf=\"!event\" translate>No information found</i>\n <ng-container *ngIf=\"event\">\n <i>{{ event.time | c8yDate }}</i>\n <ng-content></ng-content>\n </ng-container>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: i2.LoadingComponent, selector: "c8y-loading" }, { kind: "pipe", type: i2.DatePipe, name: "c8yDate" }] });
|
|
46
47
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: MapEventInfoComponent, decorators: [{
|
|
47
48
|
type: Component,
|
|
48
49
|
args: [{ selector: 'c8y-map-event-info', template: "<div class=\"text-muted text-10 p-t-4 p-b-4\">\n <span translate>Last position update:</span>\n <br />\n <c8y-loading *ngIf=\"loading\"></c8y-loading>\n <ng-container *ngIf=\"!loading\">\n <i *ngIf=\"!event\" translate>No information found</i>\n <ng-container *ngIf=\"event\">\n <i>{{ event.time | c8yDate }}</i>\n <ng-content></ng-content>\n </ng-container>\n </ng-container>\n</div>\n" }]
|
|
@@ -203,13 +204,13 @@ class MapWidgetConfigComponent {
|
|
|
203
204
|
this.previewMap.addMarkerToMap(this.centerIcon);
|
|
204
205
|
}
|
|
205
206
|
}
|
|
206
|
-
MapWidgetConfigComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: MapWidgetConfigComponent, deps: [{ token: i1$1.MapService }, { token: i2
|
|
207
|
-
MapWidgetConfigComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: MapWidgetConfigComponent, selector: "c8y-map-widget-config", inputs: { config: "config" }, viewQueries: [{ propertyName: "previewMap", first: true, predicate: MapComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"row p-t-16\">\n <div class=\"col-xs-2\">\n <c8y-form-group class=\"m-b-0 text-center form-group-sm\">\n <label translate>Marker icon</label>\n <c8y-icon-selector-wrapper\n [canRemoveIcon]=\"true\"\n [selectedIcon]=\"this.formConfig.icon\"\n (onSelect)=\"selectIcon($event)\"\n ></c8y-icon-selector-wrapper>\n </c8y-form-group>\n </div>\n <div class=\"col-xs-10\">\n <div class=\"row tight-grid separator-bottom\">\n <div class=\"col-xs-4\">\n <div class=\"form-group form-group-sm\">\n <label translate>Zoom level</label>\n <c8y-range\n class=\"label-bottom\"\n #range\n [(ngModel)]=\"formConfig.zoomLevel\"\n (change)=\"zoomLevelChanged()\"\n name=\"zoomLevel\"\n >\n <input type=\"range\" min=\"2\" max=\"18\" step=\"1\" />\n </c8y-range>\n </div>\n </div>\n <div class=\"col-xs-8\">\n <c8y-form-group class=\"form-group-sm m-b-8\">\n <label translate>Center bound</label>\n <div class=\"input-group input-group-sm\">\n <input\n class=\"form-control\"\n [(ngModel)]=\"formConfig.center[0]\"\n (change)=\"changeCenter()\"\n placeholder=\"lat\"\n name=\"centerLat\"\n type=\"number\"\n required\n />\n <input\n class=\"form-control\"\n [(ngModel)]=\"formConfig.center[1]\"\n (change)=\"changeCenter()\"\n placeholder=\"lng\"\n name=\"centerLng\"\n type=\"number\"\n required\n />\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Use your location' | translate\"\n [tooltip]=\"'Use your location' | translate\"\n (click)=\"useOwnPosition()\"\n placement=\"top\"\n container=\"body\"\n >\n <i class=\"icon-14\" c8yIcon=\"location-arrow\"></i>\n </button>\n </div>\n <div class=\"input-group-btn\" *ngIf=\"canAutoCenter\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Use selected asset location' | translate\"\n [tooltip]=\"'Use selected asset location' | translate\"\n (click)=\"centerToAsset()\"\n placement=\"top\"\n container=\"body\"\n >\n <i class=\"icon-14\" c8yIcon=\"location\"></i>\n </button>\n </div>\n </div>\n <div class=\"help-block\">\n {{ 'Drag the map to the desired position' | translate }}\n </div>\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row tight-grid p-t-8 d-flex a-i-center\">\n <div class=\"col-xs-6\">\n <c8y-form-group class=\"m-b-0 form-group-sm\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"selectExample\"\n [(ngModel)]=\"refreshOptions\"\n (change)=\"updateRefreshOptions()\"\n title=\"{{ 'Refresh options' | translate }}\"\n name=\"refreshSelection\"\n >\n <option [title]=\"'Only refreshing on interaction' | translate\" value=\"none\" translate>\n No automatic refresh\n </option>\n <option\n *ngIf=\"!isPositionedDevice\"\n [title]=\"'Refreshing after a give interval and on interaction' | translate\"\n value=\"interval\"\n translate\n >\n Use refresh interval\n </option>\n <option\n *ngIf=\"isPositionedDevice\"\n [title]=\"'Live updating on each position change' | translate\"\n value=\"realtime\"\n translate\n >\n Realtime\n </option>\n <option\n *ngIf=\"isPositionedDevice\"\n [title]=\"'Bind widget to dashboard realtime context' | translate\"\n value=\"dashboard-realtime-context\"\n translate\n >\n Dashboard realtime context\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-xs-8\">\n <div class=\"form-group form-group-sm m-b-0\">\n <c8y-range\n class=\"label-bottom\"\n #intervalRange\n *ngIf=\"refreshOptions === 'interval'\"\n [(ngModel)]=\"formConfig.refreshInterval\"\n name=\"refreshInterval\"\n >\n <ng-template #c8yRangeValue>\n <div>\n <span\n [translateParams]=\"{ intervalInSeconds: intervalRange.value * 0.001 }\"\n translate\n ngNonBindable\n >\n {{ intervalInSeconds }} s\n </span>\n </div>\n </ng-template>\n <input type=\"range\" min=\"5000\" max=\"100000\" step=\"1000\" />\n </c8y-range>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline\"\n *ngIf=\"refreshOptions === 'realtime' || refreshOptions === 'dashboard-realtime-context'\"\n >\n <input [(ngModel)]=\"formConfig.follow\" name=\"follow\" type=\"checkbox\" />\n <span></span>\n <span class=\"text-12\" translate>Follow selected</span>\n </label>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"p-t-16 p-b-16\" style=\"width: 100%; height: 240px\">\n <c8y-map\n *ngIf=\"config.mapConfig\"\n [assets]=\"assets\"\n [config]=\"config.mapConfig\"\n (onMove)=\"onPreviewMapMove($event)\"\n (onZoomStart)=\"onPreviewZoomStart()\"\n (onZoomEnd)=\"onPreviewZoomEnd($event)\"\n ></c8y-map>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2$1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2$1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2$1.MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: i2$1.MaxValidationDirective, selector: "[max]", inputs: ["max"] }, { kind: "component", type: i2$1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i2$1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i2$1.RangeDirective, selector: "input[type=\"range\"]" }, { kind: "component", type: i2$1.RangeComponent, selector: "c8y-range" }, { kind: "component", type: i6.IconSelectorWrapperComponent, selector: "c8y-icon-selector-wrapper", inputs: ["canRemoveIcon", "selectedIcon", "iconSize"], outputs: ["onSelect"] }, { kind: "component", type: i1$1.MapComponent, selector: "c8y-map", inputs: ["config", "assets"], outputs: ["onMove", "onMoveEnd", "onZoomStart", "onZoomEnd", "onRealtimeUpdate", "onInit"] }, { kind: "directive", type: i7.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: i2$1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
|
|
207
|
+
MapWidgetConfigComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: MapWidgetConfigComponent, deps: [{ token: i1$1.MapService }, { token: i2.AlertService }, { token: i3.TranslateService }, { token: MAP_DEFAULT_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
|
|
208
|
+
MapWidgetConfigComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: MapWidgetConfigComponent, selector: "c8y-map-widget-config", inputs: { config: "config" }, viewQueries: [{ propertyName: "previewMap", first: true, predicate: MapComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"row p-t-16\">\n <div class=\"col-xs-2\">\n <c8y-form-group class=\"m-b-0 text-center form-group-sm\">\n <label translate>Marker icon</label>\n <c8y-icon-selector-wrapper\n [canRemoveIcon]=\"true\"\n [selectedIcon]=\"this.formConfig.icon\"\n (onSelect)=\"selectIcon($event)\"\n ></c8y-icon-selector-wrapper>\n </c8y-form-group>\n </div>\n <div class=\"col-xs-10\">\n <div class=\"row tight-grid separator-bottom\">\n <div class=\"col-xs-4\">\n <div class=\"form-group form-group-sm\">\n <label translate>Zoom level</label>\n <c8y-range\n class=\"label-bottom\"\n #range\n [(ngModel)]=\"formConfig.zoomLevel\"\n (change)=\"zoomLevelChanged()\"\n name=\"zoomLevel\"\n >\n <input type=\"range\" min=\"2\" max=\"18\" step=\"1\" />\n </c8y-range>\n </div>\n </div>\n <div class=\"col-xs-8\">\n <c8y-form-group class=\"form-group-sm m-b-8\">\n <label translate>Center bound</label>\n <div class=\"input-group input-group-sm\">\n <input\n class=\"form-control\"\n [(ngModel)]=\"formConfig.center[0]\"\n (change)=\"changeCenter()\"\n placeholder=\"lat\"\n name=\"centerLat\"\n type=\"number\"\n required\n />\n <input\n class=\"form-control\"\n [(ngModel)]=\"formConfig.center[1]\"\n (change)=\"changeCenter()\"\n placeholder=\"lng\"\n name=\"centerLng\"\n type=\"number\"\n required\n />\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Use your location' | translate\"\n [tooltip]=\"'Use your location' | translate\"\n (click)=\"useOwnPosition()\"\n placement=\"top\"\n container=\"body\"\n >\n <i class=\"icon-14\" c8yIcon=\"location-arrow\"></i>\n </button>\n </div>\n <div class=\"input-group-btn\" *ngIf=\"canAutoCenter\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Use selected asset location' | translate\"\n [tooltip]=\"'Use selected asset location' | translate\"\n (click)=\"centerToAsset()\"\n placement=\"top\"\n container=\"body\"\n >\n <i class=\"icon-14\" c8yIcon=\"location\"></i>\n </button>\n </div>\n </div>\n <div class=\"help-block\">\n {{ 'Drag the map to the desired position' | translate }}\n </div>\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row tight-grid p-t-8 d-flex a-i-center\">\n <div class=\"col-xs-6\">\n <c8y-form-group class=\"m-b-0 form-group-sm\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"selectExample\"\n [(ngModel)]=\"refreshOptions\"\n (change)=\"updateRefreshOptions()\"\n title=\"{{ 'Refresh options' | translate }}\"\n name=\"refreshSelection\"\n >\n <option [title]=\"'Only refreshing on interaction' | translate\" value=\"none\" translate>\n No automatic refresh\n </option>\n <option\n *ngIf=\"!isPositionedDevice\"\n [title]=\"'Refreshing after a give interval and on interaction' | translate\"\n value=\"interval\"\n translate\n >\n Use refresh interval\n </option>\n <option\n *ngIf=\"isPositionedDevice\"\n [title]=\"'Live updating on each position change' | translate\"\n value=\"realtime\"\n translate\n >\n Realtime\n </option>\n <option\n *ngIf=\"isPositionedDevice\"\n [title]=\"'Bind widget to dashboard realtime context' | translate\"\n value=\"dashboard-realtime-context\"\n translate\n >\n Dashboard realtime context\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-xs-8\">\n <div class=\"form-group form-group-sm m-b-0\">\n <c8y-range\n class=\"label-bottom\"\n #intervalRange\n *ngIf=\"refreshOptions === 'interval'\"\n [(ngModel)]=\"formConfig.refreshInterval\"\n name=\"refreshInterval\"\n >\n <ng-template #c8yRangeValue>\n <div>\n <span\n [translateParams]=\"{ intervalInSeconds: intervalRange.value * 0.001 }\"\n translate\n ngNonBindable\n >\n {{ intervalInSeconds }} s\n </span>\n </div>\n </ng-template>\n <input type=\"range\" min=\"5000\" max=\"100000\" step=\"1000\" />\n </c8y-range>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline\"\n *ngIf=\"refreshOptions === 'realtime' || refreshOptions === 'dashboard-realtime-context'\"\n >\n <input [(ngModel)]=\"formConfig.follow\" name=\"follow\" type=\"checkbox\" />\n <span></span>\n <span class=\"text-12\" translate>Follow selected</span>\n </label>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"p-t-16 p-b-16\" style=\"width: 100%; height: 240px\">\n <c8y-map\n *ngIf=\"config.mapConfig\"\n [assets]=\"assets\"\n [config]=\"config.mapConfig\"\n (onMove)=\"onPreviewMapMove($event)\"\n (onZoomStart)=\"onPreviewZoomStart()\"\n (onZoomEnd)=\"onPreviewZoomEnd($event)\"\n ></c8y-map>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: i2.MaxValidationDirective, selector: "[max]", inputs: ["max"] }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i2.RangeDirective, selector: "input[type=\"range\"]" }, { kind: "component", type: i2.RangeComponent, selector: "c8y-range" }, { kind: "component", type: i6.IconSelectorWrapperComponent, selector: "c8y-icon-selector-wrapper", inputs: ["canRemoveIcon", "selectedIcon", "iconSize"], outputs: ["onSelect"] }, { kind: "component", type: i1$1.MapComponent, selector: "c8y-map", inputs: ["config", "assets"], outputs: ["onMove", "onMoveEnd", "onZoomStart", "onZoomEnd", "onRealtimeUpdate", "onInit"] }, { kind: "directive", type: i7.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
|
|
208
209
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: MapWidgetConfigComponent, decorators: [{
|
|
209
210
|
type: Component,
|
|
210
211
|
args: [{ selector: 'c8y-map-widget-config', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div class=\"row p-t-16\">\n <div class=\"col-xs-2\">\n <c8y-form-group class=\"m-b-0 text-center form-group-sm\">\n <label translate>Marker icon</label>\n <c8y-icon-selector-wrapper\n [canRemoveIcon]=\"true\"\n [selectedIcon]=\"this.formConfig.icon\"\n (onSelect)=\"selectIcon($event)\"\n ></c8y-icon-selector-wrapper>\n </c8y-form-group>\n </div>\n <div class=\"col-xs-10\">\n <div class=\"row tight-grid separator-bottom\">\n <div class=\"col-xs-4\">\n <div class=\"form-group form-group-sm\">\n <label translate>Zoom level</label>\n <c8y-range\n class=\"label-bottom\"\n #range\n [(ngModel)]=\"formConfig.zoomLevel\"\n (change)=\"zoomLevelChanged()\"\n name=\"zoomLevel\"\n >\n <input type=\"range\" min=\"2\" max=\"18\" step=\"1\" />\n </c8y-range>\n </div>\n </div>\n <div class=\"col-xs-8\">\n <c8y-form-group class=\"form-group-sm m-b-8\">\n <label translate>Center bound</label>\n <div class=\"input-group input-group-sm\">\n <input\n class=\"form-control\"\n [(ngModel)]=\"formConfig.center[0]\"\n (change)=\"changeCenter()\"\n placeholder=\"lat\"\n name=\"centerLat\"\n type=\"number\"\n required\n />\n <input\n class=\"form-control\"\n [(ngModel)]=\"formConfig.center[1]\"\n (change)=\"changeCenter()\"\n placeholder=\"lng\"\n name=\"centerLng\"\n type=\"number\"\n required\n />\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Use your location' | translate\"\n [tooltip]=\"'Use your location' | translate\"\n (click)=\"useOwnPosition()\"\n placement=\"top\"\n container=\"body\"\n >\n <i class=\"icon-14\" c8yIcon=\"location-arrow\"></i>\n </button>\n </div>\n <div class=\"input-group-btn\" *ngIf=\"canAutoCenter\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Use selected asset location' | translate\"\n [tooltip]=\"'Use selected asset location' | translate\"\n (click)=\"centerToAsset()\"\n placement=\"top\"\n container=\"body\"\n >\n <i class=\"icon-14\" c8yIcon=\"location\"></i>\n </button>\n </div>\n </div>\n <div class=\"help-block\">\n {{ 'Drag the map to the desired position' | translate }}\n </div>\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row tight-grid p-t-8 d-flex a-i-center\">\n <div class=\"col-xs-6\">\n <c8y-form-group class=\"m-b-0 form-group-sm\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"selectExample\"\n [(ngModel)]=\"refreshOptions\"\n (change)=\"updateRefreshOptions()\"\n title=\"{{ 'Refresh options' | translate }}\"\n name=\"refreshSelection\"\n >\n <option [title]=\"'Only refreshing on interaction' | translate\" value=\"none\" translate>\n No automatic refresh\n </option>\n <option\n *ngIf=\"!isPositionedDevice\"\n [title]=\"'Refreshing after a give interval and on interaction' | translate\"\n value=\"interval\"\n translate\n >\n Use refresh interval\n </option>\n <option\n *ngIf=\"isPositionedDevice\"\n [title]=\"'Live updating on each position change' | translate\"\n value=\"realtime\"\n translate\n >\n Realtime\n </option>\n <option\n *ngIf=\"isPositionedDevice\"\n [title]=\"'Bind widget to dashboard realtime context' | translate\"\n value=\"dashboard-realtime-context\"\n translate\n >\n Dashboard realtime context\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-xs-8\">\n <div class=\"form-group form-group-sm m-b-0\">\n <c8y-range\n class=\"label-bottom\"\n #intervalRange\n *ngIf=\"refreshOptions === 'interval'\"\n [(ngModel)]=\"formConfig.refreshInterval\"\n name=\"refreshInterval\"\n >\n <ng-template #c8yRangeValue>\n <div>\n <span\n [translateParams]=\"{ intervalInSeconds: intervalRange.value * 0.001 }\"\n translate\n ngNonBindable\n >\n {{ intervalInSeconds }} s\n </span>\n </div>\n </ng-template>\n <input type=\"range\" min=\"5000\" max=\"100000\" step=\"1000\" />\n </c8y-range>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline\"\n *ngIf=\"refreshOptions === 'realtime' || refreshOptions === 'dashboard-realtime-context'\"\n >\n <input [(ngModel)]=\"formConfig.follow\" name=\"follow\" type=\"checkbox\" />\n <span></span>\n <span class=\"text-12\" translate>Follow selected</span>\n </label>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"p-t-16 p-b-16\" style=\"width: 100%; height: 240px\">\n <c8y-map\n *ngIf=\"config.mapConfig\"\n [assets]=\"assets\"\n [config]=\"config.mapConfig\"\n (onMove)=\"onPreviewMapMove($event)\"\n (onZoomStart)=\"onPreviewZoomStart()\"\n (onZoomEnd)=\"onPreviewZoomEnd($event)\"\n ></c8y-map>\n</div>\n" }]
|
|
211
212
|
}], ctorParameters: function () {
|
|
212
|
-
return [{ type: i1$1.MapService }, { type: i2
|
|
213
|
+
return [{ type: i1$1.MapService }, { type: i2.AlertService }, { type: i3.TranslateService }, { type: i8.Observable, decorators: [{
|
|
213
214
|
type: Inject,
|
|
214
215
|
args: [MAP_DEFAULT_CONFIG]
|
|
215
216
|
}] }];
|
|
@@ -221,20 +222,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
221
222
|
}] } });
|
|
222
223
|
|
|
223
224
|
class MapWidgetComponent {
|
|
224
|
-
constructor(dashboardChild) {
|
|
225
|
+
constructor(dashboardChild, dashboardContextComponent, inventory) {
|
|
226
|
+
this.dashboardContextComponent = dashboardContextComponent;
|
|
227
|
+
this.inventory = inventory;
|
|
225
228
|
this.mapConfig = { center: [0, 0] };
|
|
226
229
|
this.destroy$ = new Subject();
|
|
227
230
|
this.listenToWidgetResizeEvent(dashboardChild);
|
|
228
231
|
}
|
|
229
232
|
ngOnInit() {
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
233
|
+
var _a, _b;
|
|
234
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
235
|
+
if (((_b = (_a = this.dashboardContextComponent) === null || _a === void 0 ? void 0 : _a.dashboard) === null || _b === void 0 ? void 0 : _b.deviceType) && !this.config.device) {
|
|
236
|
+
const context = this.dashboardContextComponent.context;
|
|
237
|
+
if (context === null || context === void 0 ? void 0 : context.id) {
|
|
238
|
+
const { id } = context;
|
|
239
|
+
this.config.device = (yield this.inventory.detail(id)).data;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
if (this.config.device) {
|
|
243
|
+
this.rootNode = this.config.device;
|
|
244
|
+
}
|
|
245
|
+
this.mapConfig = Object.assign({}, this.config.mapConfig);
|
|
246
|
+
if (this.config.widgetInstanceGlobalTimeContext) {
|
|
247
|
+
this.updateMapConfigRealtime();
|
|
248
|
+
}
|
|
249
|
+
this.savedNode = this.rootNode;
|
|
250
|
+
});
|
|
238
251
|
}
|
|
239
252
|
ngOnChanges(changes) {
|
|
240
253
|
var _a, _b;
|
|
@@ -270,12 +283,16 @@ class MapWidgetComponent {
|
|
|
270
283
|
this.mapConfig.realtime = this.config.realtime || false;
|
|
271
284
|
}
|
|
272
285
|
}
|
|
273
|
-
MapWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: MapWidgetComponent, deps: [{ token: i2$1.
|
|
274
|
-
MapWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: MapWidgetComponent, selector: "c8y-map-widget", inputs: { config: "config" }, viewQueries: [{ propertyName: "clusterMap", first: true, predicate: ClusterMapComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<c8y-map-status\n [clusterMap]=\"mapWidget\"\n [(config)]=\"mapConfig\"\n (onUnfollow)=\"stopFollow()\"\n [buttonsConfig]=\"\n config.widgetInstanceGlobalTimeContext ? { realtime: { show: false } } : null\n \"\n></c8y-map-status>\n<c8y-cluster-map\n #mapWidget\n [rootNode]=\"rootNode\"\n [config]=\"mapConfig\"\n>\n <div\n *c8yMapPopup=\"let context\"\n class=\"map-marker\"\n >\n <a\n class=\"text-truncate deviceLink text-12\"\n routerLink=\"/device/{{ context.id }}\"\n >\n <strong>{{ context.name }}</strong>\n </a>\n <c8y-map-event-info [asset]=\"context\">\n <button\n type=\"button\"\n class=\"btn btn-default btn-xs btn-block m-t-8\"\n (click)=\"startFollow(context)\"\n [title]=\"'Activate realtime on this asset and follow it if it moves' | translate\"\n *ngIf=\"!mapConfig.follow\"\n translate\n >\n Follow\n </button>\n <button\n type=\"button\"\n class=\"btn btn-default btn-xs btn-block m-t-8\"\n (click)=\"stopFollow()\"\n [title]=\"'Stop following this asset.' | translate\"\n *ngIf=\"mapConfig.follow\"\n translate\n >\n Unfollow\n </button>\n </c8y-map-event-info>\n </div>\n</c8y-cluster-map>\n", dependencies: [{ kind: "directive", type:
|
|
286
|
+
MapWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: MapWidgetComponent, deps: [{ token: i2.DashboardChildComponent }, { token: i2$1.ContextDashboardComponent, optional: true }, { token: i1.InventoryService }], target: i0.ɵɵFactoryTarget.Component });
|
|
287
|
+
MapWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: MapWidgetComponent, selector: "c8y-map-widget", inputs: { config: "config" }, viewQueries: [{ propertyName: "clusterMap", first: true, predicate: ClusterMapComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<c8y-map-status\n [clusterMap]=\"mapWidget\"\n [(config)]=\"mapConfig\"\n (onUnfollow)=\"stopFollow()\"\n [buttonsConfig]=\"\n config.widgetInstanceGlobalTimeContext ? { realtime: { show: false } } : null\n \"\n></c8y-map-status>\n<c8y-cluster-map\n #mapWidget\n [rootNode]=\"rootNode\"\n [config]=\"mapConfig\"\n>\n <div\n *c8yMapPopup=\"let context\"\n class=\"map-marker\"\n >\n <a\n class=\"text-truncate deviceLink text-12\"\n routerLink=\"/device/{{ context.id }}\"\n >\n <strong>{{ context.name }}</strong>\n </a>\n <c8y-map-event-info [asset]=\"context\">\n <button\n type=\"button\"\n class=\"btn btn-default btn-xs btn-block m-t-8\"\n (click)=\"startFollow(context)\"\n [title]=\"'Activate realtime on this asset and follow it if it moves' | translate\"\n *ngIf=\"!mapConfig.follow\"\n translate\n >\n Follow\n </button>\n <button\n type=\"button\"\n class=\"btn btn-default btn-xs btn-block m-t-8\"\n (click)=\"stopFollow()\"\n [title]=\"'Stop following this asset.' | translate\"\n *ngIf=\"mapConfig.follow\"\n translate\n >\n Unfollow\n </button>\n </c8y-map-event-info>\n </div>\n</c8y-cluster-map>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: i1$1.MapStatusComponent, selector: "c8y-map-status", inputs: ["config", "clusterMap", "buttonsConfig"], outputs: ["configChange", "onUnfollow"] }, { kind: "component", type: i1$1.ClusterMapComponent, selector: "c8y-cluster-map", inputs: ["config", "rootNode", "asset", "showClusterColor"], outputs: ["mapChange"] }, { kind: "directive", type: i1$1.MapPopupDirective, selector: "[c8yMapPopup]" }, { kind: "directive", type: i6$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: MapEventInfoComponent, selector: "c8y-map-event-info", inputs: ["asset"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] });
|
|
275
288
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: MapWidgetComponent, decorators: [{
|
|
276
289
|
type: Component,
|
|
277
290
|
args: [{ selector: 'c8y-map-widget', template: "<c8y-map-status\n [clusterMap]=\"mapWidget\"\n [(config)]=\"mapConfig\"\n (onUnfollow)=\"stopFollow()\"\n [buttonsConfig]=\"\n config.widgetInstanceGlobalTimeContext ? { realtime: { show: false } } : null\n \"\n></c8y-map-status>\n<c8y-cluster-map\n #mapWidget\n [rootNode]=\"rootNode\"\n [config]=\"mapConfig\"\n>\n <div\n *c8yMapPopup=\"let context\"\n class=\"map-marker\"\n >\n <a\n class=\"text-truncate deviceLink text-12\"\n routerLink=\"/device/{{ context.id }}\"\n >\n <strong>{{ context.name }}</strong>\n </a>\n <c8y-map-event-info [asset]=\"context\">\n <button\n type=\"button\"\n class=\"btn btn-default btn-xs btn-block m-t-8\"\n (click)=\"startFollow(context)\"\n [title]=\"'Activate realtime on this asset and follow it if it moves' | translate\"\n *ngIf=\"!mapConfig.follow\"\n translate\n >\n Follow\n </button>\n <button\n type=\"button\"\n class=\"btn btn-default btn-xs btn-block m-t-8\"\n (click)=\"stopFollow()\"\n [title]=\"'Stop following this asset.' | translate\"\n *ngIf=\"mapConfig.follow\"\n translate\n >\n Unfollow\n </button>\n </c8y-map-event-info>\n </div>\n</c8y-cluster-map>\n" }]
|
|
278
|
-
}], ctorParameters: function () {
|
|
291
|
+
}], ctorParameters: function () {
|
|
292
|
+
return [{ type: i2.DashboardChildComponent }, { type: i2$1.ContextDashboardComponent, decorators: [{
|
|
293
|
+
type: Optional
|
|
294
|
+
}] }, { type: i1.InventoryService }];
|
|
295
|
+
}, propDecorators: { config: [{
|
|
279
296
|
type: Input
|
|
280
297
|
}], clusterMap: [{
|
|
281
298
|
type: ViewChild,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c8y-ngx-components-widgets-implementations-map.mjs","sources":["../../widgets/implementations/map/map-event-info.component.ts","../../widgets/implementations/map/map-event-info.component.html","../../widgets/implementations/map/map-widget-config.component.ts","../../widgets/implementations/map/map-widget-config.component.html","../../widgets/implementations/map/map-widget.component.ts","../../widgets/implementations/map/map-widget.component.html","../../widgets/implementations/map/map-widget.module.ts","../../widgets/implementations/map/c8y-ngx-components-widgets-implementations-map.ts"],"sourcesContent":["import { Component, Input, OnChanges } from '@angular/core';\nimport { EventService, IEvent, IManagedObject } from '@c8y/client';\n\n@Component({\n selector: 'c8y-map-event-info',\n templateUrl: './map-event-info.component.html'\n})\nexport class MapEventInfoComponent implements OnChanges {\n @Input()\n asset: IManagedObject;\n\n loading = true;\n\n event: IEvent;\n\n constructor(private eventService: EventService) {}\n\n async ngOnChanges() {\n this.loading = true;\n const { data } = await this.eventService.list({\n dateFrom: '1970-01-01',\n dateTo: new Date(Date.now()).toISOString(),\n fragmentType: 'c8y_Position',\n pageSize: 1,\n source: this.asset.id\n });\n this.event = data[0];\n this.loading = false;\n }\n}\n","<div class=\"text-muted text-10 p-t-4 p-b-4\">\n <span translate>Last position update:</span>\n <br />\n <c8y-loading *ngIf=\"loading\"></c8y-loading>\n <ng-container *ngIf=\"!loading\">\n <i *ngIf=\"!event\" translate>No information found</i>\n <ng-container *ngIf=\"event\">\n <i>{{ event.time | c8yDate }}</i>\n <ng-content></ng-content>\n </ng-container>\n </ng-container>\n</div>\n","import {\n AfterViewInit,\n Component,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { ControlContainer, NgForm } from '@angular/forms';\nimport { AlertService, gettext, MapDefaultConfig } from '@c8y/ngx-components';\nimport {\n ClusterMapConfig,\n MAP_DEFAULT_CONFIG,\n MapComponent,\n MapService,\n PositionManagedObject\n} from '@c8y/ngx-components/map';\nimport { TranslateService } from '@ngx-translate/core';\nimport type L from 'leaflet';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { MapWidgetConfig, RefreshOptions } from './map-widget.model';\n\n@Component({\n selector: 'c8y-map-widget-config',\n templateUrl: './map-widget-config.component.html',\n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }]\n})\nexport class MapWidgetConfigComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n @Input() config: MapWidgetConfig = {\n mapConfig: undefined\n };\n\n formConfig: ClusterMapConfig;\n\n canAutoCenter = true;\n isPositionedDevice = false;\n assets: PositionManagedObject[];\n refreshOptions: RefreshOptions = 'none';\n\n private destroyed$ = new Subject<void>();\n private leaflet: typeof L;\n private centerIcon: L.Marker;\n\n @ViewChild(MapComponent)\n private previewMap: MapComponent;\n\n constructor(\n private mapService: MapService,\n private alertService: AlertService,\n private translateService: TranslateService,\n @Inject(MAP_DEFAULT_CONFIG) private defaultMapConfig: Observable<MapDefaultConfig>\n ) {}\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n }\n\n ngOnInit() {\n this.defaultMapConfig.pipe(takeUntil(this.destroyed$)).subscribe(defaultConfig => {\n this.formConfig = {\n zoomLevel: defaultConfig.zoomLevel,\n center: defaultConfig.center\n };\n this.initForm();\n });\n }\n\n async initForm() {\n if (!this.config.mapConfig) {\n this.config.mapConfig = this.formConfig;\n }\n this.formConfig = {\n ...this.formConfig,\n ...this.config.mapConfig,\n disablePan: false\n };\n await this.updateAsset();\n }\n\n async ngOnChanges(changes: SimpleChanges) {\n if (\n changes.config.currentValue !== changes.config.previousValue &&\n !changes.config.firstChange\n ) {\n await this.updateAsset();\n }\n }\n\n async ngAfterViewInit() {\n this.previewMap.onInit.pipe(takeUntil(this.destroyed$)).subscribe(leaflet => {\n this.leaflet = leaflet;\n this.addCenterIcon(this.formConfig.center[0], this.formConfig.center[1]);\n });\n }\n\n onBeforeSave() {\n this.config.mapConfig = this.formConfig;\n return true;\n }\n\n zoomLevelChanged() {\n this.config.mapConfig = {\n ...this.config.mapConfig,\n zoomLevel: this.formConfig.zoomLevel\n };\n }\n\n changeCenter() {\n this.config.mapConfig = { ...this.formConfig, center: this.formConfig.center };\n }\n\n onPreviewZoomStart() {\n this.centerIcon.remove();\n }\n\n onPreviewZoomEnd(event: L.LeafletEvent) {\n this.formConfig.zoomLevel = Math.floor(event.target.getZoom());\n }\n\n onPreviewMapMove(event: L.LeafletEvent) {\n if (this.centerIcon) {\n this.centerIcon.remove();\n }\n const { lat, lng } = event.target.getBounds().getCenter();\n this.addCenterIcon(lat, lng);\n this.formConfig.center = [lat, lng];\n }\n\n useOwnPosition() {\n navigator.geolocation.getCurrentPosition(({ coords }) => {\n this.formConfig.center = [coords.latitude, coords.longitude];\n this.changeCenter();\n });\n }\n\n centerToAsset() {\n this.formConfig.center = [\n this.config.device.c8y_Position.lat,\n this.config.device.c8y_Position.lng\n ];\n this.changeCenter();\n }\n\n updateRefreshOptions() {\n this.formConfig.realtime = this.refreshOptions === 'realtime';\n if (this.refreshOptions === 'interval') {\n this.formConfig.refreshInterval ??= 5000;\n } else {\n this.formConfig.refreshInterval = null;\n }\n if (!this.formConfig.realtime) {\n this.formConfig.follow = false;\n }\n this.config.widgetInstanceGlobalTimeContext =\n this.refreshOptions === 'dashboard-realtime-context';\n if (this.config.widgetInstanceGlobalTimeContext) {\n this.formConfig.realtime = null;\n }\n }\n\n selectIcon(icon: string) {\n this.formConfig.icon = icon;\n this.config.mapConfig.icon = icon;\n this.previewMap.refreshMarkers();\n }\n\n private async updateAsset() {\n this.canAutoCenter = this.mapService.hasPosition(this.config.device);\n this.isPositionedDevice = this.mapService.isPositionedDevice(this.config.device);\n this.refreshOptions = this.getRefreshOptions();\n this.updateRefreshOptions();\n\n const { data, paging } = await this.mapService.getAllPositionMOs(this.config.device);\n this.assets = data;\n if (paging.totalPages > 1) {\n this.alertService.danger(\n gettext(\n 'It might be possible that assets are not shown in the preview, as the current selection has more than 500 assets and the preview only supports a maximum of 500 assets.'\n )\n );\n }\n }\n\n private getRefreshOptions(): RefreshOptions {\n let option: RefreshOptions = 'none';\n if (this.formConfig.realtime) {\n option = 'realtime';\n } else if (this.formConfig.refreshInterval) {\n option = 'interval';\n } else if (this.config.widgetInstanceGlobalTimeContext) {\n option = 'dashboard-realtime-context';\n }\n const isNotAllowedOption =\n (!this.isPositionedDevice && option === 'dashboard-realtime-context') ||\n (!this.isPositionedDevice && option === 'realtime') ||\n (this.isPositionedDevice && option === 'interval');\n option = isNotAllowedOption ? 'none' : option;\n return option;\n }\n\n private addCenterIcon(lat: number, lng: number) {\n const titleText = this.translateService.instant(gettext('Map center'));\n const icon = this.leaflet.divIcon({\n html: `<i style=\"pointer-events: none\" class=\"c8y-map-marker-icon text-muted dlt-c8y-icon-target icon-2x\" title=\"${titleText}\" />`\n });\n this.centerIcon = this.leaflet.marker([lat, lng], {\n icon\n });\n this.previewMap.addMarkerToMap(this.centerIcon);\n }\n}\n","<div class=\"row p-t-16\">\n <div class=\"col-xs-2\">\n <c8y-form-group class=\"m-b-0 text-center form-group-sm\">\n <label translate>Marker icon</label>\n <c8y-icon-selector-wrapper\n [canRemoveIcon]=\"true\"\n [selectedIcon]=\"this.formConfig.icon\"\n (onSelect)=\"selectIcon($event)\"\n ></c8y-icon-selector-wrapper>\n </c8y-form-group>\n </div>\n <div class=\"col-xs-10\">\n <div class=\"row tight-grid separator-bottom\">\n <div class=\"col-xs-4\">\n <div class=\"form-group form-group-sm\">\n <label translate>Zoom level</label>\n <c8y-range\n class=\"label-bottom\"\n #range\n [(ngModel)]=\"formConfig.zoomLevel\"\n (change)=\"zoomLevelChanged()\"\n name=\"zoomLevel\"\n >\n <input type=\"range\" min=\"2\" max=\"18\" step=\"1\" />\n </c8y-range>\n </div>\n </div>\n <div class=\"col-xs-8\">\n <c8y-form-group class=\"form-group-sm m-b-8\">\n <label translate>Center bound</label>\n <div class=\"input-group input-group-sm\">\n <input\n class=\"form-control\"\n [(ngModel)]=\"formConfig.center[0]\"\n (change)=\"changeCenter()\"\n placeholder=\"lat\"\n name=\"centerLat\"\n type=\"number\"\n required\n />\n <input\n class=\"form-control\"\n [(ngModel)]=\"formConfig.center[1]\"\n (change)=\"changeCenter()\"\n placeholder=\"lng\"\n name=\"centerLng\"\n type=\"number\"\n required\n />\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Use your location' | translate\"\n [tooltip]=\"'Use your location' | translate\"\n (click)=\"useOwnPosition()\"\n placement=\"top\"\n container=\"body\"\n >\n <i class=\"icon-14\" c8yIcon=\"location-arrow\"></i>\n </button>\n </div>\n <div class=\"input-group-btn\" *ngIf=\"canAutoCenter\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Use selected asset location' | translate\"\n [tooltip]=\"'Use selected asset location' | translate\"\n (click)=\"centerToAsset()\"\n placement=\"top\"\n container=\"body\"\n >\n <i class=\"icon-14\" c8yIcon=\"location\"></i>\n </button>\n </div>\n </div>\n <div class=\"help-block\">\n {{ 'Drag the map to the desired position' | translate }}\n </div>\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row tight-grid p-t-8 d-flex a-i-center\">\n <div class=\"col-xs-6\">\n <c8y-form-group class=\"m-b-0 form-group-sm\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"selectExample\"\n [(ngModel)]=\"refreshOptions\"\n (change)=\"updateRefreshOptions()\"\n title=\"{{ 'Refresh options' | translate }}\"\n name=\"refreshSelection\"\n >\n <option [title]=\"'Only refreshing on interaction' | translate\" value=\"none\" translate>\n No automatic refresh\n </option>\n <option\n *ngIf=\"!isPositionedDevice\"\n [title]=\"'Refreshing after a give interval and on interaction' | translate\"\n value=\"interval\"\n translate\n >\n Use refresh interval\n </option>\n <option\n *ngIf=\"isPositionedDevice\"\n [title]=\"'Live updating on each position change' | translate\"\n value=\"realtime\"\n translate\n >\n Realtime\n </option>\n <option\n *ngIf=\"isPositionedDevice\"\n [title]=\"'Bind widget to dashboard realtime context' | translate\"\n value=\"dashboard-realtime-context\"\n translate\n >\n Dashboard realtime context\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-xs-8\">\n <div class=\"form-group form-group-sm m-b-0\">\n <c8y-range\n class=\"label-bottom\"\n #intervalRange\n *ngIf=\"refreshOptions === 'interval'\"\n [(ngModel)]=\"formConfig.refreshInterval\"\n name=\"refreshInterval\"\n >\n <ng-template #c8yRangeValue>\n <div>\n <span\n [translateParams]=\"{ intervalInSeconds: intervalRange.value * 0.001 }\"\n translate\n ngNonBindable\n >\n {{ intervalInSeconds }} s\n </span>\n </div>\n </ng-template>\n <input type=\"range\" min=\"5000\" max=\"100000\" step=\"1000\" />\n </c8y-range>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline\"\n *ngIf=\"refreshOptions === 'realtime' || refreshOptions === 'dashboard-realtime-context'\"\n >\n <input [(ngModel)]=\"formConfig.follow\" name=\"follow\" type=\"checkbox\" />\n <span></span>\n <span class=\"text-12\" translate>Follow selected</span>\n </label>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"p-t-16 p-b-16\" style=\"width: 100%; height: 240px\">\n <c8y-map\n *ngIf=\"config.mapConfig\"\n [assets]=\"assets\"\n [config]=\"config.mapConfig\"\n (onMove)=\"onPreviewMapMove($event)\"\n (onZoomStart)=\"onPreviewZoomStart()\"\n (onZoomEnd)=\"onPreviewZoomEnd($event)\"\n ></c8y-map>\n</div>\n","import {\n Component,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\nimport { ClusterMapComponent, ClusterMapConfig } from '@c8y/ngx-components/map';\nimport { DashboardChildComponent } from '@c8y/ngx-components';\nimport { MapWidgetConfig } from './map-widget.model';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'c8y-map-widget',\n templateUrl: './map-widget.component.html'\n})\nexport class MapWidgetComponent implements OnInit, OnChanges, OnDestroy {\n mapConfig: ClusterMapConfig = { center: [0, 0] };\n rootNode: IManagedObject;\n @Input() config: MapWidgetConfig;\n\n @ViewChild(ClusterMapComponent)\n clusterMap: ClusterMapComponent;\n\n private savedNode: IManagedObject;\n private destroy$ = new Subject();\n\n constructor(dashboardChild: DashboardChildComponent) {\n this.listenToWidgetResizeEvent(dashboardChild);\n }\n\n ngOnInit(): void {\n if (this.config.device) {\n this.rootNode = this.config.device;\n }\n this.mapConfig = { ...this.config.mapConfig };\n if (this.config.widgetInstanceGlobalTimeContext) {\n this.updateMapConfigRealtime();\n }\n this.savedNode = this.rootNode;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.config?.currentValue?.widgetInstanceGlobalTimeContext) {\n this.updateMapConfigRealtime();\n }\n }\n\n startFollow(context) {\n if (context.id !== this.rootNode?.id) {\n this.rootNode = context;\n }\n this.mapConfig = {\n ...this.config.mapConfig,\n follow: true,\n realtime: true\n };\n }\n\n stopFollow() {\n this.mapConfig = {\n ...this.config.mapConfig,\n follow: false\n };\n if (this.config.widgetInstanceGlobalTimeContext) {\n this.updateMapConfigRealtime();\n }\n this.rootNode = this.savedNode;\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n }\n\n private listenToWidgetResizeEvent(dashboardChild: DashboardChildComponent) {\n dashboardChild.changeEnd\n .pipe(\n filter(child => child.lastChange === 'resize'),\n takeUntil(this.destroy$)\n )\n .subscribe(() => {\n this.clusterMap.reset();\n });\n }\n\n private updateMapConfigRealtime() {\n this.mapConfig.realtime = this.config.realtime || false;\n }\n}\n","<c8y-map-status\n [clusterMap]=\"mapWidget\"\n [(config)]=\"mapConfig\"\n (onUnfollow)=\"stopFollow()\"\n [buttonsConfig]=\"\n config.widgetInstanceGlobalTimeContext ? { realtime: { show: false } } : null\n \"\n></c8y-map-status>\n<c8y-cluster-map\n #mapWidget\n [rootNode]=\"rootNode\"\n [config]=\"mapConfig\"\n>\n <div\n *c8yMapPopup=\"let context\"\n class=\"map-marker\"\n >\n <a\n class=\"text-truncate deviceLink text-12\"\n routerLink=\"/device/{{ context.id }}\"\n >\n <strong>{{ context.name }}</strong>\n </a>\n <c8y-map-event-info [asset]=\"context\">\n <button\n type=\"button\"\n class=\"btn btn-default btn-xs btn-block m-t-8\"\n (click)=\"startFollow(context)\"\n [title]=\"'Activate realtime on this asset and follow it if it moves' | translate\"\n *ngIf=\"!mapConfig.follow\"\n translate\n >\n Follow\n </button>\n <button\n type=\"button\"\n class=\"btn btn-default btn-xs btn-block m-t-8\"\n (click)=\"stopFollow()\"\n [title]=\"'Stop following this asset.' | translate\"\n *ngIf=\"mapConfig.follow\"\n translate\n >\n Unfollow\n </button>\n </c8y-map-event-info>\n </div>\n</c8y-cluster-map>\n","import { CommonModule as NgCommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule as NgFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { CommonModule, FormsModule } from '@c8y/ngx-components';\nimport { IconSelectorModule } from '@c8y/ngx-components/icon-selector';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { MapModule } from '@c8y/ngx-components/map';\nimport { MapEventInfoComponent } from './map-event-info.component';\nimport { MapWidgetConfigComponent } from './map-widget-config.component';\nimport { MapWidgetComponent } from './map-widget.component';\n\n@NgModule({\n declarations: [MapWidgetComponent, MapWidgetConfigComponent, MapEventInfoComponent],\n imports: [\n NgCommonModule,\n NgFormsModule,\n CommonModule,\n FormsModule,\n IconSelectorModule,\n MapModule,\n RouterModule,\n TooltipModule.forRoot()\n ],\n exports: [MapWidgetComponent, MapWidgetConfigComponent, MapEventInfoComponent]\n})\nexport class MapWidgetModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i1","i5.MapEventInfoComponent","NgCommonModule","NgFormsModule","CommonModule","FormsModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"c8y-ngx-components-widgets-implementations-map.mjs","sources":["../../widgets/implementations/map/map-event-info.component.ts","../../widgets/implementations/map/map-event-info.component.html","../../widgets/implementations/map/map-widget-config.component.ts","../../widgets/implementations/map/map-widget-config.component.html","../../widgets/implementations/map/map-widget.component.ts","../../widgets/implementations/map/map-widget.component.html","../../widgets/implementations/map/map-widget.module.ts","../../widgets/implementations/map/c8y-ngx-components-widgets-implementations-map.ts"],"sourcesContent":["import { Component, Input, OnChanges } from '@angular/core';\nimport { EventService, IEvent, IManagedObject } from '@c8y/client';\n\n@Component({\n selector: 'c8y-map-event-info',\n templateUrl: './map-event-info.component.html'\n})\nexport class MapEventInfoComponent implements OnChanges {\n @Input()\n asset: IManagedObject;\n\n loading = true;\n\n event: IEvent;\n\n constructor(private eventService: EventService) {}\n\n async ngOnChanges() {\n this.loading = true;\n const { data } = await this.eventService.list({\n dateFrom: '1970-01-01',\n dateTo: new Date(Date.now()).toISOString(),\n fragmentType: 'c8y_Position',\n pageSize: 1,\n source: this.asset.id\n });\n this.event = data[0];\n this.loading = false;\n }\n}\n","<div class=\"text-muted text-10 p-t-4 p-b-4\">\n <span translate>Last position update:</span>\n <br />\n <c8y-loading *ngIf=\"loading\"></c8y-loading>\n <ng-container *ngIf=\"!loading\">\n <i *ngIf=\"!event\" translate>No information found</i>\n <ng-container *ngIf=\"event\">\n <i>{{ event.time | c8yDate }}</i>\n <ng-content></ng-content>\n </ng-container>\n </ng-container>\n</div>\n","import {\n AfterViewInit,\n Component,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { ControlContainer, NgForm } from '@angular/forms';\nimport { AlertService, gettext, MapDefaultConfig } from '@c8y/ngx-components';\nimport {\n ClusterMapConfig,\n MAP_DEFAULT_CONFIG,\n MapComponent,\n MapService,\n PositionManagedObject\n} from '@c8y/ngx-components/map';\nimport { TranslateService } from '@ngx-translate/core';\nimport type L from 'leaflet';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { MapWidgetConfig, RefreshOptions } from './map-widget.model';\n\n@Component({\n selector: 'c8y-map-widget-config',\n templateUrl: './map-widget-config.component.html',\n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }]\n})\nexport class MapWidgetConfigComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n @Input() config: MapWidgetConfig = {\n mapConfig: undefined\n };\n\n formConfig: ClusterMapConfig;\n\n canAutoCenter = true;\n isPositionedDevice = false;\n assets: PositionManagedObject[];\n refreshOptions: RefreshOptions = 'none';\n\n private destroyed$ = new Subject<void>();\n private leaflet: typeof L;\n private centerIcon: L.Marker;\n\n @ViewChild(MapComponent)\n private previewMap: MapComponent;\n\n constructor(\n private mapService: MapService,\n private alertService: AlertService,\n private translateService: TranslateService,\n @Inject(MAP_DEFAULT_CONFIG) private defaultMapConfig: Observable<MapDefaultConfig>\n ) {}\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n }\n\n ngOnInit() {\n this.defaultMapConfig.pipe(takeUntil(this.destroyed$)).subscribe(defaultConfig => {\n this.formConfig = {\n zoomLevel: defaultConfig.zoomLevel,\n center: defaultConfig.center\n };\n this.initForm();\n });\n }\n\n async initForm() {\n if (!this.config.mapConfig) {\n this.config.mapConfig = this.formConfig;\n }\n this.formConfig = {\n ...this.formConfig,\n ...this.config.mapConfig,\n disablePan: false\n };\n await this.updateAsset();\n }\n\n async ngOnChanges(changes: SimpleChanges) {\n if (\n changes.config.currentValue !== changes.config.previousValue &&\n !changes.config.firstChange\n ) {\n await this.updateAsset();\n }\n }\n\n async ngAfterViewInit() {\n this.previewMap.onInit.pipe(takeUntil(this.destroyed$)).subscribe(leaflet => {\n this.leaflet = leaflet;\n this.addCenterIcon(this.formConfig.center[0], this.formConfig.center[1]);\n });\n }\n\n onBeforeSave() {\n this.config.mapConfig = this.formConfig;\n return true;\n }\n\n zoomLevelChanged() {\n this.config.mapConfig = {\n ...this.config.mapConfig,\n zoomLevel: this.formConfig.zoomLevel\n };\n }\n\n changeCenter() {\n this.config.mapConfig = { ...this.formConfig, center: this.formConfig.center };\n }\n\n onPreviewZoomStart() {\n this.centerIcon.remove();\n }\n\n onPreviewZoomEnd(event: L.LeafletEvent) {\n this.formConfig.zoomLevel = Math.floor(event.target.getZoom());\n }\n\n onPreviewMapMove(event: L.LeafletEvent) {\n if (this.centerIcon) {\n this.centerIcon.remove();\n }\n const { lat, lng } = event.target.getBounds().getCenter();\n this.addCenterIcon(lat, lng);\n this.formConfig.center = [lat, lng];\n }\n\n useOwnPosition() {\n navigator.geolocation.getCurrentPosition(({ coords }) => {\n this.formConfig.center = [coords.latitude, coords.longitude];\n this.changeCenter();\n });\n }\n\n centerToAsset() {\n this.formConfig.center = [\n this.config.device.c8y_Position.lat,\n this.config.device.c8y_Position.lng\n ];\n this.changeCenter();\n }\n\n updateRefreshOptions() {\n this.formConfig.realtime = this.refreshOptions === 'realtime';\n if (this.refreshOptions === 'interval') {\n this.formConfig.refreshInterval ??= 5000;\n } else {\n this.formConfig.refreshInterval = null;\n }\n if (!this.formConfig.realtime) {\n this.formConfig.follow = false;\n }\n this.config.widgetInstanceGlobalTimeContext =\n this.refreshOptions === 'dashboard-realtime-context';\n if (this.config.widgetInstanceGlobalTimeContext) {\n this.formConfig.realtime = null;\n }\n }\n\n selectIcon(icon: string) {\n this.formConfig.icon = icon;\n this.config.mapConfig.icon = icon;\n this.previewMap.refreshMarkers();\n }\n\n private async updateAsset() {\n this.canAutoCenter = this.mapService.hasPosition(this.config.device);\n this.isPositionedDevice = this.mapService.isPositionedDevice(this.config.device);\n this.refreshOptions = this.getRefreshOptions();\n this.updateRefreshOptions();\n\n const { data, paging } = await this.mapService.getAllPositionMOs(this.config.device);\n this.assets = data;\n if (paging.totalPages > 1) {\n this.alertService.danger(\n gettext(\n 'It might be possible that assets are not shown in the preview, as the current selection has more than 500 assets and the preview only supports a maximum of 500 assets.'\n )\n );\n }\n }\n\n private getRefreshOptions(): RefreshOptions {\n let option: RefreshOptions = 'none';\n if (this.formConfig.realtime) {\n option = 'realtime';\n } else if (this.formConfig.refreshInterval) {\n option = 'interval';\n } else if (this.config.widgetInstanceGlobalTimeContext) {\n option = 'dashboard-realtime-context';\n }\n const isNotAllowedOption =\n (!this.isPositionedDevice && option === 'dashboard-realtime-context') ||\n (!this.isPositionedDevice && option === 'realtime') ||\n (this.isPositionedDevice && option === 'interval');\n option = isNotAllowedOption ? 'none' : option;\n return option;\n }\n\n private addCenterIcon(lat: number, lng: number) {\n const titleText = this.translateService.instant(gettext('Map center'));\n const icon = this.leaflet.divIcon({\n html: `<i style=\"pointer-events: none\" class=\"c8y-map-marker-icon text-muted dlt-c8y-icon-target icon-2x\" title=\"${titleText}\" />`\n });\n this.centerIcon = this.leaflet.marker([lat, lng], {\n icon\n });\n this.previewMap.addMarkerToMap(this.centerIcon);\n }\n}\n","<div class=\"row p-t-16\">\n <div class=\"col-xs-2\">\n <c8y-form-group class=\"m-b-0 text-center form-group-sm\">\n <label translate>Marker icon</label>\n <c8y-icon-selector-wrapper\n [canRemoveIcon]=\"true\"\n [selectedIcon]=\"this.formConfig.icon\"\n (onSelect)=\"selectIcon($event)\"\n ></c8y-icon-selector-wrapper>\n </c8y-form-group>\n </div>\n <div class=\"col-xs-10\">\n <div class=\"row tight-grid separator-bottom\">\n <div class=\"col-xs-4\">\n <div class=\"form-group form-group-sm\">\n <label translate>Zoom level</label>\n <c8y-range\n class=\"label-bottom\"\n #range\n [(ngModel)]=\"formConfig.zoomLevel\"\n (change)=\"zoomLevelChanged()\"\n name=\"zoomLevel\"\n >\n <input type=\"range\" min=\"2\" max=\"18\" step=\"1\" />\n </c8y-range>\n </div>\n </div>\n <div class=\"col-xs-8\">\n <c8y-form-group class=\"form-group-sm m-b-8\">\n <label translate>Center bound</label>\n <div class=\"input-group input-group-sm\">\n <input\n class=\"form-control\"\n [(ngModel)]=\"formConfig.center[0]\"\n (change)=\"changeCenter()\"\n placeholder=\"lat\"\n name=\"centerLat\"\n type=\"number\"\n required\n />\n <input\n class=\"form-control\"\n [(ngModel)]=\"formConfig.center[1]\"\n (change)=\"changeCenter()\"\n placeholder=\"lng\"\n name=\"centerLng\"\n type=\"number\"\n required\n />\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Use your location' | translate\"\n [tooltip]=\"'Use your location' | translate\"\n (click)=\"useOwnPosition()\"\n placement=\"top\"\n container=\"body\"\n >\n <i class=\"icon-14\" c8yIcon=\"location-arrow\"></i>\n </button>\n </div>\n <div class=\"input-group-btn\" *ngIf=\"canAutoCenter\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Use selected asset location' | translate\"\n [tooltip]=\"'Use selected asset location' | translate\"\n (click)=\"centerToAsset()\"\n placement=\"top\"\n container=\"body\"\n >\n <i class=\"icon-14\" c8yIcon=\"location\"></i>\n </button>\n </div>\n </div>\n <div class=\"help-block\">\n {{ 'Drag the map to the desired position' | translate }}\n </div>\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row tight-grid p-t-8 d-flex a-i-center\">\n <div class=\"col-xs-6\">\n <c8y-form-group class=\"m-b-0 form-group-sm\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"selectExample\"\n [(ngModel)]=\"refreshOptions\"\n (change)=\"updateRefreshOptions()\"\n title=\"{{ 'Refresh options' | translate }}\"\n name=\"refreshSelection\"\n >\n <option [title]=\"'Only refreshing on interaction' | translate\" value=\"none\" translate>\n No automatic refresh\n </option>\n <option\n *ngIf=\"!isPositionedDevice\"\n [title]=\"'Refreshing after a give interval and on interaction' | translate\"\n value=\"interval\"\n translate\n >\n Use refresh interval\n </option>\n <option\n *ngIf=\"isPositionedDevice\"\n [title]=\"'Live updating on each position change' | translate\"\n value=\"realtime\"\n translate\n >\n Realtime\n </option>\n <option\n *ngIf=\"isPositionedDevice\"\n [title]=\"'Bind widget to dashboard realtime context' | translate\"\n value=\"dashboard-realtime-context\"\n translate\n >\n Dashboard realtime context\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-xs-8\">\n <div class=\"form-group form-group-sm m-b-0\">\n <c8y-range\n class=\"label-bottom\"\n #intervalRange\n *ngIf=\"refreshOptions === 'interval'\"\n [(ngModel)]=\"formConfig.refreshInterval\"\n name=\"refreshInterval\"\n >\n <ng-template #c8yRangeValue>\n <div>\n <span\n [translateParams]=\"{ intervalInSeconds: intervalRange.value * 0.001 }\"\n translate\n ngNonBindable\n >\n {{ intervalInSeconds }} s\n </span>\n </div>\n </ng-template>\n <input type=\"range\" min=\"5000\" max=\"100000\" step=\"1000\" />\n </c8y-range>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline\"\n *ngIf=\"refreshOptions === 'realtime' || refreshOptions === 'dashboard-realtime-context'\"\n >\n <input [(ngModel)]=\"formConfig.follow\" name=\"follow\" type=\"checkbox\" />\n <span></span>\n <span class=\"text-12\" translate>Follow selected</span>\n </label>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"p-t-16 p-b-16\" style=\"width: 100%; height: 240px\">\n <c8y-map\n *ngIf=\"config.mapConfig\"\n [assets]=\"assets\"\n [config]=\"config.mapConfig\"\n (onMove)=\"onPreviewMapMove($event)\"\n (onZoomStart)=\"onPreviewZoomStart()\"\n (onZoomEnd)=\"onPreviewZoomEnd($event)\"\n ></c8y-map>\n</div>\n","import {\n Component,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { IManagedObject, InventoryService } from '@c8y/client';\nimport { ClusterMapComponent, ClusterMapConfig } from '@c8y/ngx-components/map';\nimport { DashboardChildComponent } from '@c8y/ngx-components';\nimport { MapWidgetConfig } from './map-widget.model';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { ContextDashboardComponent } from '@c8y/ngx-components/context-dashboard';\n\n@Component({\n selector: 'c8y-map-widget',\n templateUrl: './map-widget.component.html'\n})\nexport class MapWidgetComponent implements OnInit, OnChanges, OnDestroy {\n mapConfig: ClusterMapConfig = { center: [0, 0] };\n rootNode: IManagedObject;\n @Input() config: MapWidgetConfig;\n\n @ViewChild(ClusterMapComponent)\n clusterMap: ClusterMapComponent;\n\n private savedNode: IManagedObject;\n private destroy$ = new Subject();\n\n constructor(\n dashboardChild: DashboardChildComponent,\n @Optional() private dashboardContextComponent: ContextDashboardComponent,\n private inventory: InventoryService\n ) {\n this.listenToWidgetResizeEvent(dashboardChild);\n }\n\n async ngOnInit() {\n if (this.dashboardContextComponent?.dashboard?.deviceType && !this.config.device) {\n const context = this.dashboardContextComponent.context;\n if (context?.id) {\n const { id } = context;\n this.config.device = (await this.inventory.detail(id)).data;\n }\n }\n if (this.config.device) {\n this.rootNode = this.config.device;\n }\n this.mapConfig = { ...this.config.mapConfig };\n if (this.config.widgetInstanceGlobalTimeContext) {\n this.updateMapConfigRealtime();\n }\n this.savedNode = this.rootNode;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.config?.currentValue?.widgetInstanceGlobalTimeContext) {\n this.updateMapConfigRealtime();\n }\n }\n\n startFollow(context) {\n if (context.id !== this.rootNode?.id) {\n this.rootNode = context;\n }\n this.mapConfig = {\n ...this.config.mapConfig,\n follow: true,\n realtime: true\n };\n }\n\n stopFollow() {\n this.mapConfig = {\n ...this.config.mapConfig,\n follow: false\n };\n if (this.config.widgetInstanceGlobalTimeContext) {\n this.updateMapConfigRealtime();\n }\n this.rootNode = this.savedNode;\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n }\n\n private listenToWidgetResizeEvent(dashboardChild: DashboardChildComponent) {\n dashboardChild.changeEnd\n .pipe(\n filter(child => child.lastChange === 'resize'),\n takeUntil(this.destroy$)\n )\n .subscribe(() => {\n this.clusterMap.reset();\n });\n }\n\n private updateMapConfigRealtime() {\n this.mapConfig.realtime = this.config.realtime || false;\n }\n}\n","<c8y-map-status\n [clusterMap]=\"mapWidget\"\n [(config)]=\"mapConfig\"\n (onUnfollow)=\"stopFollow()\"\n [buttonsConfig]=\"\n config.widgetInstanceGlobalTimeContext ? { realtime: { show: false } } : null\n \"\n></c8y-map-status>\n<c8y-cluster-map\n #mapWidget\n [rootNode]=\"rootNode\"\n [config]=\"mapConfig\"\n>\n <div\n *c8yMapPopup=\"let context\"\n class=\"map-marker\"\n >\n <a\n class=\"text-truncate deviceLink text-12\"\n routerLink=\"/device/{{ context.id }}\"\n >\n <strong>{{ context.name }}</strong>\n </a>\n <c8y-map-event-info [asset]=\"context\">\n <button\n type=\"button\"\n class=\"btn btn-default btn-xs btn-block m-t-8\"\n (click)=\"startFollow(context)\"\n [title]=\"'Activate realtime on this asset and follow it if it moves' | translate\"\n *ngIf=\"!mapConfig.follow\"\n translate\n >\n Follow\n </button>\n <button\n type=\"button\"\n class=\"btn btn-default btn-xs btn-block m-t-8\"\n (click)=\"stopFollow()\"\n [title]=\"'Stop following this asset.' | translate\"\n *ngIf=\"mapConfig.follow\"\n translate\n >\n Unfollow\n </button>\n </c8y-map-event-info>\n </div>\n</c8y-cluster-map>\n","import { CommonModule as NgCommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule as NgFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { CommonModule, FormsModule } from '@c8y/ngx-components';\nimport { IconSelectorModule } from '@c8y/ngx-components/icon-selector';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { MapModule } from '@c8y/ngx-components/map';\nimport { MapEventInfoComponent } from './map-event-info.component';\nimport { MapWidgetConfigComponent } from './map-widget-config.component';\nimport { MapWidgetComponent } from './map-widget.component';\n\n@NgModule({\n declarations: [MapWidgetComponent, MapWidgetConfigComponent, MapEventInfoComponent],\n imports: [\n NgCommonModule,\n NgFormsModule,\n CommonModule,\n FormsModule,\n IconSelectorModule,\n MapModule,\n RouterModule,\n TooltipModule.forRoot()\n ],\n exports: [MapWidgetComponent, MapWidgetConfigComponent, MapEventInfoComponent]\n})\nexport class MapWidgetModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i3","i1","i5","i6","i7.MapEventInfoComponent","NgCommonModule","NgFormsModule","CommonModule","FormsModule"],"mappings":"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"}
|
package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-box-model.mjs
CHANGED
|
@@ -2,8 +2,8 @@ import { __awaiter } from 'tslib';
|
|
|
2
2
|
|
|
3
3
|
function loadBoxModel() {
|
|
4
4
|
return __awaiter(this, void 0, void 0, function* () {
|
|
5
|
-
const
|
|
6
|
-
return boxModel;
|
|
5
|
+
const boxModel = yield import('@c8y/style/three-d-models/box-model.json');
|
|
6
|
+
return boxModel.default || boxModel;
|
|
7
7
|
});
|
|
8
8
|
}
|
|
9
9
|
|
package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-box-model.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-box-model.mjs","sources":["../../widgets/implementations/three-d-rotation/lazy-box-model/lazy-load-box-model.ts","../../widgets/implementations/three-d-rotation/lazy-box-model/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-box-model.ts"],"sourcesContent":["export async function loadBoxModel() {\n const
|
|
1
|
+
{"version":3,"file":"c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-box-model.mjs","sources":["../../widgets/implementations/three-d-rotation/lazy-box-model/lazy-load-box-model.ts","../../widgets/implementations/three-d-rotation/lazy-box-model/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-box-model.ts"],"sourcesContent":["export async function loadBoxModel() {\n const boxModel = await import('@c8y/style/three-d-models/box-model.json');\n return boxModel.default || boxModel;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;SAAsB,YAAY,GAAA;;AAChC,QAAA,MAAM,QAAQ,GAAG,MAAM,OAAO,0CAA0C,CAAC,CAAC;AAC1E,QAAA,OAAO,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC;KACrC,CAAA,CAAA;AAAA;;ACHD;;AAEG;;;;"}
|
package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-phone-model.mjs
CHANGED
|
@@ -2,8 +2,8 @@ import { __awaiter } from 'tslib';
|
|
|
2
2
|
|
|
3
3
|
function loadPhoneModel() {
|
|
4
4
|
return __awaiter(this, void 0, void 0, function* () {
|
|
5
|
-
const
|
|
6
|
-
return phoneModel;
|
|
5
|
+
const phoneModel = yield import('@c8y/style/three-d-models/phone-model.json');
|
|
6
|
+
return phoneModel.default || phoneModel;
|
|
7
7
|
});
|
|
8
8
|
}
|
|
9
9
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-phone-model.mjs","sources":["../../widgets/implementations/three-d-rotation/lazy-phone-model/lazy-load-phone-model.ts","../../widgets/implementations/three-d-rotation/lazy-phone-model/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-phone-model.ts"],"sourcesContent":["export async function loadPhoneModel() {\n const
|
|
1
|
+
{"version":3,"file":"c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-phone-model.mjs","sources":["../../widgets/implementations/three-d-rotation/lazy-phone-model/lazy-load-phone-model.ts","../../widgets/implementations/three-d-rotation/lazy-phone-model/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-phone-model.ts"],"sourcesContent":["export async function loadPhoneModel() {\n const phoneModel = await import('@c8y/style/three-d-models/phone-model.json');\n return phoneModel.default || phoneModel;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;SAAsB,cAAc,GAAA;;AAClC,QAAA,MAAM,UAAU,GAAG,MAAM,OAAO,4CAA4C,CAAC,CAAC;AAC9E,QAAA,OAAO,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC;KACzC,CAAA,CAAA;AAAA;;ACHD;;AAEG;;;;"}
|