@c8y/ngx-components 1011.0.24 → 1011.0.27
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/binary-file-download/binary-file-download.service.d.ts +3 -3
- package/binary-file-download/c8y-ngx-components-binary-file-download.metadata.json +1 -1
- package/bundles/c8y-ngx-components-binary-file-download.umd.js +17 -14
- package/bundles/c8y-ngx-components-binary-file-download.umd.js.map +1 -1
- package/bundles/c8y-ngx-components-binary-file-download.umd.min.js +2 -2
- package/bundles/c8y-ngx-components-binary-file-download.umd.min.js.map +1 -1
- package/bundles/c8y-ngx-components-protocol-lpwan.umd.js +15 -7
- package/bundles/c8y-ngx-components-protocol-lpwan.umd.js.map +1 -1
- package/bundles/c8y-ngx-components-protocol-lpwan.umd.min.js +2 -2
- package/bundles/c8y-ngx-components-protocol-lpwan.umd.min.js.map +1 -1
- package/bundles/c8y-ngx-components-repository.umd.js +36 -14
- package/bundles/c8y-ngx-components-repository.umd.js.map +1 -1
- package/bundles/c8y-ngx-components-repository.umd.min.js +1 -1
- package/bundles/c8y-ngx-components-repository.umd.min.js.map +1 -1
- package/bundles/c8y-ngx-components.umd.js +1 -1
- package/bundles/c8y-ngx-components.umd.js.map +1 -1
- package/bundles/c8y-ngx-components.umd.min.js +1 -1
- package/bundles/c8y-ngx-components.umd.min.js.map +1 -1
- package/c8y-ngx-components.metadata.json +1 -1
- package/esm2015/binary-file-download/binary-file-download.service.js +15 -13
- package/esm2015/core/select/typeahead.component.js +2 -2
- package/esm2015/protocol-lpwan/lpwan-set-device-protocol.component.js +10 -3
- package/esm2015/protocol-lpwan/lpwan-set-device-protocol.service.js +6 -5
- package/esm2015/repository/configuration-device-tab/device-configuration.component.js +7 -2
- package/esm2015/repository/configuration-device-tab/device-configuration.guard.js +4 -2
- package/esm2015/repository/firmware-device-tab/firmware-device-tab.component.js +4 -3
- package/esm2015/repository/firmware-device-tab/firmware-device-tab.guard.js +4 -5
- package/esm2015/repository/software-device-tab/device-software-list.component.js +10 -3
- package/esm2015/repository/software-device-tab/installed-software.component.js +10 -2
- package/esm2015/repository/software-device-tab/software-device-tab.component.js +2 -2
- package/esm2015/repository/software-device-tab/software-device-tab.guard.js +9 -5
- package/fesm2015/c8y-ngx-components-binary-file-download.js +14 -12
- package/fesm2015/c8y-ngx-components-binary-file-download.js.map +1 -1
- package/fesm2015/c8y-ngx-components-protocol-lpwan.js +14 -6
- package/fesm2015/c8y-ngx-components-protocol-lpwan.js.map +1 -1
- package/fesm2015/c8y-ngx-components-repository.js +37 -15
- package/fesm2015/c8y-ngx-components-repository.js.map +1 -1
- package/fesm2015/c8y-ngx-components.js +1 -1
- package/fesm2015/c8y-ngx-components.js.map +1 -1
- package/locales/locales.pot +6 -3
- package/package.json +2 -2
- package/protocol-lpwan/c8y-ngx-components-protocol-lpwan.metadata.json +1 -1
- package/protocol-lpwan/lpwan-set-device-protocol.component.d.ts +3 -1
- package/repository/c8y-ngx-components-repository.metadata.json +1 -1
- package/repository/configuration-device-tab/device-configuration.guard.d.ts +1 -1
- package/repository/firmware-device-tab/firmware-device-tab.component.d.ts +1 -0
- package/repository/firmware-device-tab/firmware-device-tab.guard.d.ts +1 -1
- package/repository/software-device-tab/device-software-list.component.d.ts +7 -2
- package/repository/software-device-tab/installed-software.component.d.ts +4 -0
- package/repository/software-device-tab/software-device-tab.guard.d.ts +2 -2
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import { get, indexOf } from 'lodash-es';
|
|
2
|
+
import { get, has, indexOf } from 'lodash-es';
|
|
3
3
|
const FIRMWARE_FRAGMENT = 'c8y_Firmware';
|
|
4
4
|
const SUPPORTED_OPERATIONS_FRAGMENT = 'c8y_SupportedOperations';
|
|
5
5
|
export class FirmwareDeviceTabGuard {
|
|
6
6
|
canActivate(route) {
|
|
7
7
|
const contextData = get(route, 'data.contextData') || get(route, 'parent.data.contextData');
|
|
8
8
|
const supportedOperations = get(contextData, SUPPORTED_OPERATIONS_FRAGMENT);
|
|
9
|
-
return !!supportedOperations
|
|
10
|
-
|
|
11
|
-
: false;
|
|
9
|
+
return ((!!supportedOperations ? indexOf(supportedOperations, FIRMWARE_FRAGMENT) >= 0 : false) ||
|
|
10
|
+
has(contextData, 'c8y_Firmware'));
|
|
12
11
|
}
|
|
13
12
|
}
|
|
14
13
|
FirmwareDeviceTabGuard.decorators = [
|
|
15
14
|
{ type: Injectable }
|
|
16
15
|
];
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlybXdhcmUtZGV2aWNlLXRhYi5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3JlcG9zaXRvcnkvZmlybXdhcmUtZGV2aWNlLXRhYi9maXJtd2FyZS1kZXZpY2UtdGFiLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTlDLE1BQU0saUJBQWlCLEdBQUcsY0FBYyxDQUFDO0FBQ3pDLE1BQU0sNkJBQTZCLEdBQUcseUJBQXlCLENBQUM7QUFHaEUsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxXQUFXLENBQUMsS0FBSztRQUNmLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLHlCQUF5QixDQUFDLENBQUM7UUFDNUYsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQUMsV0FBVyxFQUFFLDZCQUE2QixDQUFDLENBQUM7UUFDNUUsT0FBTyxDQUNMLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUN0RixHQUFHLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUNqQyxDQUFDO0lBQ0osQ0FBQzs7O1lBVEYsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbkFjdGl2YXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGdldCwgaGFzLCBpbmRleE9mIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuY29uc3QgRklSTVdBUkVfRlJBR01FTlQgPSAnYzh5X0Zpcm13YXJlJztcbmNvbnN0IFNVUFBPUlRFRF9PUEVSQVRJT05TX0ZSQUdNRU5UID0gJ2M4eV9TdXBwb3J0ZWRPcGVyYXRpb25zJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZpcm13YXJlRGV2aWNlVGFiR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG4gIGNhbkFjdGl2YXRlKHJvdXRlKSB7XG4gICAgY29uc3QgY29udGV4dERhdGEgPSBnZXQocm91dGUsICdkYXRhLmNvbnRleHREYXRhJykgfHwgZ2V0KHJvdXRlLCAncGFyZW50LmRhdGEuY29udGV4dERhdGEnKTtcbiAgICBjb25zdCBzdXBwb3J0ZWRPcGVyYXRpb25zID0gZ2V0KGNvbnRleHREYXRhLCBTVVBQT1JURURfT1BFUkFUSU9OU19GUkFHTUVOVCk7XG4gICAgcmV0dXJuIChcbiAgICAgICghIXN1cHBvcnRlZE9wZXJhdGlvbnMgPyBpbmRleE9mKHN1cHBvcnRlZE9wZXJhdGlvbnMsIEZJUk1XQVJFX0ZSQUdNRU5UKSA+PSAwIDogZmFsc2UpIHx8XG4gICAgICBoYXMoY29udGV4dERhdGEsICdjOHlfRmlybXdhcmUnKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import { Component, Output, Input, EventEmitter } from '@angular/core';
|
|
2
|
-
import { filter } from 'lodash-es';
|
|
2
|
+
import { filter, get } from 'lodash-es';
|
|
3
3
|
export class DeviceSoftwareListComponent {
|
|
4
4
|
constructor() {
|
|
5
5
|
this.update = new EventEmitter();
|
|
6
6
|
this.remove = new EventEmitter();
|
|
7
|
+
this.supportsSoftwareOperations = false;
|
|
8
|
+
this.operationTypes = ['c8y_SoftwareUpdate', 'c8y_SoftwareList', 'c8y_Software'];
|
|
9
|
+
}
|
|
10
|
+
ngOnInit() {
|
|
11
|
+
const supportedOperations = get(this.device, 'c8y_SupportedOperations', []);
|
|
12
|
+
this.supportsSoftwareOperations = this.operationTypes.some(operationType => supportedOperations.indexOf(operationType) > -1);
|
|
7
13
|
}
|
|
8
14
|
ngAfterContentInit() {
|
|
9
15
|
this.showUpdate = this.update.observers.length > 0;
|
|
@@ -17,13 +23,14 @@ export class DeviceSoftwareListComponent {
|
|
|
17
23
|
DeviceSoftwareListComponent.decorators = [
|
|
18
24
|
{ type: Component, args: [{
|
|
19
25
|
selector: 'c8y-device-software-list',
|
|
20
|
-
template: "<c8y-list-group class=\"no-border-last\">\n <c8y-li\n [ngClass]=\"{ disabled: isSoftwareGoingToBeChanged(software) }\"\n *ngFor=\"let software of softwareList\"\n >\n <!-- SOFTWARE ICON -->\n <c8y-li-icon>\n <i c8yIcon=\"c8y-tools\"></i>\n </c8y-li-icon>\n\n <c8y-li-body class=\"content-flex-20\">\n <div title=\"{{ software.name }}\" class=\"col-8\">\n <!-- SOFTWARE NAME -->\n <p class=\"text-truncate\">{{ software.name }}</p>\n <!-- SOFTWARE VERSION -->\n <p class=\"text-truncate\">\n <span class=\"text-label-small m-r-4\" translate>\n Version\n </span>\n <span title=\"{{ software.version }}\">\n {{ software.version }}\n </span>\n </p>\n </div>\n\n <div
|
|
26
|
+
template: "<c8y-list-group class=\"no-border-last\">\n <c8y-li\n [ngClass]=\"{ disabled: isSoftwareGoingToBeChanged(software) }\"\n *ngFor=\"let software of softwareList\"\n >\n <!-- SOFTWARE ICON -->\n <c8y-li-icon>\n <i c8yIcon=\"c8y-tools\"></i>\n </c8y-li-icon>\n\n <c8y-li-body class=\"content-flex-20\">\n <div title=\"{{ software.name }}\" class=\"col-8\">\n <!-- SOFTWARE NAME -->\n <p class=\"text-truncate\">{{ software.name }}</p>\n <!-- SOFTWARE VERSION -->\n <p class=\"text-truncate\">\n <span class=\"text-label-small m-r-4\" translate>\n Version\n </span>\n <span title=\"{{ software.version }}\">\n {{ software.version }}\n </span>\n </p>\n </div>\n\n <div\n *ngIf=\"supportsSoftwareOperations && (showUpdate || showRemove)\"\n class=\"col-4 text-right\"\n >\n <!-- UPDATE SOFTWARE -->\n <button\n *ngIf=\"showUpdate && !isSoftwareGoingToBeChanged(software)\"\n class=\"btn btn-default btn-xs showOnHover\"\n (click)=\"update.emit(software)\"\n title=\"{{ 'Update`software,verb`' | translate }}\"\n translate\n >\n Update\n </button>\n\n <!-- REMOVE SOFTWARE -->\n <button\n *ngIf=\"showRemove && !isSoftwareGoingToBeChanged(software)\"\n title=\"{{ 'Remove`software`' | translate }}\"\n class=\"showOnHover btn btn-dot pull-right\"\n (click)=\"remove.emit(software)\"\n >\n <i c8yIcon=\"minus-circle\" class=\"text-danger\"></i>\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n</c8y-list-group>\n"
|
|
21
27
|
},] }
|
|
22
28
|
];
|
|
23
29
|
DeviceSoftwareListComponent.propDecorators = {
|
|
24
30
|
softwareList: [{ type: Input }],
|
|
31
|
+
device: [{ type: Input }],
|
|
25
32
|
deviceSoftwareChanges: [{ type: Input }],
|
|
26
33
|
update: [{ type: Output }],
|
|
27
34
|
remove: [{ type: Output }]
|
|
28
35
|
};
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXNvZnR3YXJlLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcmVwb3NpdG9yeS9zb2Z0d2FyZS1kZXZpY2UtdGFiL2RldmljZS1zb2Z0d2FyZS1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBT3hDLE1BQU0sT0FBTywyQkFBMkI7SUFKeEM7UUFRWSxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFDNUMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBR3RELCtCQUEwQixHQUFZLEtBQUssQ0FBQztRQUUzQixtQkFBYyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFrQi9GLENBQUM7SUFoQkMsUUFBUTtRQUNOLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUseUJBQXlCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUN4RCxhQUFhLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDakUsQ0FBQztJQUNKLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsMEJBQTBCLENBQUMsUUFBd0I7UUFDakQsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNyRSxPQUFPLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7OztZQS9CRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDBCQUEwQjtnQkFDcEMsc3NEQUFrRDthQUNuRDs7OzJCQUVFLEtBQUs7cUJBQ0wsS0FBSztvQ0FDTCxLQUFLO3FCQUNMLE1BQU07cUJBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPdXRwdXQsIElucHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgZmlsdGVyLCBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgRGV2aWNlU29mdHdhcmUsIERldmljZVNvZnR3YXJlQ2hhbmdlIH0gZnJvbSAnLi4vcmVwb3NpdG9yeS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kZXZpY2Utc29mdHdhcmUtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnZGV2aWNlLXNvZnR3YXJlLWxpc3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIERldmljZVNvZnR3YXJlTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHNvZnR3YXJlTGlzdDogRGV2aWNlU29mdHdhcmVbXTtcbiAgQElucHV0KCkgZGV2aWNlOiBJTWFuYWdlZE9iamVjdDtcbiAgQElucHV0KCkgZGV2aWNlU29mdHdhcmVDaGFuZ2VzOiBEZXZpY2VTb2Z0d2FyZUNoYW5nZVtdO1xuICBAT3V0cHV0KCkgdXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxEZXZpY2VTb2Z0d2FyZT4oKTtcbiAgQE91dHB1dCgpIHJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGV2aWNlU29mdHdhcmU+KCk7XG4gIHNob3dVcGRhdGU6IGJvb2xlYW47XG4gIHNob3dSZW1vdmU6IGJvb2xlYW47XG4gIHN1cHBvcnRzU29mdHdhcmVPcGVyYXRpb25zOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBvcGVyYXRpb25UeXBlcyA9IFsnYzh5X1NvZnR3YXJlVXBkYXRlJywgJ2M4eV9Tb2Z0d2FyZUxpc3QnLCAnYzh5X1NvZnR3YXJlJ107XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3Qgc3VwcG9ydGVkT3BlcmF0aW9ucyA9IGdldCh0aGlzLmRldmljZSwgJ2M4eV9TdXBwb3J0ZWRPcGVyYXRpb25zJywgW10pO1xuICAgIHRoaXMuc3VwcG9ydHNTb2Z0d2FyZU9wZXJhdGlvbnMgPSB0aGlzLm9wZXJhdGlvblR5cGVzLnNvbWUoXG4gICAgICBvcGVyYXRpb25UeXBlID0+IHN1cHBvcnRlZE9wZXJhdGlvbnMuaW5kZXhPZihvcGVyYXRpb25UeXBlKSA+IC0xXG4gICAgKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLnNob3dVcGRhdGUgPSB0aGlzLnVwZGF0ZS5vYnNlcnZlcnMubGVuZ3RoID4gMDtcbiAgICB0aGlzLnNob3dSZW1vdmUgPSB0aGlzLnJlbW92ZS5vYnNlcnZlcnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGlzU29mdHdhcmVHb2luZ1RvQmVDaGFuZ2VkKHNvZnR3YXJlOiBEZXZpY2VTb2Z0d2FyZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlbGV2YW50Q2hhbmdlcyA9IGZpbHRlcih0aGlzLmRldmljZVNvZnR3YXJlQ2hhbmdlcywgc29mdHdhcmUpO1xuICAgIHJldHVybiByZWxldmFudENoYW5nZXMubGVuZ3RoID4gMDtcbiAgfVxufVxuIl19
|
|
@@ -4,6 +4,7 @@ import { shareReplay, map, switchMap, distinctUntilChanged } from 'rxjs/operator
|
|
|
4
4
|
import { BsModalService } from 'ngx-bootstrap/modal';
|
|
5
5
|
import { InventoryService } from '@c8y/client';
|
|
6
6
|
import { gettext, ModalSelectionMode } from '@c8y/ngx-components';
|
|
7
|
+
import { get } from 'lodash-es';
|
|
7
8
|
import { RepositoryService } from '../repository.service';
|
|
8
9
|
import { RepositoryType } from './../repository.model';
|
|
9
10
|
import { RepositorySelectModalComponent } from '../select-modal/repository-select-modal.component';
|
|
@@ -13,6 +14,12 @@ export class InstalledSoftwareComponent {
|
|
|
13
14
|
this.inventory = inventory;
|
|
14
15
|
this.bsModal = bsModal;
|
|
15
16
|
this.changes = new EventEmitter();
|
|
17
|
+
this.supportsSoftwareOperations = false;
|
|
18
|
+
this.operationTypes = ['c8y_SoftwareUpdate', 'c8y_SoftwareList', 'c8y_Software'];
|
|
19
|
+
}
|
|
20
|
+
ngOnInit() {
|
|
21
|
+
const supportedOperations = get(this.device, 'c8y_SupportedOperations', []);
|
|
22
|
+
this.supportsSoftwareOperations = this.operationTypes.some(operationType => supportedOperations.indexOf(operationType) > -1);
|
|
16
23
|
}
|
|
17
24
|
installSoftware() {
|
|
18
25
|
this.displaySoftwareSelectModal({
|
|
@@ -87,7 +94,7 @@ export class InstalledSoftwareComponent {
|
|
|
87
94
|
InstalledSoftwareComponent.decorators = [
|
|
88
95
|
{ type: Component, args: [{
|
|
89
96
|
selector: 'c8y-installed-software',
|
|
90
|
-
template: "<div class=\"inner-scroll d-flex d-col\">\n <div class=\"card-header large-padding separator sticky-top\">\n <h4 class=\"card-title\" translate>Installed software</h4>\n </div>\n <div class=\"flex-grow\">\n <fieldset *ngIf=\"deviceSoftwareChangesOperation\" class=\"card-block large-padding bg-gray-lighter\">\n <c8y-single-operation [operation]=\"deviceSoftwareChangesOperation\"></c8y-single-operation>\n </fieldset>\n\n <fieldset class=\"d-contents\" [disabled]=\"deviceSoftwareChangesInProgress\">\n <!-- EMPTY STATE -->\n <div class=\"card-block\" *ngIf=\"softwareList.length === 0\">\n <div class=\"c8y-empty-state text-center m-t-16\">\n <h1 class=\"c8y-icon c8y-icon-tools c8y-icon-duocolor\"></h1>\n <p>\n <strong translate>No software installed.</strong> <br />\n <small translate>Click below to install software into this device.</small>\n </p>\n </div>\n </div>\n\n <!-- NOT EMPTY STATE -->\n <ng-container *ngIf=\"softwareList.length > 0\">\n <c8y-device-software-list\n [softwareList]=\"softwareList\"\n [deviceSoftwareChanges]=\"deviceSoftwareChanges\"\n (update)=\"updateSoftware($event)\"\n (remove)=\"removeSoftware($event)\"\n class=\"d-block p-l-16 p-r-16\"\n >\n </c8y-device-software-list>\n </ng-container>\n </fieldset>\n </div>\n<!-- INSTALL SOFTWARE-->\n <div class=\"card-footer large-padding separator sticky-bottom\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Install software' | translate }}\"\n (click)=\"installSoftware()\"\n [disabled]=\"deviceSoftwareChangesInProgress\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Install software' | translate }}\n </button>\n </div>\n</div>\n"
|
|
97
|
+
template: "<div class=\"inner-scroll d-flex d-col\">\n <div class=\"card-header large-padding separator sticky-top\">\n <h4 class=\"card-title\" translate>Installed software</h4>\n </div>\n <div class=\"flex-grow\">\n <fieldset *ngIf=\"deviceSoftwareChangesOperation\" class=\"card-block large-padding bg-gray-lighter\">\n <c8y-single-operation [operation]=\"deviceSoftwareChangesOperation\"></c8y-single-operation>\n </fieldset>\n\n <fieldset class=\"d-contents\" [disabled]=\"deviceSoftwareChangesInProgress\">\n <!-- EMPTY STATE -->\n <div class=\"card-block\" *ngIf=\"softwareList.length === 0\">\n <div class=\"c8y-empty-state text-center m-t-16\">\n <h1 class=\"c8y-icon c8y-icon-tools c8y-icon-duocolor\"></h1>\n <p>\n <strong translate>No software installed.</strong> <br />\n <small translate>Click below to install software into this device.</small>\n </p>\n </div>\n </div>\n\n <!-- NOT EMPTY STATE -->\n <ng-container *ngIf=\"softwareList.length > 0\">\n <c8y-device-software-list\n [device]=\"device\"\n [softwareList]=\"softwareList\"\n [deviceSoftwareChanges]=\"deviceSoftwareChanges\"\n (update)=\"updateSoftware($event)\"\n (remove)=\"removeSoftware($event)\"\n class=\"d-block p-l-16 p-r-16\"\n >\n </c8y-device-software-list>\n </ng-container>\n </fieldset>\n </div>\n <!-- INSTALL SOFTWARE-->\n <div *ngIf=\"supportsSoftwareOperations\" class=\"card-footer large-padding separator sticky-bottom\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Install software' | translate }}\"\n (click)=\"installSoftware()\"\n [disabled]=\"deviceSoftwareChangesInProgress\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Install software' | translate }}\n </button>\n </div>\n</div>\n"
|
|
91
98
|
},] }
|
|
92
99
|
];
|
|
93
100
|
InstalledSoftwareComponent.ctorParameters = () => [
|
|
@@ -96,6 +103,7 @@ InstalledSoftwareComponent.ctorParameters = () => [
|
|
|
96
103
|
{ type: BsModalService }
|
|
97
104
|
];
|
|
98
105
|
InstalledSoftwareComponent.propDecorators = {
|
|
106
|
+
device: [{ type: Input }],
|
|
99
107
|
softwareList: [{ type: Input }],
|
|
100
108
|
deviceSoftwareChanges: [{ type: Input }],
|
|
101
109
|
deviceSoftwareChangesOperation: [{ type: Input }],
|
|
@@ -103,4 +111,4 @@ InstalledSoftwareComponent.propDecorators = {
|
|
|
103
111
|
deviceTypeQuery: [{ type: Input }],
|
|
104
112
|
changes: [{ type: Output }]
|
|
105
113
|
};
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbGVkLXNvZnR3YXJlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3JlcG9zaXRvcnkvc29mdHdhcmUtZGV2aWNlLXRhYi9pbnN0YWxsZWQtc29mdHdhcmUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQW1CLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQWtCLGdCQUFnQixFQUFjLE1BQU0sYUFBYSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQXdDLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBTW5HLE1BQU0sT0FBTywwQkFBMEI7SUFRckMsWUFDVSxVQUE2QixFQUM3QixTQUEyQixFQUMzQixPQUF1QjtRQUZ2QixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUx2QixZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQTBCLENBQUM7SUFPL0QsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsMEJBQTBCLENBQUM7WUFDOUIsS0FBSyxFQUFF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LElBQUksS0FBRSxNQUFNLEVBQUUsU0FBUyxJQUFHO1FBQ3hDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBdUI7UUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNqQyx1Q0FBWSxJQUFJLEtBQUUsTUFBTSxFQUFFLFFBQVEsSUFBRztRQUN2QyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQzs7O1lBM0hGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsd0JBQXdCO2dCQUNsQyxrMERBQWdEO2FBQ2pEOzs7WUFQUSxpQkFBaUI7WUFGRCxnQkFBZ0I7WUFEaEMsY0FBYzs7OzJCQVlwQixLQUFLO29DQUNMLEtBQUs7NkNBQ0wsS0FBSzs4Q0FDTCxLQUFLOzhCQUNMLEtBQUs7c0JBQ0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT3V0cHV0LCBJbnB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmcm9tLCBvZiwgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzaGFyZVJlcGxheSwgbWFwLCBzd2l0Y2hNYXAsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0LCBJbnZlbnRvcnlTZXJ2aWNlLCBJT3BlcmF0aW9uIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgZ2V0dGV4dCwgTW9kYWxTZWxlY3Rpb25Nb2RlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBSZXBvc2l0b3J5U2VydmljZSB9IGZyb20gJy4uL3JlcG9zaXRvcnkuc2VydmljZSc7XG5pbXBvcnQgeyBEZXZpY2VTb2Z0d2FyZSwgRGV2aWNlU29mdHdhcmVDaGFuZ2UsIFJlcG9zaXRvcnlUeXBlIH0gZnJvbSAnLi8uLi9yZXBvc2l0b3J5Lm1vZGVsJztcbmltcG9ydCB7IFJlcG9zaXRvcnlTZWxlY3RNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL3NlbGVjdC1tb2RhbC9yZXBvc2l0b3J5LXNlbGVjdC1tb2RhbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktaW5zdGFsbGVkLXNvZnR3YXJlJyxcbiAgdGVtcGxhdGVVcmw6ICdpbnN0YWxsZWQtc29mdHdhcmUuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEluc3RhbGxlZFNvZnR3YXJlQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc29mdHdhcmVMaXN0OiBEZXZpY2VTb2Z0d2FyZVtdO1xuICBASW5wdXQoKSBkZXZpY2VTb2Z0d2FyZUNoYW5nZXM6IERldmljZVNvZnR3YXJlQ2hhbmdlW107XG4gIEBJbnB1dCgpIGRldmljZVNvZnR3YXJlQ2hhbmdlc09wZXJhdGlvbjogSU9wZXJhdGlvbjtcbiAgQElucHV0KCkgZGV2aWNlU29mdHdhcmVDaGFuZ2VzSW5Qcm9ncmVzczogYm9vbGVhbjtcbiAgQElucHV0KCkgZGV2aWNlVHlwZVF1ZXJ5OiBvYmplY3Q7XG4gIEBPdXRwdXQoKSBjaGFuZ2VzID0gbmV3IEV2ZW50RW1pdHRlcjxEZXZpY2VTb2Z0d2FyZUNoYW5nZVtdPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVwb3NpdG9yeTogUmVwb3NpdG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBic01vZGFsOiBCc01vZGFsU2VydmljZVxuICApIHtcbiAgfVxuXG4gIGluc3RhbGxTb2Z0d2FyZSgpIHtcbiAgICB0aGlzLmRpc3BsYXlTb2Z0d2FyZVNlbGVjdE1vZGFsKHtcbiAgICAgIHRpdGxlOiBnZXR0ZXh0KCdJbnN0YWxsIHNvZnR3YXJlJyksXG4gICAgICBsYWJlbHM6IHsgb2s6IGdldHRleHQoJ0luc3RhbGwnKSB9LFxuICAgICAgcmVwb3NpdG9yeUVudHJpZXNXaXRoVmVyc2lvbnMkOiBvZihbXSksXG4gICAgICByZXBvc2l0b3J5RW50cmllc1dpdGhWZXJzaW9uc0ZuJDogbW9kYWwgPT5cbiAgICAgICAgdGhpcy5nZXRJbnN0YWxsYWJsZVNvZnR3YXJlTGlzdFdpdGhWZXJzaW9ucyQobW9kYWwuY29udGVudC5zZWFyY2hUZXJtKVxuICAgIH0pLnN1YnNjcmliZShzb2Z0d2FyZVRvSW5zdGFsbCA9PiB7XG4gICAgICB0aGlzLmVtaXRTb2Z0d2FyZUluc3RhbGwoc29mdHdhcmVUb0luc3RhbGwpO1xuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlU29mdHdhcmUoc29mdHdhcmVUb1JlbW92ZSkge1xuICAgIHRoaXMuZGlzcGxheVNvZnR3YXJlU2VsZWN0TW9kYWwoe1xuICAgICAgdGl0bGU6IGdldHRleHQoJ1VwZGF0ZSBzb2Z0d2FyZScpLFxuICAgICAgbGFiZWxzOiB7IG9rOiBnZXR0ZXh0KCdVcGRhdGUnKSB9LFxuICAgICAgc2hvd0ZpbHRlcjogZmFsc2UsXG4gICAgICByZXBvc2l0b3J5RW50cmllc1dpdGhWZXJzaW9ucyQ6IHRoaXMuZ2V0U2luZ2xlU29mdHdhcmVXaXRoVmVyc2lvbnMkKHNvZnR3YXJlVG9SZW1vdmUpXG4gICAgfSkuc3Vic2NyaWJlKHNvZnR3YXJlVG9JbnN0YWxsID0+IHtcbiAgICAgIHRoaXMuZW1pdFNvZnR3YXJlSW5zdGFsbChzb2Z0d2FyZVRvSW5zdGFsbCk7XG4gICAgfSk7XG4gIH1cblxuICByZW1vdmVTb2Z0d2FyZShzb2Z0d2FyZVRvUmVtb3ZlKSB7XG4gICAgdGhpcy5lbWl0U29mdHdhcmVSZW1vdmFsKFtzb2Z0d2FyZVRvUmVtb3ZlXSk7XG4gIH1cblxuICBnZXRJbnN0YWxsYWJsZVNvZnR3YXJlTGlzdFdpdGhWZXJzaW9ucyQoc2VhcmNoVGVybSQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KSB7XG4gICAgY29uc3QgaW5zdGFsbGVkU29mdHdhcmVOYW1lcyA9IHRoaXMuc29mdHdhcmVMaXN0Lm1hcChzID0+IHMubmFtZSk7XG4gICAgcmV0dXJuIHNlYXJjaFRlcm0kLnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgc3dpdGNoTWFwKHNlYXJjaFRlcm0gPT5cbiAgICAgICAgdGhpcy5yZXBvc2l0b3J5Lmxpc3RSZXBvc2l0b3J5RW50cmllcyhSZXBvc2l0b3J5VHlwZS5TT0ZUV0FSRSwge1xuICAgICAgICAgIHF1ZXJ5OiB0aGlzLmRldmljZVR5cGVRdWVyeSxcbiAgICAgICAgICBwYXJ0aWFsTmFtZTogc2VhcmNoVGVybSxcbiAgICAgICAgICBwYXJhbXM6IHsgcGFnZVNpemU6IDEwMCB9XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgICAgbWFwKCh7IGRhdGEgfSkgPT4gZGF0YSksXG4gICAgICBtYXAoc29mdHdhcmVMaXN0ID0+IHtcbiAgICAgICAgcmV0dXJuIHNvZnR3YXJlTGlzdC5maWx0ZXIoc29mdHdhcmUgPT4ge1xuICAgICAgICAgIHJldHVybiAhaW5zdGFsbGVkU29mdHdhcmVOYW1lcy5pbmNsdWRlcyhzb2Z0d2FyZS5uYW1lKTtcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICAgIG1hcChzb2Z0d2FyZUxpc3QgPT4gdGhpcy5hdHRhY2hWZXJzaW9ucyhzb2Z0d2FyZUxpc3QpKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfVxuXG4gIGdldFNpbmdsZVNvZnR3YXJlV2l0aFZlcnNpb25zJChzb2Z0d2FyZTogRGV2aWNlU29mdHdhcmUpIHtcbiAgICByZXR1cm4gZnJvbShcbiAgICAgIHRoaXMucmVwb3NpdG9yeS5saXN0UmVwb3NpdG9yeUVudHJpZXMoUmVwb3NpdG9yeVR5cGUuU09GVFdBUkUsIHtcbiAgICAgICAgcXVlcnk6IHsgbmFtZTogc29mdHdhcmUubmFtZSB9XG4gICAgICB9KVxuICAgICkucGlwZShcbiAgICAgIG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpLFxuICAgICAgbWFwKHNvZnR3YXJlTGlzdCA9PiB0aGlzLmF0dGFjaFZlcnNpb25zKHNvZnR3YXJlTGlzdCkpLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuICB9XG5cbiAgYXR0YWNoVmVyc2lvbnMoc29mdHdhcmVMaXN0OiBJTWFuYWdlZE9iamVjdFtdKSB7XG4gICAgc29mdHdhcmVMaXN0LmZvckVhY2goc29mdHdhcmUgPT4ge1xuICAgICAgc29mdHdhcmUudmVyc2lvbnMgPSB0aGlzLnJlcG9zaXRvcnkubGlzdEJhc2VWZXJzaW9ucyhzb2Z0d2FyZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHNvZnR3YXJlTGlzdDtcbiAgfVxuXG4gIGRpc3BsYXlTb2Z0d2FyZVNlbGVjdE1vZGFsKGluaXRpYWxTdGF0ZU92ZXJyaWRlcykge1xuICAgIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHtcbiAgICAgIHJlcG9zaXRvcnlUeXBlOiBSZXBvc2l0b3J5VHlwZS5TT0ZUV0FSRSxcbiAgICAgIHN1YlRpdGxlOiBnZXR0ZXh0KCdBdmFpbGFibGUgc29mdHdhcmVzIG1hdGNoaW5nIHRoZSBkZXZpY2UgdHlwZScpLFxuICAgICAgbW9kZTogTW9kYWxTZWxlY3Rpb25Nb2RlLk1VTFRJLFxuICAgICAgaWNvbjogJ2M4eS10b29scycsXG4gICAgICBkaXNhYmxlU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgc2VsZWN0ZWQ6IHRoaXMuc29mdHdhcmVMaXN0LFxuICAgICAgLi4uaW5pdGlhbFN0YXRlT3ZlcnJpZGVzXG4gICAgfTtcbiAgICBjb25zdCBtb2RhbCA9IHRoaXMuYnNNb2RhbC5zaG93KFJlcG9zaXRvcnlTZWxlY3RNb2RhbENvbXBvbmVudCwge1xuICAgICAgaWdub3JlQmFja2Ryb3BDbGljazogdHJ1ZSxcbiAgICAgIGNsYXNzOiAnbW9kYWwtc20nLFxuICAgICAgaW5pdGlhbFN0YXRlXG4gICAgfSk7XG5cbiAgICBpZiAoaW5pdGlhbFN0YXRlT3ZlcnJpZGVzLnJlcG9zaXRvcnlFbnRyaWVzV2l0aFZlcnNpb25zRm4kKSB7XG4gICAgICBtb2RhbC5jb250ZW50LnJlcG9zaXRvcnlFbnRyaWVzV2l0aFZlcnNpb25zJCA9IGluaXRpYWxTdGF0ZU92ZXJyaWRlcy5yZXBvc2l0b3J5RW50cmllc1dpdGhWZXJzaW9uc0ZuJChcbiAgICAgICAgbW9kYWxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbW9kYWwuY29udGVudC5sb2FkLm5leHQoKTtcbiAgICByZXR1cm4gbW9kYWwuY29udGVudC5yZXN1bHRFbWl0dGVyO1xuICB9XG5cbiAgZW1pdFNvZnR3YXJlSW5zdGFsbChpdGVtczogRGV2aWNlU29mdHdhcmVbXSkge1xuICAgIHRoaXMuY2hhbmdlcy5lbWl0KGl0ZW1zLm1hcChpdGVtID0+IHtcbiAgICAgIHJldHVybiB7IC4uLml0ZW0sIGFjdGlvbjogJ2luc3RhbGwnIH07XG4gICAgfSkpO1xuICB9XG5cbiAgZW1pdFNvZnR3YXJlUmVtb3ZhbChpdGVtczogRGV2aWNlU29mdHdhcmVbXSkge1xuICAgIHRoaXMuY2hhbmdlcy5lbWl0KGl0ZW1zLm1hcChpdGVtID0+IHtcbiAgICAgIHJldHVybiB7IC4uLml0ZW0sIGFjdGlvbjogJ2RlbGV0ZScgfTtcbiAgICB9KSk7XG4gIH1cbn1cbiJdfQ==
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbGVkLXNvZnR3YXJlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3JlcG9zaXRvcnkvc29mdHdhcmUtZGV2aWNlLXRhYi9pbnN0YWxsZWQtc29mdHdhcmUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQW1CLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQWtCLGdCQUFnQixFQUFjLE1BQU0sYUFBYSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBd0MsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0YsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFNbkcsTUFBTSxPQUFPLDBCQUEwQjtJQWFyQyxZQUNVLFVBQTZCLEVBQzdCLFNBQTJCLEVBQzNCLE9BQXVCO1FBRnZCLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBQzdCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBVHZCLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBMEIsQ0FBQztRQUUvRCwrQkFBMEIsR0FBWSxLQUFL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LEtBQUssRUFBRSxVQUFVO1lBQ2pCLFlBQVk7U0FDYixDQUFDLENBQUM7UUFFSCxJQUFJLHFCQUFxQixDQUFDLGdDQUFnQyxFQUFFO1lBQzFELEtBQUssQ0FBQyxPQUFPLENBQUMsOEJBQThCLEdBQUcscUJBQXFCLENBQUMsZ0NBQWdDLENBQ25HLEtBQUssQ0FDTixDQUFDO1NBQ0g7UUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUF1QjtRQUN6QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2pDLHVDQUFZLElBQUksS0FBRSxNQUFNLEVBQUUsU0FBUyxJQUFHO1FBQ3hDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBdUI7UUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNqQyx1Q0FBWSxJQUFJLEtBQUUsTUFBTSxFQUFFLFFBQVEsSUFBRztRQUN2QyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQzs7O1lBdklGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsd0JBQXdCO2dCQUNsQyx3NERBQWdEO2FBQ2pEOzs7WUFQUSxpQkFBaUI7WUFIRCxnQkFBZ0I7WUFEaEMsY0FBYzs7O3FCQWFwQixLQUFLOzJCQUNMLEtBQUs7b0NBQ0wsS0FBSzs2Q0FDTCxLQUFLOzhDQUNMLEtBQUs7OEJBQ0wsS0FBSztzQkFDTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPdXRwdXQsIElucHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb20sIG9mLCBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNoYXJlUmVwbGF5LCBtYXAsIHN3aXRjaE1hcCwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QsIEludmVudG9yeVNlcnZpY2UsIElPcGVyYXRpb24gfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBnZXR0ZXh0LCBNb2RhbFNlbGVjdGlvbk1vZGUgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBSZXBvc2l0b3J5U2VydmljZSB9IGZyb20gJy4uL3JlcG9zaXRvcnkuc2VydmljZSc7XG5pbXBvcnQgeyBEZXZpY2VTb2Z0d2FyZSwgRGV2aWNlU29mdHdhcmVDaGFuZ2UsIFJlcG9zaXRvcnlUeXBlIH0gZnJvbSAnLi8uLi9yZXBvc2l0b3J5Lm1vZGVsJztcbmltcG9ydCB7IFJlcG9zaXRvcnlTZWxlY3RNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL3NlbGVjdC1tb2RhbC9yZXBvc2l0b3J5LXNlbGVjdC1tb2RhbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktaW5zdGFsbGVkLXNvZnR3YXJlJyxcbiAgdGVtcGxhdGVVcmw6ICdpbnN0YWxsZWQtc29mdHdhcmUuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEluc3RhbGxlZFNvZnR3YXJlQ29tcG9uZW50IHtcbiAgQElucHV0KCkgZGV2aWNlOiBJTWFuYWdlZE9iamVjdDtcbiAgQElucHV0KCkgc29mdHdhcmVMaXN0OiBEZXZpY2VTb2Z0d2FyZVtdO1xuICBASW5wdXQoKSBkZXZpY2VTb2Z0d2FyZUNoYW5nZXM6IERldmljZVNvZnR3YXJlQ2hhbmdlW107XG4gIEBJbnB1dCgpIGRldmljZVNvZnR3YXJlQ2hhbmdlc09wZXJhdGlvbjogSU9wZXJhdGlvbjtcbiAgQElucHV0KCkgZGV2aWNlU29mdHdhcmVDaGFuZ2VzSW5Qcm9ncmVzczogYm9vbGVhbjtcbiAgQElucHV0KCkgZGV2aWNlVHlwZVF1ZXJ5OiBvYmplY3Q7XG4gIEBPdXRwdXQoKSBjaGFuZ2VzID0gbmV3IEV2ZW50RW1pdHRlcjxEZXZpY2VTb2Z0d2FyZUNoYW5nZVtdPigpO1xuXG4gIHN1cHBvcnRzU29mdHdhcmVPcGVyYXRpb25zOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBvcGVyYXRpb25UeXBlcyA9IFsnYzh5X1NvZnR3YXJlVXBkYXRlJywgJ2M4eV9Tb2Z0d2FyZUxpc3QnLCAnYzh5X1NvZnR3YXJlJ107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZXBvc2l0b3J5OiBSZXBvc2l0b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGludmVudG9yeTogSW52ZW50b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGJzTW9kYWw6IEJzTW9kYWxTZXJ2aWNlXG4gICkge1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3Qgc3VwcG9ydGVkT3BlcmF0aW9ucyA9IGdldCh0aGlzLmRldmljZSwgJ2M4eV9TdXBwb3J0ZWRPcGVyYXRpb25zJywgW10pO1xuICAgIHRoaXMuc3VwcG9ydHNTb2Z0d2FyZU9wZXJhdGlvbnMgPSB0aGlzLm9wZXJhdGlvblR5cGVzLnNvbWUoXG4gICAgICBvcGVyYXRpb25UeXBlID0+IHN1cHBvcnRlZE9wZXJhdGlvbnMuaW5kZXhPZihvcGVyYXRpb25UeXBlKSA+IC0xXG4gICAgKTtcbiAgfVxuXG4gIGluc3RhbGxTb2Z0d2FyZSgpIHtcbiAgICB0aGlzLmRpc3BsYXlTb2Z0d2FyZVNlbGVjdE1vZGFsKHtcbiAgICAgIHRpdGxlOiBnZXR0ZXh0KCdJbnN0YWxsIHNvZnR3YXJlJyksXG4gICAgICBsYWJlbHM6IHsgb2s6IGdldHRleHQoJ0luc3RhbGwnKSB9LFxuICAgICAgcmVwb3NpdG9yeUVudHJpZXNXaXRoVmVyc2lvbnMkOiBvZihbXSksXG4gICAgICByZXBvc2l0b3J5RW50cmllc1dpdGhWZXJzaW9uc0ZuJDogbW9kYWwgPT5cbiAgICAgICAgdGhpcy5nZXRJbnN0YWxsYWJsZVNvZnR3YXJlTGlzdFdpdGhWZXJzaW9ucyQobW9kYWwuY29udGVudC5zZWFyY2hUZXJtKVxuICAgIH0pLnN1YnNjcmliZShzb2Z0d2FyZVRvSW5zdGFsbCA9PiB7XG4gICAgICB0aGlzLmVtaXRTb2Z0d2FyZUluc3RhbGwoc29mdHdhcmVUb0luc3RhbGwpO1xuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlU29mdHdhcmUoc29mdHdhcmVUb1JlbW92ZSkge1xuICAgIHRoaXMuZGlzcGxheVNvZnR3YXJlU2VsZWN0TW9kYWwoe1xuICAgICAgdGl0bGU6IGdldHRleHQoJ1VwZGF0ZSBzb2Z0d2FyZScpLFxuICAgICAgbGFiZWxzOiB7IG9rOiBnZXR0ZXh0KCdVcGRhdGUnKSB9LFxuICAgICAgc2hvd0ZpbHRlcjogZmFsc2UsXG4gICAgICByZXBvc2l0b3J5RW50cmllc1dpdGhWZXJzaW9ucyQ6IHRoaXMuZ2V0U2luZ2xlU29mdHdhcmVXaXRoVmVyc2lvbnMkKHNvZnR3YXJlVG9SZW1vdmUpXG4gICAgfSkuc3Vic2NyaWJlKHNvZnR3YXJlVG9JbnN0YWxsID0+IHtcbiAgICAgIHRoaXMuZW1pdFNvZnR3YXJlSW5zdGFsbChzb2Z0d2FyZVRvSW5zdGFsbCk7XG4gICAgfSk7XG4gIH1cblxuICByZW1vdmVTb2Z0d2FyZShzb2Z0d2FyZVRvUmVtb3ZlKSB7XG4gICAgdGhpcy5lbWl0U29mdHdhcmVSZW1vdmFsKFtzb2Z0d2FyZVRvUmVtb3ZlXSk7XG4gIH1cblxuICBnZXRJbnN0YWxsYWJsZVNvZnR3YXJlTGlzdFdpdGhWZXJzaW9ucyQoc2VhcmNoVGVybSQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KSB7XG4gICAgY29uc3QgaW5zdGFsbGVkU29mdHdhcmVOYW1lcyA9IHRoaXMuc29mdHdhcmVMaXN0Lm1hcChzID0+IHMubmFtZSk7XG4gICAgcmV0dXJuIHNlYXJjaFRlcm0kLnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgc3dpdGNoTWFwKHNlYXJjaFRlcm0gPT5cbiAgICAgICAgdGhpcy5yZXBvc2l0b3J5Lmxpc3RSZXBvc2l0b3J5RW50cmllcyhSZXBvc2l0b3J5VHlwZS5TT0ZUV0FSRSwge1xuICAgICAgICAgIHF1ZXJ5OiB0aGlzLmRldmljZVR5cGVRdWVyeSxcbiAgICAgICAgICBwYXJ0aWFsTmFtZTogc2VhcmNoVGVybSxcbiAgICAgICAgICBwYXJhbXM6IHsgcGFnZVNpemU6IDEwMCB9XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgICAgbWFwKCh7IGRhdGEgfSkgPT4gZGF0YSksXG4gICAgICBtYXAoc29mdHdhcmVMaXN0ID0+IHtcbiAgICAgICAgcmV0dXJuIHNvZnR3YXJlTGlzdC5maWx0ZXIoc29mdHdhcmUgPT4ge1xuICAgICAgICAgIHJldHVybiAhaW5zdGFsbGVkU29mdHdhcmVOYW1lcy5pbmNsdWRlcyhzb2Z0d2FyZS5uYW1lKTtcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICAgIG1hcChzb2Z0d2FyZUxpc3QgPT4gdGhpcy5hdHRhY2hWZXJzaW9ucyhzb2Z0d2FyZUxpc3QpKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfVxuXG4gIGdldFNpbmdsZVNvZnR3YXJlV2l0aFZlcnNpb25zJChzb2Z0d2FyZTogRGV2aWNlU29mdHdhcmUpIHtcbiAgICByZXR1cm4gZnJvbShcbiAgICAgIHRoaXMucmVwb3NpdG9yeS5saXN0UmVwb3NpdG9yeUVudHJpZXMoUmVwb3NpdG9yeVR5cGUuU09GVFdBUkUsIHtcbiAgICAgICAgcXVlcnk6IHsgbmFtZTogc29mdHdhcmUubmFtZSB9XG4gICAgICB9KVxuICAgICkucGlwZShcbiAgICAgIG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpLFxuICAgICAgbWFwKHNvZnR3YXJlTGlzdCA9PiB0aGlzLmF0dGFjaFZlcnNpb25zKHNvZnR3YXJlTGlzdCkpLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuICB9XG5cbiAgYXR0YWNoVmVyc2lvbnMoc29mdHdhcmVMaXN0OiBJTWFuYWdlZE9iamVjdFtdKSB7XG4gICAgc29mdHdhcmVMaXN0LmZvckVhY2goc29mdHdhcmUgPT4ge1xuICAgICAgc29mdHdhcmUudmVyc2lvbnMgPSB0aGlzLnJlcG9zaXRvcnkubGlzdEJhc2VWZXJzaW9ucyhzb2Z0d2FyZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHNvZnR3YXJlTGlzdDtcbiAgfVxuXG4gIGRpc3BsYXlTb2Z0d2FyZVNlbGVjdE1vZGFsKGluaXRpYWxTdGF0ZU92ZXJyaWRlcykge1xuICAgIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHtcbiAgICAgIHJlcG9zaXRvcnlUeXBlOiBSZXBvc2l0b3J5VHlwZS5TT0ZUV0FSRSxcbiAgICAgIHN1YlRpdGxlOiBnZXR0ZXh0KCdBdmFpbGFibGUgc29mdHdhcmVzIG1hdGNoaW5nIHRoZSBkZXZpY2UgdHlwZScpLFxuICAgICAgbW9kZTogTW9kYWxTZWxlY3Rpb25Nb2RlLk1VTFRJLFxuICAgICAgaWNvbjogJ2M4eS10b29scycsXG4gICAgICBkaXNhYmxlU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgc2VsZWN0ZWQ6IHRoaXMuc29mdHdhcmVMaXN0LFxuICAgICAgLi4uaW5pdGlhbFN0YXRlT3ZlcnJpZGVzXG4gICAgfTtcbiAgICBjb25zdCBtb2RhbCA9IHRoaXMuYnNNb2RhbC5zaG93KFJlcG9zaXRvcnlTZWxlY3RNb2RhbENvbXBvbmVudCwge1xuICAgICAgaWdub3JlQmFja2Ryb3BDbGljazogdHJ1ZSxcbiAgICAgIGNsYXNzOiAnbW9kYWwtc20nLFxuICAgICAgaW5pdGlhbFN0YXRlXG4gICAgfSk7XG5cbiAgICBpZiAoaW5pdGlhbFN0YXRlT3ZlcnJpZGVzLnJlcG9zaXRvcnlFbnRyaWVzV2l0aFZlcnNpb25zRm4kKSB7XG4gICAgICBtb2RhbC5jb250ZW50LnJlcG9zaXRvcnlFbnRyaWVzV2l0aFZlcnNpb25zJCA9IGluaXRpYWxTdGF0ZU92ZXJyaWRlcy5yZXBvc2l0b3J5RW50cmllc1dpdGhWZXJzaW9uc0ZuJChcbiAgICAgICAgbW9kYWxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbW9kYWwuY29udGVudC5sb2FkLm5leHQoKTtcbiAgICByZXR1cm4gbW9kYWwuY29udGVudC5yZXN1bHRFbWl0dGVyO1xuICB9XG5cbiAgZW1pdFNvZnR3YXJlSW5zdGFsbChpdGVtczogRGV2aWNlU29mdHdhcmVbXSkge1xuICAgIHRoaXMuY2hhbmdlcy5lbWl0KGl0ZW1zLm1hcChpdGVtID0+IHtcbiAgICAgIHJldHVybiB7IC4uLml0ZW0sIGFjdGlvbjogJ2luc3RhbGwnIH07XG4gICAgfSkpO1xuICB9XG5cbiAgZW1pdFNvZnR3YXJlUmVtb3ZhbChpdGVtczogRGV2aWNlU29mdHdhcmVbXSkge1xuICAgIHRoaXMuY2hhbmdlcy5lbWl0KGl0ZW1zLm1hcChpdGVtID0+IHtcbiAgICAgIHJldHVybiB7IC4uLml0ZW0sIGFjdGlvbjogJ2RlbGV0ZScgfTtcbiAgICB9KSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -95,7 +95,7 @@ export class SoftwareDeviceTabComponent {
|
|
|
95
95
|
SoftwareDeviceTabComponent.decorators = [
|
|
96
96
|
{ type: Component, args: [{
|
|
97
97
|
selector: 'c8y-software-device-tab',
|
|
98
|
-
template: "<c8y-action-bar-item [placement]=\"'right'\">\n <button class=\"btn btn-link\" title=\"{{ 'Reload' | translate }}\" (click)=\"loadDevice()\">\n <i c8yIcon=\"refresh\" [ngClass]=\"{ 'icon-spin': reloading }\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<div class=\"card d-grid grid__col--8-4--md m-b-0\">\n <c8y-installed-software\n class=\"card--fullpage bg-white\"\n [deviceTypeQuery]=\"deviceTypeQuery$ | async\"\n [softwareList]=\"list$ | async\"\n [deviceSoftwareChanges]=\"changes$ | async\"\n [deviceSoftwareChangesOperation]=\"changesOperation$ | async\"\n [deviceSoftwareChangesInProgress]=\"changesInProgress$ | async\"\n (changes)=\"addChanges($event)\"\n ></c8y-installed-software>\n <c8y-device-software-changes\n class=\"card--fullpage bg-gray-white\"\n [changes]=\"changes$ | async\"\n [changesInProgress]=\"changesInProgress$ | async\"\n (clear)=\"clearChanges()\"\n (drop)=\"dropChange($event)\"\n (apply)=\"applyChanges()\"\n ></c8y-device-software-changes>\n</div>\n"
|
|
98
|
+
template: "<c8y-action-bar-item [placement]=\"'right'\">\n <button class=\"btn btn-link\" title=\"{{ 'Reload' | translate }}\" (click)=\"loadDevice()\">\n <i c8yIcon=\"refresh\" [ngClass]=\"{ 'icon-spin': reloading }\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<div class=\"card d-grid grid__col--8-4--md m-b-0\">\n <c8y-installed-software\n class=\"card--fullpage bg-white\"\n [device]=\"device$ | async\"\n [deviceTypeQuery]=\"deviceTypeQuery$ | async\"\n [softwareList]=\"list$ | async\"\n [deviceSoftwareChanges]=\"changes$ | async\"\n [deviceSoftwareChangesOperation]=\"changesOperation$ | async\"\n [deviceSoftwareChangesInProgress]=\"changesInProgress$ | async\"\n (changes)=\"addChanges($event)\"\n ></c8y-installed-software>\n <c8y-device-software-changes\n class=\"card--fullpage bg-gray-white\"\n [changes]=\"changes$ | async\"\n [changesInProgress]=\"changesInProgress$ | async\"\n (clear)=\"clearChanges()\"\n (drop)=\"dropChange($event)\"\n (apply)=\"applyChanges()\"\n ></c8y-device-software-changes>\n</div>\n"
|
|
99
99
|
},] }
|
|
100
100
|
];
|
|
101
101
|
SoftwareDeviceTabComponent.ctorParameters = () => [
|
|
@@ -103,4 +103,4 @@ SoftwareDeviceTabComponent.ctorParameters = () => [
|
|
|
103
103
|
{ type: RepositoryService },
|
|
104
104
|
{ type: InventoryService }
|
|
105
105
|
];
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29mdHdhcmUtZGV2aWNlLXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9yZXBvc2l0b3J5L3NvZnR3YXJlLWRldmljZS10YWIvc29mdHdhcmUtZGV2aWNlLXRhYi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBYyxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsZUFBZSxFQUFjLE1BQU0sYUFBYSxDQUFDO0FBQzVGLE9BQU8sRUFBd0MsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFNMUQsTUFBTSxPQUFPLDBCQUEwQjtJQWdCckMsWUFDVSxLQUFxQixFQUNyQixVQUE2QixFQUM3QixTQUEyQjtRQUYzQixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQWxCckMsYUFBUSxHQUFvQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7UUFDM0UsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFpQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNGLHFCQUFnQixHQUF1QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDdEQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFF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SUFBSSxDQUFDLFVBQVUsQ0FBQyxxQ0FBcUMsQ0FDbkUsU0FBUyxFQUNULElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUNuQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVPLFlBQVksQ0FBQyxTQUFxQjtRQUN4QyxPQUFPLENBQ0wsU0FBUyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FDN0YsQ0FBQztJQUNKLENBQUM7OztZQS9HRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMscWpDQUFpRDthQUNsRDs7O1lBVlEsY0FBYztZQUtkLGlCQUFpQjtZQUZELGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0LCBJbnZlbnRvcnlTZXJ2aWNlLCBPcGVyYXRpb25TdGF0dXMsIElPcGVyYXRpb24gfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBEZXZpY2VTb2Z0d2FyZSwgRGV2aWNlU29mdHdhcmVDaGFuZ2UsIFJlcG9zaXRvcnlUeXBlIH0gZnJvbSAnLi4vcmVwb3NpdG9yeS5tb2RlbCc7XG5pbXBvcnQgeyBSZXBvc2l0b3J5U2VydmljZSB9IGZyb20gJy4uL3JlcG9zaXRvcnkuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1zb2Z0d2FyZS1kZXZpY2UtdGFiJyxcbiAgdGVtcGxhdGVVcmw6ICdzb2Z0d2FyZS1kZXZpY2UtdGFiLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBTb2Z0d2FyZURldmljZVRhYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGRldmljZUlkOiBzdHJpbmcgfCBudW1iZXIgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmVudC5kYXRhLmNvbnRleHREYXRhLmlkO1xuICBkZXZpY2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJTWFuYWdlZE9iamVjdD4odGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJlbnQuZGF0YS5jb250ZXh0RGF0YSk7XG4gIGRldmljZVR5cGVRdWVyeSQ6IE9ic2VydmFibGU8b2JqZWN0PiA9IHRoaXMuZGV2aWNlJC5waXBlKFxuICAgIG1hcChkZXZpY2UgPT4gdGhpcy5yZXBvc2l0b3J5LmdldERldmljZVR5cGVRdWVyeShSZXBvc2l0b3J5VHlwZS5TT0ZUV0FSRSwgZGV2aWNlKSlcbiAgKTtcbiAgbGlzdCQ6IE9ic2VydmFibGU8RGV2aWNlU29mdHdhcmVbXT4gPSB0aGlzLmRldmljZSQucGlwZShcbiAgICBtYXAoZGV2aWNlID0+IHRoaXMucmVwb3NpdG9yeS5nZXREZXZpY2VTb2Z0d2FyZUxpc3QoZGV2aWNlKSlcbiAgKTtcbiAgY2hhbmdlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERldmljZVNvZnR3YXJlQ2hhbmdlW10+KFtdKTtcbiAgY2hhbmdlc09wZXJhdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElPcGVyYXRpb24+KG51bGwpO1xuICBjaGFuZ2VzSW5Qcm9ncmVzcyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmNoYW5nZXNPcGVyYXRpb24kLnBpcGUoXG4gICAgbWFwKG9wZXJhdGlvbiA9PiB0aGlzLmlzSW5Qcm9ncmVzcyhvcGVyYXRpb24pKVxuICApO1xuICByZWxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlcG9zaXRvcnk6IFJlcG9zaXRvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW52ZW50b3J5OiBJbnZlbnRvcnlTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBhd2FpdCB0aGlzLmxvYWREZXZpY2UoKTtcbiAgICBhd2FpdCB0aGlzLmxvYWRPcGVyYXRpb24oKTtcbiAgfVxuXG4gIGFkZENoYW5nZXMocmVxdWVzdGVkQ2hhbmdlczogRGV2aWNlU29mdHdhcmVDaGFuZ2VbXSkge1xuICAgIGxldCBzdGFnZWRDaGFuZ2VzID0gWy4uLnRoaXMuY2hhbmdlcyQudmFsdWVdO1xuICAgIHJlcXVlc3RlZENoYW5nZXMuZm9yRWFjaChyZXF1ZXN0ZWRDaGFuZ2UgPT4ge1xuICAgICAgY29uc3QgYWxyZWFkeVN0YWdlZCA9IHN0YWdlZENoYW5nZXMuc29tZShzdGFnZWRDaGFuZ2UgPT5cbiAgICAgICAgdGhpcy5hcmVTYW1lQ2hhbmdlcyhzdGFnZWRDaGFuZ2UsIHJlcXVlc3RlZENoYW5nZSkpO1xuICAgICAgaWYgKCFhbHJlYWR5U3RhZ2VkKSB7XG4gICAgICAgIHN0YWdlZENoYW5nZXMgPSBbLi4uc3RhZ2VkQ2hhbmdlcywgcmVxdWVzdGVkQ2hhbmdlXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmNoYW5nZXMkLm5leHQoc3RhZ2VkQ2hhbmdlcyk7XG4gIH1cblxuICBkcm9wQ2hhbmdlKGNoYW5nZVRvQmVEcm9wcGVkOiBEZXZpY2VTb2Z0d2FyZUNoYW5nZSkge1xuICAgIGxldCBzdGFnZWRDaGFuZ2VzID0gWy4uLnRoaXMuY2hhbmdlcyQudmFsdWVdO1xuICAgIHN0YWdlZENoYW5nZXMgPSBzdGFnZWRDaGFuZ2VzLmZpbHRlcihzdGFnZWRDaGFuZ2UgPT4gIXRoaXMuYXJlU2FtZUNoYW5nZXMoc3RhZ2VkQ2hhbmdlLCBjaGFuZ2VUb0JlRHJvcHBlZCkpO1xuICAgIHRoaXMuY2hhbmdlcyQubmV4dChzdGFnZWRDaGFuZ2VzKTtcbiAgfVxuXG4gIGFyZVNhbWVDaGFuZ2VzKGNoYW5nZTE6IERldmljZVNvZnR3YXJlQ2hhbmdlLCBjaGFuZ2UyOiBEZXZpY2VTb2Z0d2FyZUNoYW5nZSkge1xuICAgIHJldHVybiBjaGFuZ2UxLm5hbWUgPT09IGNoYW5nZTIubmFtZSAmJlxuICAgICAgY2hhbmdlMS52ZXJzaW9uID09PSBjaGFuZ2UyLnZlcnNpb24gJiZcbiAgICAgIGNoYW5nZTEuYWN0aW9uID09PSBjaGFuZ2UyLmFjdGlvbjtcbiAgfVxuXG4gIGNsZWFyQ2hhbmdlcygpIHtcbiAgICB0aGlzLmNoYW5nZXMkLm5leHQoW10pO1xuICB9XG5cbiAgYXN5bmMgbG9hZERldmljZSgpIHtcbiAgICB0aGlzLnJlbG9hZGluZyA9IHRydWU7XG4gICAgY29uc3QgZGV2aWNlID0gKGF3YWl0IHRoaXMuaW52ZW50b3J5LmRldGFpbCh0aGlzLmRldmljZUlkLCB7IHdpdGhDaGlsZHJlbjogZmFsc2UgfSkpLmRhdGE7XG4gICAgdGhpcy5kZXZpY2UkLm5leHQoZGV2aWNlKTtcbiAgICB0aGlzLnJlbG9hZGluZyA9IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgYXBwbHlDaGFuZ2VzKCkge1xuICAgIGNvbnN0IG9wZXJhdGlvbiA9IGF3YWl0IHRoaXMucmVwb3NpdG9yeS5jcmVhdGVTb2Z0d2FyZVVwZGF0ZU9wZXJhdGlvbihcbiAgICAgIHRoaXMuZGV2aWNlJC52YWx1ZSxcbiAgICAgIHRoaXMuY2hhbmdlcyQudmFsdWVcbiAgICApO1xuICAgIHRoaXMudHJhY2tPcGVyYXRpb24ob3BlcmF0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZE9wZXJhdGlvbigpIHtcbiAgICBjb25zdCBvcGVyYXRpb24gPSBhd2FpdCB0aGlzLnJlcG9zaXRvcnkuZ2V0TGFzdFNvZnR3YXJlVXBkYXRlT3BlcmF0aW9uKHRoaXMuZGV2aWNlSWQpO1xuICAgIHRoaXMudHJhY2tPcGVyYXRpb24ob3BlcmF0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgdHJhY2tPcGVyYXRpb24ob3BlcmF0aW9uOiBJT3BlcmF0aW9uKSB7XG4gICAgdGhpcy5jaGFuZ2VzT3BlcmF0aW9uJC5uZXh0KG9wZXJhdGlvbik7XG5cbiAgICBpZiAodGhpcy5pc0luUHJvZ3Jlc3Mob3BlcmF0aW9uKSkge1xuICAgICAgdGhpcy5kaXNwbGF5Q2hhbmdlc0Zyb21PcGVyYXRpb24ob3BlcmF0aW9uKTtcbiAgICAgIHRoaXMucmVwb3NpdG9yeS5vYnNlcnZlT3BlcmF0aW9uKG9wZXJhdGlvbikuc3Vic2NyaWJlKFxuICAgICAgICBvcGVyYXRpb25VcGRhdGUgPT4ge1xuICAgICAgICAgIHRoaXMuY2hhbmdlc09wZXJhdGlvbiQubmV4dChvcGVyYXRpb25VcGRhdGUpO1xuICAgICAgICAgIGlmIChvcGVyYXRpb25VcGRhdGUuc3RhdHVzID09PSBPcGVyYXRpb25TdGF0dXMuU1VDQ0VTU0ZVTCkge1xuICAgICAgICAgICAgdGhpcy5jbGVhckNoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMubG9hZERldmljZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb3BlcmF0aW9uVXBkYXRlID0+IHtcbiAgICAgICAgICB0aGlzLmNoYW5nZXNPcGVyYXRpb24kLm5leHQob3BlcmF0aW9uVXBkYXRlKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRpc3BsYXlDaGFuZ2VzRnJvbU9wZXJhdGlvbihvcGVyYXRpb246IElPcGVyYXRpb24pIHtcbiAgICBjb25zdCBjaGFuZ2VzID0gdGhpcy5yZXBvc2l0b3J5LmdldERldmljZVNvZnR3YXJlQ2hhbmdlc0Zyb21PcGVyYXRpb24oXG4gICAgICBvcGVyYXRpb24sXG4gICAgICB0aGlzLmRldmljZSQudmFsdWVcbiAgICApO1xuICAgIHRoaXMuY2hhbmdlcyQubmV4dChjaGFuZ2VzKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNJblByb2dyZXNzKG9wZXJhdGlvbjogSU9wZXJhdGlvbikge1xuICAgIHJldHVybiAoXG4gICAgICBvcGVyYXRpb24gJiYgW09wZXJhdGlvblN0YXR1cy5QRU5ESU5HLCBPcGVyYXRpb25TdGF0dXMuRVhFQ1VUSU5HXS5pbmNsdWRlcyhvcGVyYXRpb24uc3RhdHVzKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29mdHdhcmUtZGV2aWNlLXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9yZXBvc2l0b3J5L3NvZnR3YXJlLWRldmljZS10YWIvc29mdHdhcmUtZGV2aWNlLXRhYi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBYyxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsZUFBZSxFQUFjLE1BQU0sYUFBYSxDQUFDO0FBQzVGLE9BQU8sRUFBd0MsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFNMUQsTUFBTSxPQUFPLDBCQUEwQjtJQWdCckMsWUFDVSxLQUFxQixFQUNyQixVQUE2QixFQUM3QixTQUEyQjtRQUYzQixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQWxCckMsYUFBUSxHQUFvQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7UUFDM0UsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFpQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNGLHFCQUFnQixHQUF1QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDdEQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFF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SUFBSSxDQUFDLFVBQVUsQ0FBQyxxQ0FBcUMsQ0FDbkUsU0FBUyxFQUNULElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUNuQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVPLFlBQVksQ0FBQyxTQUFxQjtRQUN4QyxPQUFPLENBQ0wsU0FBUyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FDN0YsQ0FBQztJQUNKLENBQUM7OztZQS9HRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMsdWxDQUFpRDthQUNsRDs7O1lBVlEsY0FBYztZQUtkLGlCQUFpQjtZQUZELGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0LCBJbnZlbnRvcnlTZXJ2aWNlLCBPcGVyYXRpb25TdGF0dXMsIElPcGVyYXRpb24gfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBEZXZpY2VTb2Z0d2FyZSwgRGV2aWNlU29mdHdhcmVDaGFuZ2UsIFJlcG9zaXRvcnlUeXBlIH0gZnJvbSAnLi4vcmVwb3NpdG9yeS5tb2RlbCc7XG5pbXBvcnQgeyBSZXBvc2l0b3J5U2VydmljZSB9IGZyb20gJy4uL3JlcG9zaXRvcnkuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1zb2Z0d2FyZS1kZXZpY2UtdGFiJyxcbiAgdGVtcGxhdGVVcmw6ICdzb2Z0d2FyZS1kZXZpY2UtdGFiLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBTb2Z0d2FyZURldmljZVRhYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGRldmljZUlkOiBzdHJpbmcgfCBudW1iZXIgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmVudC5kYXRhLmNvbnRleHREYXRhLmlkO1xuICBkZXZpY2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJTWFuYWdlZE9iamVjdD4odGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJlbnQuZGF0YS5jb250ZXh0RGF0YSk7XG4gIGRldmljZVR5cGVRdWVyeSQ6IE9ic2VydmFibGU8b2JqZWN0PiA9IHRoaXMuZGV2aWNlJC5waXBlKFxuICAgIG1hcChkZXZpY2UgPT4gdGhpcy5yZXBvc2l0b3J5LmdldERldmljZVR5cGVRdWVyeShSZXBvc2l0b3J5VHlwZS5TT0ZUV0FSRSwgZGV2aWNlKSlcbiAgKTtcbiAgbGlzdCQ6IE9ic2VydmFibGU8RGV2aWNlU29mdHdhcmVbXT4gPSB0aGlzLmRldmljZSQucGlwZShcbiAgICBtYXAoZGV2aWNlID0+IHRoaXMucmVwb3NpdG9yeS5nZXREZXZpY2VTb2Z0d2FyZUxpc3QoZGV2aWNlKSlcbiAgKTtcbiAgY2hhbmdlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERldmljZVNvZnR3YXJlQ2hhbmdlW10+KFtdKTtcbiAgY2hhbmdlc09wZXJhdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElPcGVyYXRpb24+KG51bGwpO1xuICBjaGFuZ2VzSW5Qcm9ncmVzcyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmNoYW5nZXNPcGVyYXRpb24kLnBpcGUoXG4gICAgbWFwKG9wZXJhdGlvbiA9PiB0aGlzLmlzSW5Qcm9ncmVzcyhvcGVyYXRpb24pKVxuICApO1xuICByZWxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlcG9zaXRvcnk6IFJlcG9zaXRvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW52ZW50b3J5OiBJbnZlbnRvcnlTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBhd2FpdCB0aGlzLmxvYWREZXZpY2UoKTtcbiAgICBhd2FpdCB0aGlzLmxvYWRPcGVyYXRpb24oKTtcbiAgfVxuXG4gIGFkZENoYW5nZXMocmVxdWVzdGVkQ2hhbmdlczogRGV2aWNlU29mdHdhcmVDaGFuZ2VbXSkge1xuICAgIGxldCBzdGFnZWRDaGFuZ2VzID0gWy4uLnRoaXMuY2hhbmdlcyQudmFsdWVdO1xuICAgIHJlcXVlc3RlZENoYW5nZXMuZm9yRWFjaChyZXF1ZXN0ZWRDaGFuZ2UgPT4ge1xuICAgICAgY29uc3QgYWxyZWFkeVN0YWdlZCA9IHN0YWdlZENoYW5nZXMuc29tZShzdGFnZWRDaGFuZ2UgPT5cbiAgICAgICAgdGhpcy5hcmVTYW1lQ2hhbmdlcyhzdGFnZWRDaGFuZ2UsIHJlcXVlc3RlZENoYW5nZSkpO1xuICAgICAgaWYgKCFhbHJlYWR5U3RhZ2VkKSB7XG4gICAgICAgIHN0YWdlZENoYW5nZXMgPSBbLi4uc3RhZ2VkQ2hhbmdlcywgcmVxdWVzdGVkQ2hhbmdlXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmNoYW5nZXMkLm5leHQoc3RhZ2VkQ2hhbmdlcyk7XG4gIH1cblxuICBkcm9wQ2hhbmdlKGNoYW5nZVRvQmVEcm9wcGVkOiBEZXZpY2VTb2Z0d2FyZUNoYW5nZSkge1xuICAgIGxldCBzdGFnZWRDaGFuZ2VzID0gWy4uLnRoaXMuY2hhbmdlcyQudmFsdWVdO1xuICAgIHN0YWdlZENoYW5nZXMgPSBzdGFnZWRDaGFuZ2VzLmZpbHRlcihzdGFnZWRDaGFuZ2UgPT4gIXRoaXMuYXJlU2FtZUNoYW5nZXMoc3RhZ2VkQ2hhbmdlLCBjaGFuZ2VUb0JlRHJvcHBlZCkpO1xuICAgIHRoaXMuY2hhbmdlcyQubmV4dChzdGFnZWRDaGFuZ2VzKTtcbiAgfVxuXG4gIGFyZVNhbWVDaGFuZ2VzKGNoYW5nZTE6IERldmljZVNvZnR3YXJlQ2hhbmdlLCBjaGFuZ2UyOiBEZXZpY2VTb2Z0d2FyZUNoYW5nZSkge1xuICAgIHJldHVybiBjaGFuZ2UxLm5hbWUgPT09IGNoYW5nZTIubmFtZSAmJlxuICAgICAgY2hhbmdlMS52ZXJzaW9uID09PSBjaGFuZ2UyLnZlcnNpb24gJiZcbiAgICAgIGNoYW5nZTEuYWN0aW9uID09PSBjaGFuZ2UyLmFjdGlvbjtcbiAgfVxuXG4gIGNsZWFyQ2hhbmdlcygpIHtcbiAgICB0aGlzLmNoYW5nZXMkLm5leHQoW10pO1xuICB9XG5cbiAgYXN5bmMgbG9hZERldmljZSgpIHtcbiAgICB0aGlzLnJlbG9hZGluZyA9IHRydWU7XG4gICAgY29uc3QgZGV2aWNlID0gKGF3YWl0IHRoaXMuaW52ZW50b3J5LmRldGFpbCh0aGlzLmRldmljZUlkLCB7IHdpdGhDaGlsZHJlbjogZmFsc2UgfSkpLmRhdGE7XG4gICAgdGhpcy5kZXZpY2UkLm5leHQoZGV2aWNlKTtcbiAgICB0aGlzLnJlbG9hZGluZyA9IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgYXBwbHlDaGFuZ2VzKCkge1xuICAgIGNvbnN0IG9wZXJhdGlvbiA9IGF3YWl0IHRoaXMucmVwb3NpdG9yeS5jcmVhdGVTb2Z0d2FyZVVwZGF0ZU9wZXJhdGlvbihcbiAgICAgIHRoaXMuZGV2aWNlJC52YWx1ZSxcbiAgICAgIHRoaXMuY2hhbmdlcyQudmFsdWVcbiAgICApO1xuICAgIHRoaXMudHJhY2tPcGVyYXRpb24ob3BlcmF0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZE9wZXJhdGlvbigpIHtcbiAgICBjb25zdCBvcGVyYXRpb24gPSBhd2FpdCB0aGlzLnJlcG9zaXRvcnkuZ2V0TGFzdFNvZnR3YXJlVXBkYXRlT3BlcmF0aW9uKHRoaXMuZGV2aWNlSWQpO1xuICAgIHRoaXMudHJhY2tPcGVyYXRpb24ob3BlcmF0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgdHJhY2tPcGVyYXRpb24ob3BlcmF0aW9uOiBJT3BlcmF0aW9uKSB7XG4gICAgdGhpcy5jaGFuZ2VzT3BlcmF0aW9uJC5uZXh0KG9wZXJhdGlvbik7XG5cbiAgICBpZiAodGhpcy5pc0luUHJvZ3Jlc3Mob3BlcmF0aW9uKSkge1xuICAgICAgdGhpcy5kaXNwbGF5Q2hhbmdlc0Zyb21PcGVyYXRpb24ob3BlcmF0aW9uKTtcbiAgICAgIHRoaXMucmVwb3NpdG9yeS5vYnNlcnZlT3BlcmF0aW9uKG9wZXJhdGlvbikuc3Vic2NyaWJlKFxuICAgICAgICBvcGVyYXRpb25VcGRhdGUgPT4ge1xuICAgICAgICAgIHRoaXMuY2hhbmdlc09wZXJhdGlvbiQubmV4dChvcGVyYXRpb25VcGRhdGUpO1xuICAgICAgICAgIGlmIChvcGVyYXRpb25VcGRhdGUuc3RhdHVzID09PSBPcGVyYXRpb25TdGF0dXMuU1VDQ0VTU0ZVTCkge1xuICAgICAgICAgICAgdGhpcy5jbGVhckNoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMubG9hZERldmljZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb3BlcmF0aW9uVXBkYXRlID0+IHtcbiAgICAgICAgICB0aGlzLmNoYW5nZXNPcGVyYXRpb24kLm5leHQob3BlcmF0aW9uVXBkYXRlKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRpc3BsYXlDaGFuZ2VzRnJvbU9wZXJhdGlvbihvcGVyYXRpb246IElPcGVyYXRpb24pIHtcbiAgICBjb25zdCBjaGFuZ2VzID0gdGhpcy5yZXBvc2l0b3J5LmdldERldmljZVNvZnR3YXJlQ2hhbmdlc0Zyb21PcGVyYXRpb24oXG4gICAgICBvcGVyYXRpb24sXG4gICAgICB0aGlzLmRldmljZSQudmFsdWVcbiAgICApO1xuICAgIHRoaXMuY2hhbmdlcyQubmV4dChjaGFuZ2VzKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNJblByb2dyZXNzKG9wZXJhdGlvbjogSU9wZXJhdGlvbikge1xuICAgIHJldHVybiAoXG4gICAgICBvcGVyYXRpb24gJiYgW09wZXJhdGlvblN0YXR1cy5QRU5ESU5HLCBPcGVyYXRpb25TdGF0dXMuRVhFQ1VUSU5HXS5pbmNsdWRlcyhvcGVyYXRpb24uc3RhdHVzKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
+
import { get, has } from 'lodash-es';
|
|
2
3
|
export class SoftwareDeviceTabGuard {
|
|
3
4
|
constructor() {
|
|
4
5
|
this.operations = ['c8y_SoftwareUpdate', 'c8y_SoftwareList', 'c8y_Software'];
|
|
5
6
|
}
|
|
6
7
|
canActivate(route) {
|
|
7
|
-
|
|
8
|
+
const device = get(route, 'data.contextData') || get(route, 'parent.data.contextData');
|
|
9
|
+
return (this.isAnyOperationSupported(device) ||
|
|
10
|
+
has(device, 'c8y_Software') ||
|
|
11
|
+
has(device, 'c8y_SoftwareList') ||
|
|
12
|
+
has(device, 'c8y_SupportedSoftwareTypes'));
|
|
8
13
|
}
|
|
9
|
-
isAnyOperationSupported(
|
|
10
|
-
const
|
|
11
|
-
const supportedOperations = (device && device.c8y_SupportedOperations) || [];
|
|
14
|
+
isAnyOperationSupported(device) {
|
|
15
|
+
const supportedOperations = (device === null || device === void 0 ? void 0 : device.c8y_SupportedOperations) || [];
|
|
12
16
|
return this.operations.some(operation => supportedOperations.indexOf(operation) >= 0);
|
|
13
17
|
}
|
|
14
18
|
}
|
|
15
19
|
SoftwareDeviceTabGuard.decorators = [
|
|
16
20
|
{ type: Injectable }
|
|
17
21
|
];
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29mdHdhcmUtZGV2aWNlLXRhYi5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3JlcG9zaXRvcnkvc29mdHdhcmUtZGV2aWNlLXRhYi9zb2Z0d2FyZS1kZXZpY2UtdGFiLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHckMsTUFBTSxPQUFPLHNCQUFzQjtJQURuQztRQUVtQixlQUFVLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLENBQUMsQ0FBQztJQWdCM0YsQ0FBQztJQWRDLFdBQVcsQ0FBQyxLQUE2QjtRQUN2QyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLGtCQUFrQixDQUFDLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3ZGLE9BQU8sQ0FDTCxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDO1lBQ3BDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDO1lBQzNCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLENBQUM7WUFDL0IsR0FBRyxDQUFDLE1BQU0sRUFBRSw0QkFBNEIsQ0FBQyxDQUMxQyxDQUFDO0lBQ0osQ0FBQztJQUVPLHVCQUF1QixDQUFDLE1BQXNCO1FBQ3BELE1BQU0sbUJBQW1CLEdBQUcsQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsdUJBQXVCLEtBQUksRUFBRSxDQUFDO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDeEYsQ0FBQzs7O1lBakJGLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGdldCwgaGFzIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNvZnR3YXJlRGV2aWNlVGFiR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3BlcmF0aW9ucyA9IFsnYzh5X1NvZnR3YXJlVXBkYXRlJywgJ2M4eV9Tb2Z0d2FyZUxpc3QnLCAnYzh5X1NvZnR3YXJlJ107XG5cbiAgY2FuQWN0aXZhdGUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpIHtcbiAgICBjb25zdCBkZXZpY2UgPSBnZXQocm91dGUsICdkYXRhLmNvbnRleHREYXRhJykgfHwgZ2V0KHJvdXRlLCAncGFyZW50LmRhdGEuY29udGV4dERhdGEnKTtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5pc0FueU9wZXJhdGlvblN1cHBvcnRlZChkZXZpY2UpIHx8XG4gICAgICBoYXMoZGV2aWNlLCAnYzh5X1NvZnR3YXJlJykgfHxcbiAgICAgIGhhcyhkZXZpY2UsICdjOHlfU29mdHdhcmVMaXN0JykgfHxcbiAgICAgIGhhcyhkZXZpY2UsICdjOHlfU3VwcG9ydGVkU29mdHdhcmVUeXBlcycpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNBbnlPcGVyYXRpb25TdXBwb3J0ZWQoZGV2aWNlOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIGNvbnN0IHN1cHBvcnRlZE9wZXJhdGlvbnMgPSBkZXZpY2U/LmM4eV9TdXBwb3J0ZWRPcGVyYXRpb25zIHx8IFtdO1xuICAgIHJldHVybiB0aGlzLm9wZXJhdGlvbnMuc29tZShvcGVyYXRpb24gPT4gc3VwcG9ydGVkT3BlcmF0aW9ucy5pbmRleE9mKG9wZXJhdGlvbikgPj0gMCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -20,9 +20,8 @@ class BinaryFileDownloadService {
|
|
|
20
20
|
}
|
|
21
21
|
run() {
|
|
22
22
|
this.router.events
|
|
23
|
-
.pipe(filter(
|
|
24
|
-
return event instanceof NavigationEnd
|
|
25
|
-
&& this.route.snapshot.queryParams.download;
|
|
23
|
+
.pipe(filter(event => {
|
|
24
|
+
return event instanceof NavigationEnd && this.route.snapshot.queryParams.download;
|
|
26
25
|
}), map(() => this.route.snapshot.queryParams.download))
|
|
27
26
|
.subscribe((downloadId) => __awaiter(this, void 0, void 0, function* () {
|
|
28
27
|
try {
|
|
@@ -40,32 +39,35 @@ class BinaryFileDownloadService {
|
|
|
40
39
|
}
|
|
41
40
|
}));
|
|
42
41
|
}
|
|
43
|
-
showDownloadModal(
|
|
42
|
+
showDownloadModal(binaryMo) {
|
|
44
43
|
return __awaiter(this, void 0, void 0, function* () {
|
|
45
44
|
try {
|
|
46
|
-
const modalBody = this.translate.instant(gettext('You are about to download file "{{ fileName }}". Do you want to proceed?'), { fileName:
|
|
47
|
-
yield this.modalService.confirm(gettext('File download'), modalBody, Status.INFO, {
|
|
48
|
-
|
|
49
|
-
|
|
45
|
+
const modalBody = this.translate.instant(gettext('You are about to download file "{{ fileName }}". Do you want to proceed?'), { fileName: binaryMo.name });
|
|
46
|
+
yield this.modalService.confirm(gettext('File download'), modalBody, Status.INFO, {
|
|
47
|
+
ok: gettext('Download')
|
|
48
|
+
});
|
|
49
|
+
const arrayBuffer = yield this.getArrayBuffer(binaryMo.id);
|
|
50
|
+
const fileBinary = new File([arrayBuffer], binaryMo.name, { type: binaryMo.contentType });
|
|
50
51
|
saveAs(fileBinary);
|
|
51
52
|
}
|
|
52
53
|
catch (e) {
|
|
53
54
|
// empty body :(
|
|
55
|
+
console.log({ e });
|
|
54
56
|
}
|
|
55
57
|
});
|
|
56
58
|
}
|
|
57
|
-
|
|
59
|
+
getArrayBuffer(binaryId) {
|
|
58
60
|
return __awaiter(this, void 0, void 0, function* () {
|
|
59
|
-
let
|
|
61
|
+
let arrayBuffer;
|
|
60
62
|
try {
|
|
61
63
|
const res = yield this.inventoryBinary.download(binaryId);
|
|
62
|
-
|
|
64
|
+
arrayBuffer = yield res.arrayBuffer();
|
|
63
65
|
}
|
|
64
66
|
catch (ex) {
|
|
65
67
|
const msg = gettext('Could not get the binary.');
|
|
66
68
|
this.alertService.danger(msg);
|
|
67
69
|
}
|
|
68
|
-
return
|
|
70
|
+
return arrayBuffer;
|
|
69
71
|
});
|
|
70
72
|
}
|
|
71
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c8y-ngx-components-binary-file-download.js","sources":["../../binary-file-download/binary-file-download.service.ts","../../binary-file-download/binary-file-download.module.ts","../../binary-file-download/c8y-ngx-components-binary-file-download.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Router, NavigationEnd, ActivatedRoute } from '@angular/router';\nimport { filter, map } from 'rxjs/operators';\nimport { InventoryBinaryService, InventoryService } from '@c8y/client';\nimport { AlertService, gettext, ModalService, Status } from '@c8y/ngx-components';\nimport { saveAs } from 'file-saver';\nimport { isUndefined } from 'lodash-es';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Injectable()\nexport class BinaryFileDownloadService {\n
|
|
1
|
+
{"version":3,"file":"c8y-ngx-components-binary-file-download.js","sources":["../../binary-file-download/binary-file-download.service.ts","../../binary-file-download/binary-file-download.module.ts","../../binary-file-download/c8y-ngx-components-binary-file-download.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Router, NavigationEnd, ActivatedRoute } from '@angular/router';\nimport { filter, map } from 'rxjs/operators';\nimport { IManagedObject, InventoryBinaryService, InventoryService } from '@c8y/client';\nimport { AlertService, gettext, ModalService, Status } from '@c8y/ngx-components';\nimport { saveAs } from 'file-saver';\nimport { isUndefined } from 'lodash-es';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Injectable()\nexport class BinaryFileDownloadService {\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private inventoryService: InventoryService,\n private alertService: AlertService,\n private modalService: ModalService,\n private translate: TranslateService,\n private inventoryBinary: InventoryBinaryService\n ) {}\n\n run() {\n this.router.events\n .pipe(\n filter(event => {\n return event instanceof NavigationEnd && this.route.snapshot.queryParams.download;\n }),\n map(() => this.route.snapshot.queryParams.download)\n )\n .subscribe(async downloadId => {\n try {\n const { data } = await this.inventoryService.detail(downloadId);\n if (!isUndefined(data.c8y_IsBinary)) {\n this.showDownloadModal(data);\n } else {\n const alertMessage = this.translate.instant(\n gettext(\n 'Could not download the file: object with ID \"{{ id }}\" is not a valid binary.'\n ),\n { id: data.id }\n );\n this.alertService.danger(alertMessage);\n }\n } catch (ex) {\n this.alertService.addServerFailure(ex);\n }\n });\n }\n\n async showDownloadModal(binaryMo: IManagedObject) {\n try {\n const modalBody = this.translate.instant(\n gettext('You are about to download file \"{{ fileName }}\". Do you want to proceed?'),\n { fileName: binaryMo.name }\n );\n await this.modalService.confirm(gettext('File download'), modalBody, Status.INFO, {\n ok: gettext('Download')\n });\n const arrayBuffer = await this.getArrayBuffer(binaryMo.id);\n const fileBinary = new File([arrayBuffer], binaryMo.name, { type: binaryMo.contentType });\n saveAs(fileBinary);\n } catch (e) {\n // empty body :(\n console.log({ e });\n }\n }\n\n private async getArrayBuffer(binaryId): Promise<ArrayBuffer> {\n let arrayBuffer: ArrayBuffer;\n try {\n const res = await this.inventoryBinary.download(binaryId);\n arrayBuffer = await res.arrayBuffer();\n } catch (ex) {\n const msg = gettext('Could not get the binary.');\n this.alertService.danger(msg);\n }\n\n return arrayBuffer;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@c8y/ngx-components';\nimport { BinaryFileDownloadService } from './binary-file-download.service';\nimport { RouterModule } from '@angular/router';\n\n@NgModule({\n imports: [CommonModule, RouterModule],\n providers: [BinaryFileDownloadService]\n})\nexport class BinaryFileDownloadModule {\n constructor(binaryFileDownloadService: BinaryFileDownloadService) {\n binaryFileDownloadService.run();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -66,11 +66,12 @@ class LpwanSetDeviceProtocolService {
|
|
|
66
66
|
getAvailableProtocols(device) {
|
|
67
67
|
return __awaiter(this, void 0, void 0, function* () {
|
|
68
68
|
const query = {
|
|
69
|
-
|
|
70
|
-
__in: this.getProtocolTypesMatchingDevice(device)
|
|
71
|
-
}
|
|
69
|
+
__filter: {
|
|
70
|
+
type: { __in: this.getProtocolTypesMatchingDevice(device) }
|
|
71
|
+
},
|
|
72
|
+
__orderby: [{ name: 1 }]
|
|
72
73
|
};
|
|
73
|
-
return this.inventoryService.listQuery(query);
|
|
74
|
+
return this.inventoryService.listQuery(query, { withTotalPages: true, pageSize: 5 });
|
|
74
75
|
});
|
|
75
76
|
}
|
|
76
77
|
getProtocolTypesMatchingDevice(device) {
|
|
@@ -100,13 +101,20 @@ class LpwanAssignDeviceProtocolComponent {
|
|
|
100
101
|
this.alertService = alertService;
|
|
101
102
|
this.router = router;
|
|
102
103
|
this.inventoryService = inventoryService;
|
|
103
|
-
this.
|
|
104
|
+
this.filterProtocols = pipe();
|
|
105
|
+
this.pattern = '';
|
|
104
106
|
}
|
|
105
107
|
ngOnInit() {
|
|
106
108
|
return __awaiter(this, void 0, void 0, function* () {
|
|
107
109
|
yield this.reload();
|
|
110
|
+
this.setPipe('');
|
|
108
111
|
});
|
|
109
112
|
}
|
|
113
|
+
setPipe(filterStr) {
|
|
114
|
+
this.pattern = filterStr;
|
|
115
|
+
this.filterProtocols = pipe(map((protocols) => protocols.filter(protocol => (!this.currentProtocol || this.currentProtocol.id !== protocol.id) &&
|
|
116
|
+
(!filterStr || protocol.name.toLowerCase().indexOf(filterStr.toLowerCase()) > -1))));
|
|
117
|
+
}
|
|
110
118
|
reload() {
|
|
111
119
|
return __awaiter(this, void 0, void 0, function* () {
|
|
112
120
|
this.loading = true;
|
|
@@ -161,7 +169,7 @@ class LpwanAssignDeviceProtocolComponent {
|
|
|
161
169
|
LpwanAssignDeviceProtocolComponent.decorators = [
|
|
162
170
|
{ type: Component, args: [{
|
|
163
171
|
selector: 'set-device-protocol',
|
|
164
|
-
template: "<form #lpwanSetDeviceProtocolForm=\"ngForm\" class=\"row\">\n
|
|
172
|
+
template: "<form #lpwanSetDeviceProtocolForm=\"ngForm\">\n <div class=\"row\">\n <div class=\"col-md-6\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <h4 class=\"card-title\">\n {{ 'LPWAN device protocol' | translate }}\n </h4>\n </div>\n <div class=\"p-16\">\n <div *ngIf=\"loading\">\n <c8y-loading></c8y-loading>\n </div>\n\n <div *ngIf=\"!loading\">\n <div class=\"form-group\">\n <label translate>Current device protocol</label>\n <p class=\"form-control-static\" *ngIf=\"!currentProtocol\">\n {{ device.type }}\n </p>\n <p class=\"form-control-static\" *ngIf=\"currentProtocol\">\n {{ currentProtocol.name }}\n </p>\n </div>\n <c8y-form-group>\n <c8y-typeahead\n [(ngModel)]=\"newProtocol\"\n placeholder=\"{{ 'Select new device protocol' | translate }}\"\n (onSearch)=\"setPipe($event)\"\n name=\"newProtocol\"\n [allowFreeEntries]=\"false\"\n >\n <c8y-li\n *c8yFor=\"\n let protocol of availableProtocols;\n loadMore: 'hidden';\n pipe: filterProtocols\n \"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"newProtocol = protocol; setPipe('')\"\n >\n <c8y-highlight [text]=\"protocol.name\" [pattern]=\"pattern\"></c8y-highlight>\n </c8y-li>\n </c8y-typeahead>\n <c8y-messages\n ><c8y-message\n name=\"notExisting\"\n [text]=\"'Select one of the protocols.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n title=\"{{ 'Save' | translate }}\"\n class=\"btn btn-primary\"\n (click)=\"apply(newProtocol)\"\n [disabled]=\"!newProtocol\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n</form>\n"
|
|
165
173
|
},] }
|
|
166
174
|
];
|
|
167
175
|
LpwanAssignDeviceProtocolComponent.ctorParameters = () => [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c8y-ngx-components-protocol-lpwan.js","sources":["../../protocol-lpwan/lpwan-set-device-protocol.service.ts","../../protocol-lpwan/lpwan-set-device-protocol.component.ts","../../protocol-lpwan/lpwan-agent.guard.ts","../../protocol-lpwan/lpwan-protocol.module.ts","../../protocol-lpwan/c8y-ngx-components-protocol-lpwan.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { IManagedObject, InventoryService, IResultList, FetchClient, IFetchOptions, IdentityService } from '@c8y/client';\nimport { get } from 'lodash-es';\n\n@Injectable()\nexport class LpwanSetDeviceProtocolService {\n supportedDevicesCfgs = [\n {\n name: 'lora',\n match: device => get(device, 'c8y_LpwanDevice.lpwanDeviceType') === 'Lora',\n protocolTypes: ['c8y_ActilityDeviceType', 'c8y_LoraDeviceType']\n },\n {\n name: 'sigfox',\n match: device => get(device, 'c8y_LpwanDevice.serviceProvider') === 'Sigfox',\n protocolTypes: ['c8y_SigfoxDeviceType']\n },\n ];\n\n private readonly header: any = { 'Content-Type': 'application/json' };\n private readonly microserviceUrl: string = '/service/loriot';\n\n constructor(\n private inventoryService: InventoryService,\n private client: FetchClient,\n private identityService: IdentityService\n ) { }\n\n async refreshCache(device) {\n const externalId = await this.getExternalId(device);\n if (externalId) {\n const url = `${this.microserviceUrl}/refreshCache/${externalId}`;\n const options: IFetchOptions = {\n method: 'POST',\n headers: this.header,\n body: JSON.stringify({})\n };\n return this.client.fetch(url, options);\n }\n }\n\n isSupportedDevice(device: IManagedObject): boolean {\n return this.supportedDevicesCfgs.some(({ match }) => match(device));\n }\n\n async getCurrentProtocol(device: IManagedObject) {\n const protocolId = device.c8y_LpwanDevice.type\n ? device.c8y_LpwanDevice.type.split('/')[2]\n : null;\n if (!protocolId) {\n return null;\n }\n const { data } = await this.inventoryService.detail(protocolId);\n return data;\n }\n\n async applyProtocol(device: IManagedObject, selectedProtocol: IManagedObject) {\n device.c8y_LpwanDevice.type = 'inventory/managedObjects/' + selectedProtocol.id;\n device.type = selectedProtocol.name;\n return this.inventoryService.update(device);\n }\n\n async getAvailableProtocols(device: IManagedObject): Promise<IResultList<IManagedObject>> {\n const query = {\n type: {\n __in: this.getProtocolTypesMatchingDevice(device)\n }\n };\n return this.inventoryService.listQuery(query);\n }\n\n private getProtocolTypesMatchingDevice(device: IManagedObject): string[] {\n const matchingCfg = this.supportedDevicesCfgs.find(({ match }) => match(device));\n return matchingCfg ? matchingCfg.protocolTypes : [];\n }\n\n private async getExternalId(device: IManagedObject): Promise<string> {\n const externalIds = (await this.identityService.list(device.id)).data;\n const loriotEuiExternalId = externalIds.find(externalId => externalId.type === 'c8y_LoriotEUI');\n return loriotEuiExternalId ? loriotEuiExternalId.externalId : null;\n }\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { LpwanSetDeviceProtocolService } from './lpwan-set-device-protocol.service';\nimport { AlertService, gettext } from '@c8y/ngx-components';\nimport { IManagedObject, InventoryService, IResultList } from '@c8y/client';\nimport { Router } from '@angular/router';\nimport { pipe } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'set-device-protocol',\n templateUrl: './lpwan-set-device-protocol.component.html'\n})\n\nexport class LpwanAssignDeviceProtocolComponent implements OnInit {\n loading: boolean;\n device: IManagedObject;\n currentProtocol: IManagedObject;\n availableProtocols: IResultList<IManagedObject>;\n newProtocol: IManagedObject;\n\n filterCurrentProtocol = pipe(\n map((protocols: IManagedObject[]) =>\n protocols.filter(protocol => !this.currentProtocol || this.currentProtocol.id !== protocol.id)\n )\n );\n @ViewChild('lpwanSetDeviceProtocolForm', { static: false }) lpwanSetDeviceProtocolForm: any;\n\n constructor(\n private lpwanService: LpwanSetDeviceProtocolService,\n private alertService: AlertService,\n private router: Router,\n private inventoryService: InventoryService\n ) { }\n async ngOnInit() {\n await this.reload();\n }\n\n async reload() {\n this.loading = true;\n this.newProtocol = null;\n try {\n await this.loadDevice();\n this.availableProtocols = await this.lpwanService.getAvailableProtocols(this.device);\n this.currentProtocol = await this.lpwanService.getCurrentProtocol(this.device);\n } catch (ex) {\n this.alertService.addServerFailure(ex);\n } finally {\n this.loading = false;\n }\n }\n\n async loadDevice() {\n const deviceId = this.router.routerState.snapshot.url.match(/\\d+/)[0];\n const { data } = await this.inventoryService.detail(deviceId);\n this.device = data;\n }\n\n async apply(selectedProtocol) {\n try {\n const moUpdated = (await this.lpwanService.applyProtocol(this.device, selectedProtocol)).res.status === 200;\n await this.reload();\n this.alertService.success(gettext('Device protocol set.'));\n this.lpwanSetDeviceProtocolForm.reset('dirty');\n if (moUpdated) {\n this.refreshCache();\n }\n } catch (ex) {\n this.alertService.danger(gettext('Could not set device protocol.'));\n }\n }\n\n async refreshCache() {\n try {\n await this.lpwanService.refreshCache(this.device);\n } catch (ex) {\n // do nothing (refreshing is an optional step)\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate } from '@angular/router';\nimport { LpwanSetDeviceProtocolService } from './lpwan-set-device-protocol.service';\n@Injectable()\nexport class LpwanAgentGuard implements CanActivate {\n constructor(private lpwanService: LpwanSetDeviceProtocolService) {}\n\n canActivate(route: ActivatedRouteSnapshot): boolean {\n const device = route.data.contextData || route.parent.data.contextData;\n return this.lpwanService.isSupportedDevice(device);\n }\n}\n","import { NgModule } from '@angular/core';\nimport {\n CoreModule,\n FormsModule,\n gettext,\n HOOK_ONCE_ROUTE,\n Route,\n ViewContext\n} from '@c8y/ngx-components';\nimport { LpwanAssignDeviceProtocolComponent } from './lpwan-set-device-protocol.component';\nimport { LpwanAgentGuard } from './lpwan-agent.guard';\nimport { LpwanSetDeviceProtocolService } from './lpwan-set-device-protocol.service';\n\nconst routes: Route[] = [\n {\n context: ViewContext.Device,\n path: 'assign-protocol',\n component: LpwanAssignDeviceProtocolComponent,\n label: gettext('LPWAN'),\n icon: 'c8y-device-protocols',\n canActivate: [LpwanAgentGuard]\n }\n];\n\n@NgModule({\n declarations: [\n LpwanAssignDeviceProtocolComponent\n ],\n imports: [\n CoreModule,\n FormsModule\n ],\n entryComponents: [LpwanAssignDeviceProtocolComponent],\n providers: [\n LpwanAgentGuard,\n LpwanSetDeviceProtocolService,\n {\n provide: HOOK_ONCE_ROUTE,\n useValue: routes,\n multi: true\n }\n ]\n})\nexport class LpwanProtocolModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {LpwanAgentGuard as ɵb} from './lpwan-agent.guard';\nexport {LpwanSetDeviceProtocolService as ɵa} from './lpwan-set-device-protocol.service';"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"c8y-ngx-components-protocol-lpwan.js","sources":["../../protocol-lpwan/lpwan-set-device-protocol.service.ts","../../protocol-lpwan/lpwan-set-device-protocol.component.ts","../../protocol-lpwan/lpwan-agent.guard.ts","../../protocol-lpwan/lpwan-protocol.module.ts","../../protocol-lpwan/c8y-ngx-components-protocol-lpwan.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { IManagedObject, InventoryService, IResultList, FetchClient, IFetchOptions, IdentityService } from '@c8y/client';\nimport { get } from 'lodash-es';\n\n@Injectable()\nexport class LpwanSetDeviceProtocolService {\n supportedDevicesCfgs = [\n {\n name: 'lora',\n match: device => get(device, 'c8y_LpwanDevice.lpwanDeviceType') === 'Lora',\n protocolTypes: ['c8y_ActilityDeviceType', 'c8y_LoraDeviceType']\n },\n {\n name: 'sigfox',\n match: device => get(device, 'c8y_LpwanDevice.serviceProvider') === 'Sigfox',\n protocolTypes: ['c8y_SigfoxDeviceType']\n },\n ];\n\n private readonly header: any = { 'Content-Type': 'application/json' };\n private readonly microserviceUrl: string = '/service/loriot';\n\n constructor(\n private inventoryService: InventoryService,\n private client: FetchClient,\n private identityService: IdentityService\n ) { }\n\n async refreshCache(device) {\n const externalId = await this.getExternalId(device);\n if (externalId) {\n const url = `${this.microserviceUrl}/refreshCache/${externalId}`;\n const options: IFetchOptions = {\n method: 'POST',\n headers: this.header,\n body: JSON.stringify({})\n };\n return this.client.fetch(url, options);\n }\n }\n\n isSupportedDevice(device: IManagedObject): boolean {\n return this.supportedDevicesCfgs.some(({ match }) => match(device));\n }\n\n async getCurrentProtocol(device: IManagedObject) {\n const protocolId = device.c8y_LpwanDevice.type\n ? device.c8y_LpwanDevice.type.split('/')[2]\n : null;\n if (!protocolId) {\n return null;\n }\n const { data } = await this.inventoryService.detail(protocolId);\n return data;\n }\n\n async applyProtocol(device: IManagedObject, selectedProtocol: IManagedObject) {\n device.c8y_LpwanDevice.type = 'inventory/managedObjects/' + selectedProtocol.id;\n device.type = selectedProtocol.name;\n return this.inventoryService.update(device);\n }\n\n async getAvailableProtocols(device: IManagedObject): Promise<IResultList<IManagedObject>> {\n const query = {\n __filter: {\n type: { __in: this.getProtocolTypesMatchingDevice(device) }\n },\n __orderby: [{ name: 1 }]\n };\n return this.inventoryService.listQuery(query, { withTotalPages: true, pageSize: 5 });\n }\n\n private getProtocolTypesMatchingDevice(device: IManagedObject): string[] {\n const matchingCfg = this.supportedDevicesCfgs.find(({ match }) => match(device));\n return matchingCfg ? matchingCfg.protocolTypes : [];\n }\n\n private async getExternalId(device: IManagedObject): Promise<string> {\n const externalIds = (await this.identityService.list(device.id)).data;\n const loriotEuiExternalId = externalIds.find(externalId => externalId.type === 'c8y_LoriotEUI');\n return loriotEuiExternalId ? loriotEuiExternalId.externalId : null;\n }\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { LpwanSetDeviceProtocolService } from './lpwan-set-device-protocol.service';\nimport { AlertService, gettext } from '@c8y/ngx-components';\nimport { IManagedObject, InventoryService, IResultList } from '@c8y/client';\nimport { Router } from '@angular/router';\nimport { pipe } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'set-device-protocol',\n templateUrl: './lpwan-set-device-protocol.component.html'\n})\n\nexport class LpwanAssignDeviceProtocolComponent implements OnInit {\n loading: boolean;\n device: IManagedObject;\n currentProtocol: IManagedObject;\n availableProtocols: IResultList<IManagedObject>;\n newProtocol: IManagedObject;\n\n filterProtocols = pipe();\n pattern = '';\n\n @ViewChild('lpwanSetDeviceProtocolForm', { static: false }) lpwanSetDeviceProtocolForm: any;\n\n constructor(\n private lpwanService: LpwanSetDeviceProtocolService,\n private alertService: AlertService,\n private router: Router,\n private inventoryService: InventoryService\n ) { }\n async ngOnInit() {\n await this.reload();\n this.setPipe('');\n }\n\n setPipe(filterStr: string) {\n this.pattern = filterStr;\n this.filterProtocols = pipe(\n map((protocols: IManagedObject[]) =>\n protocols.filter(\n protocol =>\n (!this.currentProtocol || this.currentProtocol.id !== protocol.id) &&\n (!filterStr || protocol.name.toLowerCase().indexOf(filterStr.toLowerCase()) > -1)\n )\n )\n );\n }\n\n async reload() {\n this.loading = true;\n this.newProtocol = null;\n try {\n await this.loadDevice();\n this.availableProtocols = await this.lpwanService.getAvailableProtocols(this.device);\n this.currentProtocol = await this.lpwanService.getCurrentProtocol(this.device);\n } catch (ex) {\n this.alertService.addServerFailure(ex);\n } finally {\n this.loading = false;\n }\n }\n\n async loadDevice() {\n const deviceId = this.router.routerState.snapshot.url.match(/\\d+/)[0];\n const { data } = await this.inventoryService.detail(deviceId);\n this.device = data;\n }\n\n async apply(selectedProtocol) {\n try {\n const moUpdated = (await this.lpwanService.applyProtocol(this.device, selectedProtocol)).res.status === 200;\n await this.reload();\n this.alertService.success(gettext('Device protocol set.'));\n this.lpwanSetDeviceProtocolForm.reset('dirty');\n if (moUpdated) {\n this.refreshCache();\n }\n } catch (ex) {\n this.alertService.danger(gettext('Could not set device protocol.'));\n }\n }\n\n async refreshCache() {\n try {\n await this.lpwanService.refreshCache(this.device);\n } catch (ex) {\n // do nothing (refreshing is an optional step)\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate } from '@angular/router';\nimport { LpwanSetDeviceProtocolService } from './lpwan-set-device-protocol.service';\n@Injectable()\nexport class LpwanAgentGuard implements CanActivate {\n constructor(private lpwanService: LpwanSetDeviceProtocolService) {}\n\n canActivate(route: ActivatedRouteSnapshot): boolean {\n const device = route.data.contextData || route.parent.data.contextData;\n return this.lpwanService.isSupportedDevice(device);\n }\n}\n","import { NgModule } from '@angular/core';\nimport {\n CoreModule,\n FormsModule,\n gettext,\n HOOK_ONCE_ROUTE,\n Route,\n ViewContext\n} from '@c8y/ngx-components';\nimport { LpwanAssignDeviceProtocolComponent } from './lpwan-set-device-protocol.component';\nimport { LpwanAgentGuard } from './lpwan-agent.guard';\nimport { LpwanSetDeviceProtocolService } from './lpwan-set-device-protocol.service';\n\nconst routes: Route[] = [\n {\n context: ViewContext.Device,\n path: 'assign-protocol',\n component: LpwanAssignDeviceProtocolComponent,\n label: gettext('LPWAN'),\n icon: 'c8y-device-protocols',\n canActivate: [LpwanAgentGuard]\n }\n];\n\n@NgModule({\n declarations: [\n LpwanAssignDeviceProtocolComponent\n ],\n imports: [\n CoreModule,\n FormsModule\n ],\n entryComponents: [LpwanAssignDeviceProtocolComponent],\n providers: [\n LpwanAgentGuard,\n LpwanSetDeviceProtocolService,\n {\n provide: HOOK_ONCE_ROUTE,\n useValue: routes,\n multi: true\n }\n ]\n})\nexport class LpwanProtocolModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {LpwanAgentGuard as ɵb} from './lpwan-agent.guard';\nexport {LpwanSetDeviceProtocolService as ɵa} from './lpwan-set-device-protocol.service';"],"names":[],"mappings":"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"}
|