@c8y/ngx-components 1017.0.62 → 1017.0.64
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/core/common/extension-hooks.d.ts +1 -0
- package/core/wizard/wizard-outlet/wizard-outlet.component.d.ts +3 -2
- package/esm2020/core/common/extension-hooks.mjs +14 -1
- package/esm2020/core/wizard/wizard-outlet/wizard-outlet.component.mjs +9 -6
- package/esm2020/core/wizard/wizard.service.mjs +3 -3
- package/esm2020/repository/software/device-tab/device-software-list.component.mjs +19 -57
- package/esm2020/repository/software/device-tab/device-software.service.mjs +93 -0
- package/esm2020/repository/software/device-tab/index.mjs +2 -1
- package/esm2020/repository/software/device-tab/software-device-tab.component.mjs +21 -12
- package/fesm2015/c8y-ngx-components-repository-software.mjs +113 -56
- package/fesm2015/c8y-ngx-components-repository-software.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components.mjs +22 -6
- package/fesm2015/c8y-ngx-components.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-repository-software.mjs +111 -57
- package/fesm2020/c8y-ngx-components-repository-software.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components.mjs +22 -6
- package/fesm2020/c8y-ngx-components.mjs.map +1 -1
- package/package.json +2 -2
- package/repository/software/device-tab/device-software-list.component.d.ts +8 -7
- package/repository/software/device-tab/device-software.service.d.ts +33 -0
- package/repository/software/device-tab/index.d.ts +1 -0
- package/repository/software/device-tab/software-device-tab.component.d.ts +3 -1
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { AdvancedSoftwareService } from '@c8y/ngx-components/repository/shared';
|
|
3
|
+
import { set } from 'lodash-es';
|
|
4
|
+
import { BehaviorSubject, Subject } from 'rxjs';
|
|
5
|
+
import { share, switchMap } from 'rxjs/operators';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@c8y/ngx-components/repository/shared";
|
|
8
|
+
export class DeviceSoftwareService {
|
|
9
|
+
constructor(advancedSoftwareService) {
|
|
10
|
+
this.advancedSoftwareService = advancedSoftwareService;
|
|
11
|
+
this.reloadSubject$ = new BehaviorSubject(null);
|
|
12
|
+
this.loadingSubject$ = new Subject();
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Indicates whether device software data is currently being loaded.
|
|
16
|
+
*/
|
|
17
|
+
get loading$() {
|
|
18
|
+
return this.loadingSubject$.asObservable().pipe(share());
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Trigger device software data reload.
|
|
22
|
+
*/
|
|
23
|
+
reload() {
|
|
24
|
+
this.reloadSubject$.next();
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Retrieves the software list that is installed on a given device.
|
|
28
|
+
*
|
|
29
|
+
* @param deviceId ID of the device to retrieve software data for
|
|
30
|
+
* @param filterCriteria Criteria that software items are filtered by.
|
|
31
|
+
* @param legacySoftwareList If provided no data will be fetched from backend. The provided software list
|
|
32
|
+
* will be filtered by the specified filter criteria.
|
|
33
|
+
*
|
|
34
|
+
* @returns The software items installed on the specified device filtered by the specified criteria.
|
|
35
|
+
*/
|
|
36
|
+
getSoftwareList(deviceId, filterCriteria, legacySoftwareList) {
|
|
37
|
+
this.loadingSubject$.next(true);
|
|
38
|
+
return this.reloadSubject$.pipe(switchMap(() => {
|
|
39
|
+
const softwareList$ = !!legacySoftwareList
|
|
40
|
+
? this.getLegacySoftwareList(legacySoftwareList, filterCriteria)
|
|
41
|
+
: this.getAdvancedSoftwareList(deviceId, filterCriteria);
|
|
42
|
+
return softwareList$.then(resultList => {
|
|
43
|
+
this.loadingSubject$.next(false);
|
|
44
|
+
return resultList;
|
|
45
|
+
});
|
|
46
|
+
}), share());
|
|
47
|
+
}
|
|
48
|
+
getAdvancedSoftwareList(deviceId, filterCriteria) {
|
|
49
|
+
const queryFilter = {
|
|
50
|
+
deviceId,
|
|
51
|
+
currentPage: 1,
|
|
52
|
+
pageSize: 50,
|
|
53
|
+
withTotalPages: true
|
|
54
|
+
};
|
|
55
|
+
if (filterCriteria?.name) {
|
|
56
|
+
set(queryFilter, 'name', `*${filterCriteria.name}*`);
|
|
57
|
+
}
|
|
58
|
+
if (filterCriteria?.softwareType) {
|
|
59
|
+
set(queryFilter, 'type', `${filterCriteria.softwareType}`);
|
|
60
|
+
}
|
|
61
|
+
return this.advancedSoftwareService.list(queryFilter);
|
|
62
|
+
}
|
|
63
|
+
getLegacySoftwareList(legacySoftwareList, filterCriteria) {
|
|
64
|
+
const data = filterCriteria
|
|
65
|
+
? legacySoftwareList.filter(item => {
|
|
66
|
+
let match = true;
|
|
67
|
+
if (filterCriteria?.name) {
|
|
68
|
+
match = match && item.name?.includes(filterCriteria.name);
|
|
69
|
+
}
|
|
70
|
+
if (filterCriteria?.softwareType) {
|
|
71
|
+
match = match && item.softwareType === filterCriteria.softwareType;
|
|
72
|
+
}
|
|
73
|
+
return match;
|
|
74
|
+
})
|
|
75
|
+
: legacySoftwareList;
|
|
76
|
+
return Promise.resolve({
|
|
77
|
+
data,
|
|
78
|
+
res: null,
|
|
79
|
+
paging: {
|
|
80
|
+
totalPages: data.length
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
DeviceSoftwareService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DeviceSoftwareService, deps: [{ token: i1.AdvancedSoftwareService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
86
|
+
DeviceSoftwareService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DeviceSoftwareService, providedIn: 'root' });
|
|
87
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DeviceSoftwareService, decorators: [{
|
|
88
|
+
type: Injectable,
|
|
89
|
+
args: [{
|
|
90
|
+
providedIn: 'root'
|
|
91
|
+
}]
|
|
92
|
+
}], ctorParameters: function () { return [{ type: i1.AdvancedSoftwareService }]; } });
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXNvZnR3YXJlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9yZXBvc2l0b3J5L3NvZnR3YXJlL2RldmljZS10YWIvZGV2aWNlLXNvZnR3YXJlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQ0wsdUJBQXVCLEVBR3hCLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFLbEQsTUFBTSxPQUFPLHFCQUFxQjtJQVdoQyxZQUFvQix1QkFBZ0Q7UUFBaEQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUg1RCxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFPLElBQUksQ0FBQyxDQUFDO1FBQ2pELG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQUVzQixDQUFDO0lBVnhFOztPQUVHO0lBQ0gsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFPRDs7T0FFRztJQUNILE1BQU07UUFDSixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxlQUFlLENBQ2IsUUFBUSxFQUNSLGNBQThCLEVBQzlCLGtCQUFxQztRQUVyQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVoQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUM3QixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDLGtCQUFrQjtnQkFDeEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxrQkFBa0IsRUFBRSxjQUFjLENBQUM7Z0JBQ2hFLENBQUMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQzNELE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pDLE9BQU8sVUFBVSxDQUFDO1lBQ3BCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsS0FBSyxFQUFFLENBQ1IsQ0FBQztJQUNKLENBQUM7SUFFTyx1QkFBdUIsQ0FDN0IsUUFBUSxFQUNSLGNBQThCO1FBRTlCLE1BQU0sV0FBVyxHQUFHO1lBQ2xCLFFBQVE7WUFDUixXQUFXLEVBQUUsQ0FBQztZQUNkLFFBQVEsRUFBRSxFQUFFO1lBQ1osY0FBYyxFQUFFLElBQUk7U0FDckIsQ0FBQztRQUNGLElBQUksY0FBYyxFQUFFLElBQUksRUFBRTtZQUN4QixHQUFHLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLGNBQWMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1NBQ3REO1FBQ0QsSUFBSSxjQUFjLEVBQUUsWUFBWSxFQUFFO1lBQ2hDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLEdBQUcsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7U0FDNUQ7UUFDRCxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUVuRCxDQUFDO0lBQ0osQ0FBQztJQUVPLHFCQUFxQixDQUMzQixrQkFBb0MsRUFDcEMsY0FBOEI7UUFFOUIsTUFBTSxJQUFJLEdBQUcsY0FBYztZQUN6QixDQUFDLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUMvQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBQ2pCLElBQUksY0FBYyxFQUFFLElBQUksRUFBRTtvQkFDeEIsS0FBSyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQzNEO2dCQUNELElBQUksY0FBYyxFQUFFLFlBQVksRUFBRTtvQkFDaEMsS0FBSyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLGNBQWMsQ0FBQyxZQUFZLENBQUM7aUJBQ3BFO2dCQUVELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUFDO1lBQ0osQ0FBQyxDQUFDLGtCQUFrQixDQUFDO1FBQ3ZCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUNyQixJQUFJO1lBQ0osR0FBRyxFQUFFLElBQUk7WUFDVCxNQUFNLEVBQUU7Z0JBQ04sVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNO2FBQ0U7U0FDNUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7a0hBaEdVLHFCQUFxQjtzSEFBckIscUJBQXFCLGNBRnBCLE1BQU07MkZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElSZXN1bHRMaXN0LCBQYWdpbmcgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBZHZhbmNlZFNvZnR3YXJlU2VydmljZSxcbiAgRGV2aWNlU29mdHdhcmUsXG4gIEZpbHRlckNyaXRlcmlhXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvcmVwb3NpdG9yeS9zaGFyZWQnO1xuaW1wb3J0IHsgc2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc2hhcmUsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRGV2aWNlU29mdHdhcmVTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIGRldmljZSBzb2Z0d2FyZSBkYXRhIGlzIGN1cnJlbnRseSBiZWluZyBsb2FkZWQuXG4gICAqL1xuICBnZXQgbG9hZGluZyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMubG9hZGluZ1N1YmplY3QkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2hhcmUoKSk7XG4gIH1cblxuICBwcml2YXRlIHJlbG9hZFN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx2b2lkPihudWxsKTtcbiAgcHJpdmF0ZSBsb2FkaW5nU3ViamVjdCQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYWR2YW5jZWRTb2Z0d2FyZVNlcnZpY2U6IEFkdmFuY2VkU29mdHdhcmVTZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyIGRldmljZSBzb2Z0d2FyZSBkYXRhIHJlbG9hZC5cbiAgICovXG4gIHJlbG9hZCgpIHtcbiAgICB0aGlzLnJlbG9hZFN1YmplY3QkLm5leHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIHNvZnR3YXJlIGxpc3QgdGhhdCBpcyBpbnN0YWxsZWQgb24gYSBnaXZlbiBkZXZpY2UuXG4gICAqXG4gICAqIEBwYXJhbSBkZXZpY2VJZCBJRCBvZiB0aGUgZGV2aWNlIHRvIHJldHJpZXZlIHNvZnR3YXJlIGRhdGEgZm9yXG4gICAqIEBwYXJhbSBmaWx0ZXJDcml0ZXJpYSBDcml0ZXJpYSB0aGF0IHNvZnR3YXJlIGl0ZW1zIGFyZSBmaWx0ZXJlZCBieS5cbiAgICogQHBhcmFtIGxlZ2FjeVNvZnR3YXJlTGlzdCBJZiBwcm92aWRlZCBubyBkYXRhIHdpbGwgYmUgZmV0Y2hlZCBmcm9tIGJhY2tlbmQuIFRoZSBwcm92aWRlZCBzb2Z0d2FyZSBsaXN0XG4gICAqIHdpbGwgYmUgZmlsdGVyZWQgYnkgdGhlIHNwZWNpZmllZCBmaWx0ZXIgY3JpdGVyaWEuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBzb2Z0d2FyZSBpdGVtcyBpbnN0YWxsZWQgb24gdGhlIHNwZWNpZmllZCBkZXZpY2UgZmlsdGVyZWQgYnkgdGhlIHNwZWNpZmllZCBjcml0ZXJpYS5cbiAgICovXG4gIGdldFNvZnR3YXJlTGlzdChcbiAgICBkZXZpY2VJZCxcbiAgICBmaWx0ZXJDcml0ZXJpYTogRmlsdGVyQ3JpdGVyaWEsXG4gICAgbGVnYWN5U29mdHdhcmVMaXN0PzogRGV2aWNlU29mdHdhcmVbXVxuICApOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PERldmljZVNvZnR3YXJlPj4ge1xuICAgIHRoaXMubG9hZGluZ1N1YmplY3QkLm5leHQodHJ1ZSk7XG5cbiAgICByZXR1cm4gdGhpcy5yZWxvYWRTdWJqZWN0JC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgY29uc3Qgc29mdHdhcmVMaXN0JCA9ICEhbGVnYWN5U29mdHdhcmVMaXN0XG4gICAgICAgICAgPyB0aGlzLmdldExlZ2FjeVNvZnR3YXJlTGlzdChsZWdhY3lTb2Z0d2FyZUxpc3QsIGZpbHRlckNyaXRlcmlhKVxuICAgICAgICAgIDogdGhpcy5nZXRBZHZhbmNlZFNvZnR3YXJlTGlzdChkZXZpY2VJZCwgZmlsdGVyQ3JpdGVyaWEpO1xuICAgICAgICByZXR1cm4gc29mdHdhcmVMaXN0JC50aGVuKHJlc3VsdExpc3QgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QkLm5leHQoZmFsc2UpO1xuICAgICAgICAgIHJldHVybiByZXN1bHRMaXN0O1xuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgc2hhcmUoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldEFkdmFuY2VkU29mdHdhcmVMaXN0KFxuICAgIGRldmljZUlkLFxuICAgIGZpbHRlckNyaXRlcmlhOiBGaWx0ZXJDcml0ZXJpYVxuICApOiBQcm9taXNlPElSZXN1bHRMaXN0PERldmljZVNvZnR3YXJlPj4ge1xuICAgIGNvbnN0IHF1ZXJ5RmlsdGVyID0ge1xuICAgICAgZGV2aWNlSWQsXG4gICAgICBjdXJyZW50UGFnZTogMSxcbiAgICAgIHBhZ2VTaXplOiA1MCxcbiAgICAgIHdpdGhUb3RhbFBhZ2VzOiB0cnVlXG4gICAgfTtcbiAgICBpZiAoZmlsdGVyQ3JpdGVyaWE/Lm5hbWUpIHtcbiAgICAgIHNldChxdWVyeUZpbHRlciwgJ25hbWUnLCBgKiR7ZmlsdGVyQ3JpdGVyaWEubmFtZX0qYCk7XG4gICAgfVxuICAgIGlmIChmaWx0ZXJDcml0ZXJpYT8uc29mdHdhcmVUeXBlKSB7XG4gICAgICBzZXQocXVlcnlGaWx0ZXIsICd0eXBlJywgYCR7ZmlsdGVyQ3JpdGVyaWEuc29mdHdhcmVUeXBlfWApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hZHZhbmNlZFNvZnR3YXJlU2VydmljZS5saXN0KHF1ZXJ5RmlsdGVyKSBhcyB1bmtub3duIGFzIFByb21pc2U8XG4gICAgICBJUmVzdWx0TGlzdDxEZXZpY2VTb2Z0d2FyZT5cbiAgICA+O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMZWdhY3lTb2Z0d2FyZUxpc3QoXG4gICAgbGVnYWN5U29mdHdhcmVMaXN0OiBEZXZpY2VTb2Z0d2FyZVtdLFxuICAgIGZpbHRlckNyaXRlcmlhOiBGaWx0ZXJDcml0ZXJpYVxuICApOiBQcm9taXNlPElSZXN1bHRMaXN0PERldmljZVNvZnR3YXJlPj4ge1xuICAgIGNvbnN0IGRhdGEgPSBmaWx0ZXJDcml0ZXJpYVxuICAgICAgPyBsZWdhY3lTb2Z0d2FyZUxpc3QuZmlsdGVyKGl0ZW0gPT4ge1xuICAgICAgICAgIGxldCBtYXRjaCA9IHRydWU7XG4gICAgICAgICAgaWYgKGZpbHRlckNyaXRlcmlhPy5uYW1lKSB7XG4gICAgICAgICAgICBtYXRjaCA9IG1hdGNoICYmIGl0ZW0ubmFtZT8uaW5jbHVkZXMoZmlsdGVyQ3JpdGVyaWEubmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChmaWx0ZXJDcml0ZXJpYT8uc29mdHdhcmVUeXBlKSB7XG4gICAgICAgICAgICBtYXRjaCA9IG1hdGNoICYmIGl0ZW0uc29mdHdhcmVUeXBlID09PSBmaWx0ZXJDcml0ZXJpYS5zb2Z0d2FyZVR5cGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgICB9KVxuICAgICAgOiBsZWdhY3lTb2Z0d2FyZUxpc3Q7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICBkYXRhLFxuICAgICAgcmVzOiBudWxsLFxuICAgICAgcGFnaW5nOiB7XG4gICAgICAgIHRvdGFsUGFnZXM6IGRhdGEubGVuZ3RoXG4gICAgICB9IGFzIFBhZ2luZzxEZXZpY2VTb2Z0d2FyZT5cbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export * from './device-software-changes.component';
|
|
2
2
|
export * from './device-software-list.component';
|
|
3
|
+
export * from './device-software.service';
|
|
3
4
|
export * from './installed-software.component';
|
|
4
5
|
export * from './software-device-tab.component';
|
|
5
6
|
export * from './software-device-tab.guard';
|
|
6
7
|
export * from './software-repository-device-tab.module';
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9yZXBvc2l0b3J5L3NvZnR3YXJlL2RldmljZS10YWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx5Q0FBeUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGV2aWNlLXNvZnR3YXJlLWNoYW5nZXMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZGV2aWNlLXNvZnR3YXJlLWxpc3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZGV2aWNlLXNvZnR3YXJlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnN0YWxsZWQtc29mdHdhcmUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc29mdHdhcmUtZGV2aWNlLXRhYi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zb2Z0d2FyZS1kZXZpY2UtdGFiLmd1YXJkJztcbmV4cG9ydCAqIGZyb20gJy4vc29mdHdhcmUtcmVwb3NpdG9yeS1kZXZpY2UtdGFiLm1vZHVsZSc7XG4iXX0=
|
|
@@ -3,20 +3,23 @@ import { ActivatedRoute } from '@angular/router';
|
|
|
3
3
|
import { InventoryService, OperationStatus } from '@c8y/client';
|
|
4
4
|
import { AdvancedSoftwareService, RepositoryService, RepositoryType } from '@c8y/ngx-components/repository/shared';
|
|
5
5
|
import { BehaviorSubject } from 'rxjs';
|
|
6
|
-
import {
|
|
6
|
+
import { filter, map, switchMap, take } from 'rxjs/operators';
|
|
7
|
+
import { DeviceSoftwareService } from './device-software.service';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
import * as i1 from "@angular/router";
|
|
9
10
|
import * as i2 from "@c8y/ngx-components/repository/shared";
|
|
10
11
|
import * as i3 from "@c8y/client";
|
|
11
|
-
import * as i4 from "
|
|
12
|
-
import * as i5 from "@
|
|
13
|
-
import * as i6 from "
|
|
14
|
-
import * as i7 from "./
|
|
12
|
+
import * as i4 from "./device-software.service";
|
|
13
|
+
import * as i5 from "@angular/common";
|
|
14
|
+
import * as i6 from "@c8y/ngx-components";
|
|
15
|
+
import * as i7 from "./installed-software.component";
|
|
16
|
+
import * as i8 from "./device-software-changes.component";
|
|
15
17
|
export class SoftwareDeviceTabComponent {
|
|
16
|
-
constructor(route, repository, inventory, advancedSoftwareService) {
|
|
18
|
+
constructor(route, repository, inventory, deviceSoftwareService, advancedSoftwareService) {
|
|
17
19
|
this.route = route;
|
|
18
20
|
this.repository = repository;
|
|
19
21
|
this.inventory = inventory;
|
|
22
|
+
this.deviceSoftwareService = deviceSoftwareService;
|
|
20
23
|
this.advancedSoftwareService = advancedSoftwareService;
|
|
21
24
|
this.deviceId = this.route.snapshot.parent.data.contextData.id;
|
|
22
25
|
this.device$ = new BehaviorSubject(this.route.snapshot.parent.data.contextData);
|
|
@@ -24,7 +27,7 @@ export class SoftwareDeviceTabComponent {
|
|
|
24
27
|
const deviceTypeQuery = this.repository.getDeviceTypeQuery(RepositoryType.SOFTWARE, device);
|
|
25
28
|
return this.repository.getSoftwareTypeQuery(device, deviceTypeQuery);
|
|
26
29
|
}));
|
|
27
|
-
this.list$ = this.device$.pipe(
|
|
30
|
+
this.list$ = this.device$.pipe(switchMap(device => this.advancedSoftwareService
|
|
28
31
|
.isASMAvailable()
|
|
29
32
|
.then(isASMAvailable => ({ isASMAvailable, device }))), map(({ isASMAvailable, device }) =>
|
|
30
33
|
// with ASM available software items will be retrieved directly in the
|
|
@@ -65,7 +68,13 @@ export class SoftwareDeviceTabComponent {
|
|
|
65
68
|
}
|
|
66
69
|
async loadDevice() {
|
|
67
70
|
this.reloading = true;
|
|
68
|
-
|
|
71
|
+
this.deviceSoftwareService.reload();
|
|
72
|
+
const device = await Promise.all([
|
|
73
|
+
this.deviceSoftwareService.loading$
|
|
74
|
+
.pipe(filter(loading => !loading), take(1))
|
|
75
|
+
.toPromise(),
|
|
76
|
+
this.inventory.detail(this.deviceId, { withChildren: false }).then(result => result.data)
|
|
77
|
+
]).then(([_, device]) => device);
|
|
69
78
|
this.device$.next(device);
|
|
70
79
|
this.reloading = false;
|
|
71
80
|
}
|
|
@@ -100,10 +109,10 @@ export class SoftwareDeviceTabComponent {
|
|
|
100
109
|
return (operation && [OperationStatus.PENDING, OperationStatus.EXECUTING].includes(operation.status));
|
|
101
110
|
}
|
|
102
111
|
}
|
|
103
|
-
SoftwareDeviceTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SoftwareDeviceTabComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.RepositoryService }, { token: i3.InventoryService }, { token: i2.AdvancedSoftwareService }], target: i0.ɵɵFactoryTarget.Component });
|
|
104
|
-
SoftwareDeviceTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SoftwareDeviceTabComponent, selector: "c8y-software-device-tab", ngImport: i0, 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 split-view--7-5 m-b-0\">\n <c8y-installed-software\n class=\"split-view__list\"\n [device]=\"device$ | async\"\n [typesQuery]=\"typesQuery$ | async\"\n [softwareList]=\"list$ | async\"\n [deviceSoftwareChanges]=\"changes$ | async\"\n [deviceSoftwareChangesOperation]=\"changesOperation$ | async\"\n [deviceSoftwareChangesInProgress]=\"changesInProgress$ | async\"\n (changes)=\"addChanges($event)\"\n (showSoftwareChanges)=\"showSoftwareChanges = true\"\n ></c8y-installed-software>\n <c8y-device-software-changes\n class=\"bg-level-1 split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': showSoftwareChanges }\"\n [changes]=\"changes$ | async\"\n [changesInProgress]=\"changesInProgress$ | async\"\n (clear)=\"clearChanges()\"\n (drop)=\"dropChange($event)\"\n (apply)=\"applyChanges()\"\n (hideSoftwareChanges)=\"showSoftwareChanges = false\"\n ></c8y-device-software-changes>\n</div>\n", dependencies: [{ kind: "directive", type:
|
|
112
|
+
SoftwareDeviceTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SoftwareDeviceTabComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.RepositoryService }, { token: i3.InventoryService }, { token: i4.DeviceSoftwareService }, { token: i2.AdvancedSoftwareService }], target: i0.ɵɵFactoryTarget.Component });
|
|
113
|
+
SoftwareDeviceTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SoftwareDeviceTabComponent, selector: "c8y-software-device-tab", ngImport: i0, 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 split-view--7-5 m-b-0\">\n <c8y-installed-software\n class=\"split-view__list\"\n [device]=\"device$ | async\"\n [typesQuery]=\"typesQuery$ | async\"\n [softwareList]=\"list$ | async\"\n [deviceSoftwareChanges]=\"changes$ | async\"\n [deviceSoftwareChangesOperation]=\"changesOperation$ | async\"\n [deviceSoftwareChangesInProgress]=\"changesInProgress$ | async\"\n (changes)=\"addChanges($event)\"\n (showSoftwareChanges)=\"showSoftwareChanges = true\"\n ></c8y-installed-software>\n <c8y-device-software-changes\n class=\"bg-level-1 split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': showSoftwareChanges }\"\n [changes]=\"changes$ | async\"\n [changesInProgress]=\"changesInProgress$ | async\"\n (clear)=\"clearChanges()\"\n (drop)=\"dropChange($event)\"\n (apply)=\"applyChanges()\"\n (hideSoftwareChanges)=\"showSoftwareChanges = false\"\n ></c8y-device-software-changes>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i6.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "directive", type: i6.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: i7.InstalledSoftwareComponent, selector: "c8y-installed-software", inputs: ["device", "softwareList", "deviceSoftwareChanges", "deviceSoftwareChangesOperation", "deviceSoftwareChangesInProgress", "typesQuery"], outputs: ["changes", "showSoftwareChanges"] }, { kind: "component", type: i8.DeviceSoftwareChangesComponent, selector: "c8y-device-software-changes", inputs: ["changes", "changesInProgress"], outputs: ["clear", "drop", "apply", "hideSoftwareChanges"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.C8yTranslatePipe, name: "translate" }] });
|
|
105
114
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SoftwareDeviceTabComponent, decorators: [{
|
|
106
115
|
type: Component,
|
|
107
116
|
args: [{ selector: 'c8y-software-device-tab', 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 split-view--7-5 m-b-0\">\n <c8y-installed-software\n class=\"split-view__list\"\n [device]=\"device$ | async\"\n [typesQuery]=\"typesQuery$ | async\"\n [softwareList]=\"list$ | async\"\n [deviceSoftwareChanges]=\"changes$ | async\"\n [deviceSoftwareChangesOperation]=\"changesOperation$ | async\"\n [deviceSoftwareChangesInProgress]=\"changesInProgress$ | async\"\n (changes)=\"addChanges($event)\"\n (showSoftwareChanges)=\"showSoftwareChanges = true\"\n ></c8y-installed-software>\n <c8y-device-software-changes\n class=\"bg-level-1 split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': showSoftwareChanges }\"\n [changes]=\"changes$ | async\"\n [changesInProgress]=\"changesInProgress$ | async\"\n (clear)=\"clearChanges()\"\n (drop)=\"dropChange($event)\"\n (apply)=\"applyChanges()\"\n (hideSoftwareChanges)=\"showSoftwareChanges = false\"\n ></c8y-device-software-changes>\n</div>\n" }]
|
|
108
|
-
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.RepositoryService }, { type: i3.InventoryService }, { type: i2.AdvancedSoftwareService }]; } });
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29mdHdhcmUtZGV2aWNlLXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9yZXBvc2l0b3J5L3NvZnR3YXJlL2RldmljZS10YWIvc29mdHdhcmUtZGV2aWNlLXRhYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9yZXBvc2l0b3J5L3NvZnR3YXJlL2RldmljZS10YWIvc29mdHdhcmUtZGV2aWNlLXRhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQWtCLGdCQUFnQixFQUFjLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1RixPQUFPLEVBQ0wsdUJBQXVCLEVBR3ZCLGlCQUFpQixFQUNqQixjQUFjLEVBQ2YsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQU16RSxNQUFNLE9BQU8sMEJBQTBCO0lBOEJyQyxZQUNVLEtBQXFCLEVBQ3JCLFVBQTZCLEVBQzdCLFNBQTJCLEVBQzNCLHVCQUFnRDtRQUhoRCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBakMxRCxhQUFRLEdBQW9CLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUMzRSxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQWlC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QkFBMEI7MkdBQTFCLDBCQUEwQiwrRENqQnZDLG12Q0E4QkE7MkZEYmEsMEJBQTBCO2tCQUp0QyxTQUFTOytCQUNFLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSwgSU9wZXJhdGlvbiwgT3BlcmF0aW9uU3RhdHVzIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQWR2YW5jZWRTb2Z0d2FyZVNlcnZpY2UsXG4gIERldmljZVNvZnR3YXJlLFxuICBEZXZpY2VTb2Z0d2FyZUNoYW5nZSxcbiAgUmVwb3NpdG9yeVNlcnZpY2UsXG4gIFJlcG9zaXRvcnlUeXBlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvcmVwb3NpdG9yeS9zaGFyZWQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsS2V5Q2hhbmdlZCwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1zb2Z0d2FyZS1kZXZpY2UtdGFiJyxcbiAgdGVtcGxhdGVVcmw6ICdzb2Z0d2FyZS1kZXZpY2UtdGFiLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBTb2Z0d2FyZURldmljZVRhYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGRldmljZUlkOiBzdHJpbmcgfCBudW1iZXIgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmVudC5kYXRhLmNvbnRleHREYXRhLmlkO1xuICBkZXZpY2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJTWFuYWdlZE9iamVjdD4odGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJlbnQuZGF0YS5jb250ZXh0RGF0YSk7XG4gIHR5cGVzUXVlcnkkOiBPYnNlcnZhYmxlPG9iamVjdD4gPSB0aGlzLmRldmljZSQucGlwZShcbiAgICBtYXAoZGV2aWNlID0+IHtcbiAgICAgIGNvbnN0IGRldmljZVR5cGVRdWVyeSA9IHRoaXMucmVwb3NpdG9yeS5nZXREZXZpY2VUeXBlUXVlcnkoUmVwb3NpdG9yeVR5cGUuU09GVFdBUkUsIGRldmljZSk7XG4gICAgICByZXR1cm4gdGhpcy5yZXBvc2l0b3J5LmdldFNvZnR3YXJlVHlwZVF1ZXJ5KGRldmljZSwgZGV2aWNlVHlwZVF1ZXJ5KTtcbiAgICB9KVxuICApO1xuICBsaXN0JDogT2JzZXJ2YWJsZTxEZXZpY2VTb2Z0d2FyZVtdPiA9IHRoaXMuZGV2aWNlJC5waXBlKFxuICAgIGRpc3RpbmN0VW50aWxLZXlDaGFuZ2VkKCdpZCcpLFxuICAgIHN3aXRjaE1hcChkZXZpY2UgPT5cbiAgICAgIHRoaXMuYWR2YW5jZWRTb2Z0d2FyZVNlcnZpY2VcbiAgICAgICAgLmlzQVNNQXZhaWxhYmxlKClcbiAgICAgICAgLnRoZW4oaXNBU01BdmFpbGFibGUgPT4gKHsgaXNBU01BdmFpbGFibGUsIGRldmljZSB9KSlcbiAgICApLFxuICAgIG1hcCgoeyBpc0FTTUF2YWlsYWJsZSwgZGV2aWNlIH0pID0+XG4gICAgICAvLyB3aXRoIEFTTSBhdmFpbGFibGUgc29mdHdhcmUgaXRlbXMgd2lsbCBiZSByZXRyaWV2ZWQgZGlyZWN0bHkgaW4gdGhlXG4gICAgICAvLyBkZXZpY2Utc29mdHdhcmUtbGlzdCBjb21wb25lbnRcbiAgICAgIGlzQVNNQXZhaWxhYmxlID8gdW5kZWZpbmVkIDogdGhpcy5yZXBvc2l0b3J5LmdldERldmljZVNvZnR3YXJlTGlzdChkZXZpY2UpXG4gICAgKVxuICApO1xuICBjaGFuZ2VzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGV2aWNlU29mdHdhcmVDaGFuZ2VbXT4oW10pO1xuICBjaGFuZ2VzT3BlcmF0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SU9wZXJhdGlvbj4obnVsbCk7XG4gIGNoYW5nZXNJblByb2dyZXNzJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuY2hhbmdlc09wZXJhdGlvbiQucGlwZShcbiAgICBtYXAob3BlcmF0aW9uID0+IHRoaXMuaXNJblByb2dyZXNzKG9wZXJhdGlvbikpXG4gICk7XG4gIHJlbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93U29mdHdhcmVDaGFuZ2VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZXBvc2l0b3J5OiBSZXBvc2l0b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGludmVudG9yeTogSW52ZW50b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGFkdmFuY2VkU29mdHdhcmVTZXJ2aWNlOiBBZHZhbmNlZFNvZnR3YXJlU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgYXdhaXQgdGhpcy5sb2FkRGV2aWNlKCk7XG4gICAgYXdhaXQgdGhpcy5sb2FkT3BlcmF0aW9uKCk7XG4gIH1cblxuICBhZGRDaGFuZ2VzKHJlcXVlc3RlZENoYW5nZXM6IERldmljZVNvZnR3YXJlQ2hhbmdlW10pIHtcbiAgICBsZXQgc3RhZ2VkQ2hhbmdlcyA9IFsuLi50aGlzLmNoYW5nZXMkLnZhbHVlXTtcbiAgICByZXF1ZXN0ZWRDaGFuZ2VzLmZvckVhY2gocmVxdWVzdGVkQ2hhbmdlID0+IHtcbiAgICAgIGNvbnN0IGFscmVhZHlTdGFnZWQgPSBzdGFnZWRDaGFuZ2VzLnNvbWUoc3RhZ2VkQ2hhbmdlID0+XG4gICAgICAgIHRoaXMuYXJlU2FtZUNoYW5nZXMoc3RhZ2VkQ2hhbmdlLCByZXF1ZXN0ZWRDaGFuZ2UpXG4gICAgICApO1xuICAgICAgaWYgKCFhbHJlYWR5U3RhZ2VkKSB7XG4gICAgICAgIHN0YWdlZENoYW5nZXMgPSBbLi4uc3RhZ2VkQ2hhbmdlcywgcmVxdWVzdGVkQ2hhbmdlXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmNoYW5nZXMkLm5leHQoc3RhZ2VkQ2hhbmdlcyk7XG4gIH1cblxuICBkcm9wQ2hhbmdlKGNoYW5nZVRvQmVEcm9wcGVkOiBEZXZpY2VTb2Z0d2FyZUNoYW5nZSkge1xuICAgIGxldCBzdGFnZWRDaGFuZ2VzID0gWy4uLnRoaXMuY2hhbmdlcyQudmFsdWVdO1xuICAgIHN0YWdlZENoYW5nZXMgPSBzdGFnZWRDaGFuZ2VzLmZpbHRlcihcbiAgICAgIHN0YWdlZENoYW5nZSA9PiAhdGhpcy5hcmVTYW1lQ2hhbmdlcyhzdGFnZWRDaGFuZ2UsIGNoYW5nZVRvQmVEcm9wcGVkKVxuICAgICk7XG4gICAgdGhpcy5jaGFuZ2VzJC5uZXh0KHN0YWdlZENoYW5nZXMpO1xuICB9XG5cbiAgYXJlU2FtZUNoYW5nZXMoY2hhbmdlMTogRGV2aWNlU29mdHdhcmVDaGFuZ2UsIGNoYW5nZTI6IERldmljZVNvZnR3YXJlQ2hhbmdlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGNoYW5nZTEubmFtZSA9PT0gY2hhbmdlMi5uYW1lICYmXG4gICAgICBjaGFuZ2UxLnZlcnNpb24gPT09IGNoYW5nZTIudmVyc2lvbiAmJlxuICAgICAgY2hhbmdlMS5hY3Rpb24gPT09IGNoYW5nZTIuYWN0aW9uXG4gICAgKTtcbiAgfVxuXG4gIGNsZWFyQ2hhbmdlcygpIHtcbiAgICB0aGlzLmNoYW5nZXMkLm5leHQoW10pO1xuICB9XG5cbiAgYXN5bmMgbG9hZERldmljZSgpIHtcbiAgICB0aGlzLnJlbG9hZGluZyA9IHRydWU7XG4gICAgY29uc3QgZGV2aWNlID0gKGF3YWl0IHRoaXMuaW52ZW50b3J5LmRldGFpbCh0aGlzLmRldmljZUlkLCB7IHdpdGhDaGlsZHJlbjogZmFsc2UgfSkpLmRhdGE7XG4gICAgdGhpcy5kZXZpY2UkLm5leHQoZGV2aWNlKTtcbiAgICB0aGlzLnJlbG9hZGluZyA9IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgYXBwbHlDaGFuZ2VzKCkge1xuICAgIGNvbnN0IG9wZXJhdGlvbiA9IGF3YWl0IHRoaXMucmVwb3NpdG9yeS5jcmVhdGVTb2Z0d2FyZVVwZGF0ZU9wZXJhdGlvbihcbiAgICAgIHRoaXMuZGV2aWNlJC52YWx1ZSxcbiAgICAgIHRoaXMuY2hhbmdlcyQudmFsdWVcbiAgICApO1xuICAgIGF3YWl0IHRoaXMudHJhY2tPcGVyYXRpb24ob3BlcmF0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZE9wZXJhdGlvbigpIHtcbiAgICBjb25zdCBvcGVyYXRpb24gPSBhd2FpdCB0aGlzLnJlcG9zaXRvcnkuZ2V0TGFzdFNvZnR3YXJlVXBkYXRlT3BlcmF0aW9uKHRoaXMuZGV2aWNlSWQpO1xuICAgIGF3YWl0IHRoaXMudHJhY2tPcGVyYXRpb24ob3BlcmF0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdHJhY2tPcGVyYXRpb24ob3BlcmF0aW9uOiBJT3BlcmF0aW9uKSB7XG4gICAgdGhpcy5jaGFuZ2VzT3BlcmF0aW9uJC5uZXh0KG9wZXJhdGlvbik7XG5cbiAgICBpZiAodGhpcy5pc0luUHJvZ3Jlc3Mob3BlcmF0aW9uKSkge1xuICAgICAgYXdhaXQgdGhpcy5kaXNwbGF5Q2hhbmdlc0Zyb21PcGVyYXRpb24ob3BlcmF0aW9uKTtcbiAgICAgIHRoaXMucmVwb3NpdG9yeS5vYnNlcnZlT3BlcmF0aW9uKG9wZXJhdGlvbikuc3Vic2NyaWJlKFxuICAgICAgICBvcGVyYXRpb25VcGRhdGUgPT4ge1xuICAgICAgICAgIHRoaXMuY2hhbmdlc09wZXJhdGlvbiQubmV4dChvcGVyYXRpb25VcGRhdGUpO1xuICAgICAgICAgIGlmIChvcGVyYXRpb25VcGRhdGUuc3RhdHVzID09PSBPcGVyYXRpb25TdGF0dXMuU1VDQ0VTU0ZVTCkge1xuICAgICAgICAgICAgdGhpcy5jbGVhckNoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMubG9hZERldmljZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb3BlcmF0aW9uVXBkYXRlID0+IHtcbiAgICAgICAgICB0aGlzLmNoYW5nZXNPcGVyYXRpb24kLm5leHQob3BlcmF0aW9uVXBkYXRlKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGRpc3BsYXlDaGFuZ2VzRnJvbU9wZXJhdGlvbihvcGVyYXRpb246IElPcGVyYXRpb24pIHtcbiAgICBjb25zdCBjaGFuZ2VzID0gYXdhaXQgdGhpcy5yZXBvc2l0b3J5LmdldERldmljZVNvZnR3YXJlQ2hhbmdlc0Zyb21PcGVyYXRpb24oXG4gICAgICBvcGVyYXRpb24sXG4gICAgICB0aGlzLmRldmljZSQudmFsdWVcbiAgICApO1xuICAgIHRoaXMuY2hhbmdlcyQubmV4dChjaGFuZ2VzKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNJblByb2dyZXNzKG9wZXJhdGlvbjogSU9wZXJhdGlvbikge1xuICAgIHJldHVybiAoXG4gICAgICBvcGVyYXRpb24gJiYgW09wZXJhdGlvblN0YXR1cy5QRU5ESU5HLCBPcGVyYXRpb25TdGF0dXMuRVhFQ1VUSU5HXS5pbmNsdWRlcyhvcGVyYXRpb24uc3RhdHVzKVxuICAgICk7XG4gIH1cbn1cbiIsIjxjOHktYWN0aW9uLWJhci1pdGVtIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiPlxuICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCIgdGl0bGU9XCJ7eyAnUmVsb2FkJyB8IHRyYW5zbGF0ZSB9fVwiIChjbGljayk9XCJsb2FkRGV2aWNlKClcIj5cbiAgICA8aSBjOHlJY29uPVwicmVmcmVzaFwiIFtuZ0NsYXNzXT1cInsgJ2ljb24tc3Bpbic6IHJlbG9hZGluZyB9XCI+PC9pPlxuICAgIHt7ICdSZWxvYWQnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48ZGl2IGNsYXNzPVwiY2FyZCBzcGxpdC12aWV3LS03LTUgbS1iLTBcIj5cbiAgPGM4eS1pbnN0YWxsZWQtc29mdHdhcmVcbiAgICBjbGFzcz1cInNwbGl0LXZpZXdfX2xpc3RcIlxuICAgIFtkZXZpY2VdPVwiZGV2aWNlJCB8IGFzeW5jXCJcbiAgICBbdHlwZXNRdWVyeV09XCJ0eXBlc1F1ZXJ5JCB8IGFzeW5jXCJcbiAgICBbc29mdHdhcmVMaXN0XT1cImxpc3QkIHwgYXN5bmNcIlxuICAgIFtkZXZpY2VTb2Z0d2FyZUNoYW5nZXNdPVwiY2hhbmdlcyQgfCBhc3luY1wiXG4gICAgW2RldmljZVNvZnR3YXJlQ2hhbmdlc09wZXJhdGlvbl09XCJjaGFuZ2VzT3BlcmF0aW9uJCB8IGFzeW5jXCJcbiAgICBbZGV2aWNlU29mdHdhcmVDaGFuZ2VzSW5Qcm9ncmVzc109XCJjaGFuZ2VzSW5Qcm9ncmVzcyQgfCBhc3luY1wiXG4gICAgKGNoYW5nZXMpPVwiYWRkQ2hhbmdlcygkZXZlbnQpXCJcbiAgICAoc2hvd1NvZnR3YXJlQ2hhbmdlcyk9XCJzaG93U29mdHdhcmVDaGFuZ2VzID0gdHJ1ZVwiXG4gID48L2M4eS1pbnN0YWxsZWQtc29mdHdhcmU+XG4gIDxjOHktZGV2aWNlLXNvZnR3YXJlLWNoYW5nZXNcbiAgICBjbGFzcz1cImJnLWxldmVsLTEgc3BsaXQtdmlld19fZGV0YWlsXCJcbiAgICBbbmdDbGFzc109XCJ7ICdzcGxpdC12aWV3X19kZXRhaWwtLXNlbGVjdGVkJzogc2hvd1NvZnR3YXJlQ2hhbmdlcyB9XCJcbiAgICBbY2hhbmdlc109XCJjaGFuZ2VzJCB8IGFzeW5jXCJcbiAgICBbY2hhbmdlc0luUHJvZ3Jlc3NdPVwiY2hhbmdlc0luUHJvZ3Jlc3MkIHwgYXN5bmNcIlxuICAgIChjbGVhcik9XCJjbGVhckNoYW5nZXMoKVwiXG4gICAgKGRyb3ApPVwiZHJvcENoYW5nZSgkZXZlbnQpXCJcbiAgICAoYXBwbHkpPVwiYXBwbHlDaGFuZ2VzKClcIlxuICAgIChoaWRlU29mdHdhcmVDaGFuZ2VzKT1cInNob3dTb2Z0d2FyZUNoYW5nZXMgPSBmYWxzZVwiXG4gID48L2M4eS1kZXZpY2Utc29mdHdhcmUtY2hhbmdlcz5cbjwvZGl2PlxuIl19
|
|
117
|
+
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.RepositoryService }, { type: i3.InventoryService }, { type: i4.DeviceSoftwareService }, { type: i2.AdvancedSoftwareService }]; } });
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29mdHdhcmUtZGV2aWNlLXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9yZXBvc2l0b3J5L3NvZnR3YXJlL2RldmljZS10YWIvc29mdHdhcmUtZGV2aWNlLXRhYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9yZXBvc2l0b3J5L3NvZnR3YXJlL2RldmljZS10YWIvc29mdHdhcmUtZGV2aWNlLXRhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQWtCLGdCQUFnQixFQUFjLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1RixPQUFPLEVBQ0wsdUJBQXVCLEVBR3ZCLGlCQUFpQixFQUNqQixjQUFjLEVBQ2YsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7OztBQU1sRSxNQUFNLE9BQU8sMEJBQTBCO0lBNkJyQyxZQUNVLEtBQXFCLEVBQ3JCLFVBQTZCLEVBQzdCLFNBQTJCLEVBQzNCLHFCQUE0QyxFQUM1Qyx1QkFBZ0Q7UUFKaEQsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFDN0IsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1Qyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBakMxRCxhQUFRLEdBQW9CLElB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Q0FBQztZQUMvQyxDQUFDLENBQ0YsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxTQUFxQjtRQUM3RCxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMscUNBQXFDLENBQ3pFLFNBQVMsRUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FDbkIsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFTyxZQUFZLENBQUMsU0FBcUI7UUFDeEMsT0FBTyxDQUNMLFNBQVMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQzdGLENBQUM7SUFDSixDQUFDOzt1SEF4SVUsMEJBQTBCOzJHQUExQiwwQkFBMEIsK0RDbEJ2QyxtdkNBOEJBOzJGRFphLDBCQUEwQjtrQkFKdEMsU0FBUzsrQkFDRSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QsIEludmVudG9yeVNlcnZpY2UsIElPcGVyYXRpb24sIE9wZXJhdGlvblN0YXR1cyB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFkdmFuY2VkU29mdHdhcmVTZXJ2aWNlLFxuICBEZXZpY2VTb2Z0d2FyZSxcbiAgRGV2aWNlU29mdHdhcmVDaGFuZ2UsXG4gIFJlcG9zaXRvcnlTZXJ2aWNlLFxuICBSZXBvc2l0b3J5VHlwZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL3JlcG9zaXRvcnkvc2hhcmVkJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERldmljZVNvZnR3YXJlU2VydmljZSB9IGZyb20gJy4vZGV2aWNlLXNvZnR3YXJlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktc29mdHdhcmUtZGV2aWNlLXRhYicsXG4gIHRlbXBsYXRlVXJsOiAnc29mdHdhcmUtZGV2aWNlLXRhYi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU29mdHdhcmVEZXZpY2VUYWJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBkZXZpY2VJZDogc3RyaW5nIHwgbnVtYmVyID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJlbnQuZGF0YS5jb250ZXh0RGF0YS5pZDtcbiAgZGV2aWNlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SU1hbmFnZWRPYmplY3Q+KHRoaXMucm91dGUuc25hcHNob3QucGFyZW50LmRhdGEuY29udGV4dERhdGEpO1xuICB0eXBlc1F1ZXJ5JDogT2JzZXJ2YWJsZTxvYmplY3Q+ID0gdGhpcy5kZXZpY2UkLnBpcGUoXG4gICAgbWFwKGRldmljZSA9PiB7XG4gICAgICBjb25zdCBkZXZpY2VUeXBlUXVlcnkgPSB0aGlzLnJlcG9zaXRvcnkuZ2V0RGV2aWNlVHlwZVF1ZXJ5KFJlcG9zaXRvcnlUeXBlLlNPRlRXQVJFLCBkZXZpY2UpO1xuICAgICAgcmV0dXJuIHRoaXMucmVwb3NpdG9yeS5nZXRTb2Z0d2FyZVR5cGVRdWVyeShkZXZpY2UsIGRldmljZVR5cGVRdWVyeSk7XG4gICAgfSlcbiAgKTtcbiAgbGlzdCQ6IE9ic2VydmFibGU8RGV2aWNlU29mdHdhcmVbXT4gPSB0aGlzLmRldmljZSQucGlwZShcbiAgICBzd2l0Y2hNYXAoZGV2aWNlID0+XG4gICAgICB0aGlzLmFkdmFuY2VkU29mdHdhcmVTZXJ2aWNlXG4gICAgICAgIC5pc0FTTUF2YWlsYWJsZSgpXG4gICAgICAgIC50aGVuKGlzQVNNQXZhaWxhYmxlID0+ICh7IGlzQVNNQXZhaWxhYmxlLCBkZXZpY2UgfSkpXG4gICAgKSxcbiAgICBtYXAoKHsgaXNBU01BdmFpbGFibGUsIGRldmljZSB9KSA9PlxuICAgICAgLy8gd2l0aCBBU00gYXZhaWxhYmxlIHNvZnR3YXJlIGl0ZW1zIHdpbGwgYmUgcmV0cmlldmVkIGRpcmVjdGx5IGluIHRoZVxuICAgICAgLy8gZGV2aWNlLXNvZnR3YXJlLWxpc3QgY29tcG9uZW50XG4gICAgICBpc0FTTUF2YWlsYWJsZSA/IHVuZGVmaW5lZCA6IHRoaXMucmVwb3NpdG9yeS5nZXREZXZpY2VTb2Z0d2FyZUxpc3QoZGV2aWNlKVxuICAgIClcbiAgKTtcbiAgY2hhbmdlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERldmljZVNvZnR3YXJlQ2hhbmdlW10+KFtdKTtcbiAgY2hhbmdlc09wZXJhdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElPcGVyYXRpb24+KG51bGwpO1xuICBjaGFuZ2VzSW5Qcm9ncmVzcyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmNoYW5nZXNPcGVyYXRpb24kLnBpcGUoXG4gICAgbWFwKG9wZXJhdGlvbiA9PiB0aGlzLmlzSW5Qcm9ncmVzcyhvcGVyYXRpb24pKVxuICApO1xuICByZWxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd1NvZnR3YXJlQ2hhbmdlczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVwb3NpdG9yeTogUmVwb3NpdG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkZXZpY2VTb2Z0d2FyZVNlcnZpY2U6IERldmljZVNvZnR3YXJlU2VydmljZSxcbiAgICBwcml2YXRlIGFkdmFuY2VkU29mdHdhcmVTZXJ2aWNlOiBBZHZhbmNlZFNvZnR3YXJlU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgYXdhaXQgdGhpcy5sb2FkRGV2aWNlKCk7XG4gICAgYXdhaXQgdGhpcy5sb2FkT3BlcmF0aW9uKCk7XG4gIH1cblxuICBhZGRDaGFuZ2VzKHJlcXVlc3RlZENoYW5nZXM6IERldmljZVNvZnR3YXJlQ2hhbmdlW10pIHtcbiAgICBsZXQgc3RhZ2VkQ2hhbmdlcyA9IFsuLi50aGlzLmNoYW5nZXMkLnZhbHVlXTtcbiAgICByZXF1ZXN0ZWRDaGFuZ2VzLmZvckVhY2gocmVxdWVzdGVkQ2hhbmdlID0+IHtcbiAgICAgIGNvbnN0IGFscmVhZHlTdGFnZWQgPSBzdGFnZWRDaGFuZ2VzLnNvbWUoc3RhZ2VkQ2hhbmdlID0+XG4gICAgICAgIHRoaXMuYXJlU2FtZUNoYW5nZXMoc3RhZ2VkQ2hhbmdlLCByZXF1ZXN0ZWRDaGFuZ2UpXG4gICAgICApO1xuICAgICAgaWYgKCFhbHJlYWR5U3RhZ2VkKSB7XG4gICAgICAgIHN0YWdlZENoYW5nZXMgPSBbLi4uc3RhZ2VkQ2hhbmdlcywgcmVxdWVzdGVkQ2hhbmdlXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmNoYW5nZXMkLm5leHQoc3RhZ2VkQ2hhbmdlcyk7XG4gIH1cblxuICBkcm9wQ2hhbmdlKGNoYW5nZVRvQmVEcm9wcGVkOiBEZXZpY2VTb2Z0d2FyZUNoYW5nZSkge1xuICAgIGxldCBzdGFnZWRDaGFuZ2VzID0gWy4uLnRoaXMuY2hhbmdlcyQudmFsdWVdO1xuICAgIHN0YWdlZENoYW5nZXMgPSBzdGFnZWRDaGFuZ2VzLmZpbHRlcihcbiAgICAgIHN0YWdlZENoYW5nZSA9PiAhdGhpcy5hcmVTYW1lQ2hhbmdlcyhzdGFnZWRDaGFuZ2UsIGNoYW5nZVRvQmVEcm9wcGVkKVxuICAgICk7XG4gICAgdGhpcy5jaGFuZ2VzJC5uZXh0KHN0YWdlZENoYW5nZXMpO1xuICB9XG5cbiAgYXJlU2FtZUNoYW5nZXMoY2hhbmdlMTogRGV2aWNlU29mdHdhcmVDaGFuZ2UsIGNoYW5nZTI6IERldmljZVNvZnR3YXJlQ2hhbmdlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGNoYW5nZTEubmFtZSA9PT0gY2hhbmdlMi5uYW1lICYmXG4gICAgICBjaGFuZ2UxLnZlcnNpb24gPT09IGNoYW5nZTIudmVyc2lvbiAmJlxuICAgICAgY2hhbmdlMS5hY3Rpb24gPT09IGNoYW5nZTIuYWN0aW9uXG4gICAgKTtcbiAgfVxuXG4gIGNsZWFyQ2hhbmdlcygpIHtcbiAgICB0aGlzLmNoYW5nZXMkLm5leHQoW10pO1xuICB9XG5cbiAgYXN5bmMgbG9hZERldmljZSgpIHtcbiAgICB0aGlzLnJlbG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5kZXZpY2VTb2Z0d2FyZVNlcnZpY2UucmVsb2FkKCk7XG4gICAgY29uc3QgZGV2aWNlID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgdGhpcy5kZXZpY2VTb2Z0d2FyZVNlcnZpY2UubG9hZGluZyRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKGxvYWRpbmcgPT4gIWxvYWRpbmcpLFxuICAgICAgICAgIHRha2UoMSlcbiAgICAgICAgKVxuICAgICAgICAudG9Qcm9taXNlKCksXG4gICAgICB0aGlzLmludmVudG9yeS5kZXRhaWwodGhpcy5kZXZpY2VJZCwgeyB3aXRoQ2hpbGRyZW46IGZhbHNlIH0pLnRoZW4ocmVzdWx0ID0+IHJlc3VsdC5kYXRhKVxuICAgIF0pLnRoZW4oKFtfLCBkZXZpY2VdKSA9PiBkZXZpY2UpO1xuICAgIHRoaXMuZGV2aWNlJC5uZXh0KGRldmljZSk7XG4gICAgdGhpcy5yZWxvYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIGFwcGx5Q2hhbmdlcygpIHtcbiAgICBjb25zdCBvcGVyYXRpb24gPSBhd2FpdCB0aGlzLnJlcG9zaXRvcnkuY3JlYXRlU29mdHdhcmVVcGRhdGVPcGVyYXRpb24oXG4gICAgICB0aGlzLmRldmljZSQudmFsdWUsXG4gICAgICB0aGlzLmNoYW5nZXMkLnZhbHVlXG4gICAgKTtcbiAgICBhd2FpdCB0aGlzLnRyYWNrT3BlcmF0aW9uKG9wZXJhdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRPcGVyYXRpb24oKSB7XG4gICAgY29uc3Qgb3BlcmF0aW9uID0gYXdhaXQgdGhpcy5yZXBvc2l0b3J5LmdldExhc3RTb2Z0d2FyZVVwZGF0ZU9wZXJhdGlvbih0aGlzLmRldmljZUlkKTtcbiAgICBhd2FpdCB0aGlzLnRyYWNrT3BlcmF0aW9uKG9wZXJhdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHRyYWNrT3BlcmF0aW9uKG9wZXJhdGlvbjogSU9wZXJhdGlvbikge1xuICAgIHRoaXMuY2hhbmdlc09wZXJhdGlvbiQubmV4dChvcGVyYXRpb24pO1xuXG4gICAgaWYgKHRoaXMuaXNJblByb2dyZXNzKG9wZXJhdGlvbikpIHtcbiAgICAgIGF3YWl0IHRoaXMuZGlzcGxheUNoYW5nZXNGcm9tT3BlcmF0aW9uKG9wZXJhdGlvbik7XG4gICAgICB0aGlzLnJlcG9zaXRvcnkub2JzZXJ2ZU9wZXJhdGlvbihvcGVyYXRpb24pLnN1YnNjcmliZShcbiAgICAgICAgb3BlcmF0aW9uVXBkYXRlID0+IHtcbiAgICAgICAgICB0aGlzLmNoYW5nZXNPcGVyYXRpb24kLm5leHQob3BlcmF0aW9uVXBkYXRlKTtcbiAgICAgICAgICBpZiAob3BlcmF0aW9uVXBkYXRlLnN0YXR1cyA9PT0gT3BlcmF0aW9uU3RhdHVzLlNVQ0NFU1NGVUwpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLmxvYWREZXZpY2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9wZXJhdGlvblVwZGF0ZSA9PiB7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VzT3BlcmF0aW9uJC5uZXh0KG9wZXJhdGlvblVwZGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBkaXNwbGF5Q2hhbmdlc0Zyb21PcGVyYXRpb24ob3BlcmF0aW9uOiBJT3BlcmF0aW9uKSB7XG4gICAgY29uc3QgY2hhbmdlcyA9IGF3YWl0IHRoaXMucmVwb3NpdG9yeS5nZXREZXZpY2VTb2Z0d2FyZUNoYW5nZXNGcm9tT3BlcmF0aW9uKFxuICAgICAgb3BlcmF0aW9uLFxuICAgICAgdGhpcy5kZXZpY2UkLnZhbHVlXG4gICAgKTtcbiAgICB0aGlzLmNoYW5nZXMkLm5leHQoY2hhbmdlcyk7XG4gIH1cblxuICBwcml2YXRlIGlzSW5Qcm9ncmVzcyhvcGVyYXRpb246IElPcGVyYXRpb24pIHtcbiAgICByZXR1cm4gKFxuICAgICAgb3BlcmF0aW9uICYmIFtPcGVyYXRpb25TdGF0dXMuUEVORElORywgT3BlcmF0aW9uU3RhdHVzLkVYRUNVVElOR10uaW5jbHVkZXMob3BlcmF0aW9uLnN0YXR1cylcbiAgICApO1xuICB9XG59XG4iLCI8Yzh5LWFjdGlvbi1iYXItaXRlbSBbcGxhY2VtZW50XT1cIidyaWdodCdcIj5cbiAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlua1wiIHRpdGxlPVwie3sgJ1JlbG9hZCcgfCB0cmFuc2xhdGUgfX1cIiAoY2xpY2spPVwibG9hZERldmljZSgpXCI+XG4gICAgPGkgYzh5SWNvbj1cInJlZnJlc2hcIiBbbmdDbGFzc109XCJ7ICdpY29uLXNwaW4nOiByZWxvYWRpbmcgfVwiPjwvaT5cbiAgICB7eyAnUmVsb2FkJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGRpdiBjbGFzcz1cImNhcmQgc3BsaXQtdmlldy0tNy01IG0tYi0wXCI+XG4gIDxjOHktaW5zdGFsbGVkLXNvZnR3YXJlXG4gICAgY2xhc3M9XCJzcGxpdC12aWV3X19saXN0XCJcbiAgICBbZGV2aWNlXT1cImRldmljZSQgfCBhc3luY1wiXG4gICAgW3R5cGVzUXVlcnldPVwidHlwZXNRdWVyeSQgfCBhc3luY1wiXG4gICAgW3NvZnR3YXJlTGlzdF09XCJsaXN0JCB8IGFzeW5jXCJcbiAgICBbZGV2aWNlU29mdHdhcmVDaGFuZ2VzXT1cImNoYW5nZXMkIHwgYXN5bmNcIlxuICAgIFtkZXZpY2VTb2Z0d2FyZUNoYW5nZXNPcGVyYXRpb25dPVwiY2hhbmdlc09wZXJhdGlvbiQgfCBhc3luY1wiXG4gICAgW2RldmljZVNvZnR3YXJlQ2hhbmdlc0luUHJvZ3Jlc3NdPVwiY2hhbmdlc0luUHJvZ3Jlc3MkIHwgYXN5bmNcIlxuICAgIChjaGFuZ2VzKT1cImFkZENoYW5nZXMoJGV2ZW50KVwiXG4gICAgKHNob3dTb2Z0d2FyZUNoYW5nZXMpPVwic2hvd1NvZnR3YXJlQ2hhbmdlcyA9IHRydWVcIlxuICA+PC9jOHktaW5zdGFsbGVkLXNvZnR3YXJlPlxuICA8Yzh5LWRldmljZS1zb2Z0d2FyZS1jaGFuZ2VzXG4gICAgY2xhc3M9XCJiZy1sZXZlbC0xIHNwbGl0LXZpZXdfX2RldGFpbFwiXG4gICAgW25nQ2xhc3NdPVwieyAnc3BsaXQtdmlld19fZGV0YWlsLS1zZWxlY3RlZCc6IHNob3dTb2Z0d2FyZUNoYW5nZXMgfVwiXG4gICAgW2NoYW5nZXNdPVwiY2hhbmdlcyQgfCBhc3luY1wiXG4gICAgW2NoYW5nZXNJblByb2dyZXNzXT1cImNoYW5nZXNJblByb2dyZXNzJCB8IGFzeW5jXCJcbiAgICAoY2xlYXIpPVwiY2xlYXJDaGFuZ2VzKClcIlxuICAgIChkcm9wKT1cImRyb3BDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKGFwcGx5KT1cImFwcGx5Q2hhbmdlcygpXCJcbiAgICAoaGlkZVNvZnR3YXJlQ2hhbmdlcyk9XCJzaG93U29mdHdhcmVDaGFuZ2VzID0gZmFsc2VcIlxuICA+PC9jOHktZGV2aWNlLXNvZnR3YXJlLWNoYW5nZXM+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -5,7 +5,7 @@ import * as i4 from '@c8y/ngx-components';
|
|
|
5
5
|
import { gettext, BaseColumn, getBasicInputArrayFormFieldConfig, TypeaheadComponent, memoize, Status, NavigatorNode, hookNavigator, hookRoute, CoreModule, FormsModule, ModalSelectionMode, ViewContext } from '@c8y/ngx-components';
|
|
6
6
|
import * as i2 from '@c8y/ngx-components/repository/shared';
|
|
7
7
|
import { PRODUCT_EXPERIENCE, RepositoryType, SoftwareTypeComponent, SharedRepositoryModule, RepositorySelectModalComponent } from '@c8y/ngx-components/repository/shared';
|
|
8
|
-
import { isUndefined, assign, get, cloneDeep, uniqBy, property,
|
|
8
|
+
import { isUndefined, assign, get, cloneDeep, uniqBy, property, set, filter, has } from 'lodash-es';
|
|
9
9
|
import { BehaviorSubject, from, NEVER, pipe, Observable, Subject, merge, of, combineLatest } from 'rxjs';
|
|
10
10
|
import { tap, debounceTime, distinctUntilChanged, switchMap, map, shareReplay, distinctUntilKeyChanged, withLatestFrom, takeUntil, take, share, mergeMap, filter as filter$1 } from 'rxjs/operators';
|
|
11
11
|
import * as i1 from 'ngx-bootstrap/modal';
|
|
@@ -775,9 +775,96 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
775
775
|
}]
|
|
776
776
|
}] });
|
|
777
777
|
|
|
778
|
-
class
|
|
778
|
+
class DeviceSoftwareService {
|
|
779
779
|
constructor(advancedSoftwareService) {
|
|
780
780
|
this.advancedSoftwareService = advancedSoftwareService;
|
|
781
|
+
this.reloadSubject$ = new BehaviorSubject(null);
|
|
782
|
+
this.loadingSubject$ = new Subject();
|
|
783
|
+
}
|
|
784
|
+
/**
|
|
785
|
+
* Indicates whether device software data is currently being loaded.
|
|
786
|
+
*/
|
|
787
|
+
get loading$() {
|
|
788
|
+
return this.loadingSubject$.asObservable().pipe(share());
|
|
789
|
+
}
|
|
790
|
+
/**
|
|
791
|
+
* Trigger device software data reload.
|
|
792
|
+
*/
|
|
793
|
+
reload() {
|
|
794
|
+
this.reloadSubject$.next();
|
|
795
|
+
}
|
|
796
|
+
/**
|
|
797
|
+
* Retrieves the software list that is installed on a given device.
|
|
798
|
+
*
|
|
799
|
+
* @param deviceId ID of the device to retrieve software data for
|
|
800
|
+
* @param filterCriteria Criteria that software items are filtered by.
|
|
801
|
+
* @param legacySoftwareList If provided no data will be fetched from backend. The provided software list
|
|
802
|
+
* will be filtered by the specified filter criteria.
|
|
803
|
+
*
|
|
804
|
+
* @returns The software items installed on the specified device filtered by the specified criteria.
|
|
805
|
+
*/
|
|
806
|
+
getSoftwareList(deviceId, filterCriteria, legacySoftwareList) {
|
|
807
|
+
this.loadingSubject$.next(true);
|
|
808
|
+
return this.reloadSubject$.pipe(switchMap(() => {
|
|
809
|
+
const softwareList$ = !!legacySoftwareList
|
|
810
|
+
? this.getLegacySoftwareList(legacySoftwareList, filterCriteria)
|
|
811
|
+
: this.getAdvancedSoftwareList(deviceId, filterCriteria);
|
|
812
|
+
return softwareList$.then(resultList => {
|
|
813
|
+
this.loadingSubject$.next(false);
|
|
814
|
+
return resultList;
|
|
815
|
+
});
|
|
816
|
+
}), share());
|
|
817
|
+
}
|
|
818
|
+
getAdvancedSoftwareList(deviceId, filterCriteria) {
|
|
819
|
+
const queryFilter = {
|
|
820
|
+
deviceId,
|
|
821
|
+
currentPage: 1,
|
|
822
|
+
pageSize: 50,
|
|
823
|
+
withTotalPages: true
|
|
824
|
+
};
|
|
825
|
+
if (filterCriteria === null || filterCriteria === void 0 ? void 0 : filterCriteria.name) {
|
|
826
|
+
set(queryFilter, 'name', `*${filterCriteria.name}*`);
|
|
827
|
+
}
|
|
828
|
+
if (filterCriteria === null || filterCriteria === void 0 ? void 0 : filterCriteria.softwareType) {
|
|
829
|
+
set(queryFilter, 'type', `${filterCriteria.softwareType}`);
|
|
830
|
+
}
|
|
831
|
+
return this.advancedSoftwareService.list(queryFilter);
|
|
832
|
+
}
|
|
833
|
+
getLegacySoftwareList(legacySoftwareList, filterCriteria) {
|
|
834
|
+
const data = filterCriteria
|
|
835
|
+
? legacySoftwareList.filter(item => {
|
|
836
|
+
var _a;
|
|
837
|
+
let match = true;
|
|
838
|
+
if (filterCriteria === null || filterCriteria === void 0 ? void 0 : filterCriteria.name) {
|
|
839
|
+
match = match && ((_a = item.name) === null || _a === void 0 ? void 0 : _a.includes(filterCriteria.name));
|
|
840
|
+
}
|
|
841
|
+
if (filterCriteria === null || filterCriteria === void 0 ? void 0 : filterCriteria.softwareType) {
|
|
842
|
+
match = match && item.softwareType === filterCriteria.softwareType;
|
|
843
|
+
}
|
|
844
|
+
return match;
|
|
845
|
+
})
|
|
846
|
+
: legacySoftwareList;
|
|
847
|
+
return Promise.resolve({
|
|
848
|
+
data,
|
|
849
|
+
res: null,
|
|
850
|
+
paging: {
|
|
851
|
+
totalPages: data.length
|
|
852
|
+
}
|
|
853
|
+
});
|
|
854
|
+
}
|
|
855
|
+
}
|
|
856
|
+
DeviceSoftwareService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DeviceSoftwareService, deps: [{ token: i2.AdvancedSoftwareService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
857
|
+
DeviceSoftwareService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DeviceSoftwareService, providedIn: 'root' });
|
|
858
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DeviceSoftwareService, decorators: [{
|
|
859
|
+
type: Injectable,
|
|
860
|
+
args: [{
|
|
861
|
+
providedIn: 'root'
|
|
862
|
+
}]
|
|
863
|
+
}], ctorParameters: function () { return [{ type: i2.AdvancedSoftwareService }]; } });
|
|
864
|
+
|
|
865
|
+
class DeviceSoftwareListComponent {
|
|
866
|
+
constructor(deviceSoftwareService) {
|
|
867
|
+
this.deviceSoftwareService = deviceSoftwareService;
|
|
781
868
|
this.PRODUCT_EXPERIENCE = PRODUCT_EXPERIENCE;
|
|
782
869
|
this.filterCriteria$ = of(null);
|
|
783
870
|
this.update = new EventEmitter();
|
|
@@ -787,6 +874,7 @@ class DeviceSoftwareListComponent {
|
|
|
787
874
|
this.supportsSoftwareOperations = false;
|
|
788
875
|
this.operationTypes = ['c8y_SoftwareUpdate', 'c8y_SoftwareList', 'c8y_Software'];
|
|
789
876
|
this.legacySoftwareList$ = new BehaviorSubject([]);
|
|
877
|
+
this.destroyed$ = new Subject();
|
|
790
878
|
}
|
|
791
879
|
set softwareList(softwareList) {
|
|
792
880
|
if (softwareList !== null) {
|
|
@@ -798,20 +886,15 @@ class DeviceSoftwareListComponent {
|
|
|
798
886
|
this.filterCriteria$.pipe(debounceTime(300), distinctUntilChanged()),
|
|
799
887
|
this.legacySoftwareList$
|
|
800
888
|
]).pipe(switchMap(([filterCriteria, legacySoftwareList]) => {
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
return this.getAdvancedSoftwareList(filterCriteria).then(resultList => ({
|
|
806
|
-
resultList,
|
|
807
|
-
filterCriteria
|
|
808
|
-
}));
|
|
809
|
-
}
|
|
889
|
+
var _a;
|
|
890
|
+
return this.deviceSoftwareService
|
|
891
|
+
.getSoftwareList((_a = this.device) === null || _a === void 0 ? void 0 : _a.id, filterCriteria, legacySoftwareList)
|
|
892
|
+
.pipe(map(resultList => ({ resultList, filterCriteria })));
|
|
810
893
|
}), tap(({ resultList, filterCriteria }) => {
|
|
811
894
|
var _a, _b;
|
|
812
895
|
this.notifyListEmpty(!((_a = resultList === null || resultList === void 0 ? void 0 : resultList.paging) === null || _a === void 0 ? void 0 : _a.totalPages) && !filterCriteria);
|
|
813
896
|
this.noSearchResults = !((_b = resultList === null || resultList === void 0 ? void 0 : resultList.paging) === null || _b === void 0 ? void 0 : _b.totalPages) && !!filterCriteria;
|
|
814
|
-
}), map(({ resultList }) => resultList), share());
|
|
897
|
+
}), map(({ resultList }) => resultList), share(), takeUntil(this.destroyed$));
|
|
815
898
|
const supportedOperations = get(this.device, 'c8y_SupportedOperations', []);
|
|
816
899
|
this.supportsSoftwareOperations = this.operationTypes.some(operationType => supportedOperations.indexOf(operationType) > -1);
|
|
817
900
|
}
|
|
@@ -823,54 +906,21 @@ class DeviceSoftwareListComponent {
|
|
|
823
906
|
const relevantChanges = filter(this.deviceSoftwareChanges, software);
|
|
824
907
|
return relevantChanges.length > 0;
|
|
825
908
|
}
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
currentPage: 1,
|
|
830
|
-
pageSize: 50,
|
|
831
|
-
withTotalPages: true
|
|
832
|
-
};
|
|
833
|
-
if (filterCriteria === null || filterCriteria === void 0 ? void 0 : filterCriteria.name) {
|
|
834
|
-
set(queryFilter, 'name', `*${filterCriteria.name}*`);
|
|
835
|
-
}
|
|
836
|
-
if (filterCriteria === null || filterCriteria === void 0 ? void 0 : filterCriteria.softwareType) {
|
|
837
|
-
set(queryFilter, 'type', `${filterCriteria.softwareType}`);
|
|
838
|
-
}
|
|
839
|
-
return this.advancedSoftwareService.list(queryFilter);
|
|
840
|
-
}
|
|
841
|
-
getLegacySoftwareList(filterCriteria) {
|
|
842
|
-
const data = filterCriteria
|
|
843
|
-
? this.legacySoftwareList$.value.filter(item => {
|
|
844
|
-
var _a;
|
|
845
|
-
let match = true;
|
|
846
|
-
if (filterCriteria === null || filterCriteria === void 0 ? void 0 : filterCriteria.name) {
|
|
847
|
-
match = match && ((_a = item.name) === null || _a === void 0 ? void 0 : _a.includes(filterCriteria.name));
|
|
848
|
-
}
|
|
849
|
-
if (filterCriteria === null || filterCriteria === void 0 ? void 0 : filterCriteria.softwareType) {
|
|
850
|
-
match = match && item.softwareType === filterCriteria.softwareType;
|
|
851
|
-
}
|
|
852
|
-
return match;
|
|
853
|
-
})
|
|
854
|
-
: this.legacySoftwareList$.value;
|
|
855
|
-
return {
|
|
856
|
-
data,
|
|
857
|
-
res: null,
|
|
858
|
-
paging: {
|
|
859
|
-
totalPages: data.length
|
|
860
|
-
}
|
|
861
|
-
};
|
|
909
|
+
ngOnDestroy() {
|
|
910
|
+
this.destroyed$.next();
|
|
911
|
+
this.destroyed$.complete();
|
|
862
912
|
}
|
|
863
913
|
notifyListEmpty(isEmpty) {
|
|
864
914
|
this.emptyList = isEmpty;
|
|
865
915
|
this.onListEmpty.emit(isEmpty);
|
|
866
916
|
}
|
|
867
917
|
}
|
|
868
|
-
DeviceSoftwareListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DeviceSoftwareListComponent, deps: [{ token:
|
|
918
|
+
DeviceSoftwareListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DeviceSoftwareListComponent, deps: [{ token: DeviceSoftwareService }], target: i0.ɵɵFactoryTarget.Component });
|
|
869
919
|
DeviceSoftwareListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DeviceSoftwareListComponent, selector: "c8y-device-software-list", inputs: { softwareList: "softwareList", device: "device", deviceSoftwareChanges: "deviceSoftwareChanges", filterCriteria$: "filterCriteria$" }, outputs: { update: "update", remove: "remove", onListEmpty: "onListEmpty" }, ngImport: i0, template: "<c8y-list-group class=\"no-border-2nd-last\">\n <c8y-li\n [ngClass]=\"{ disabled: isSoftwareGoingToBeChanged(software) }\"\n *c8yFor=\"let software of softwareItems$\"\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-9\">\n <p class=\"d-flex\">\n <!-- SOFTWARE NAME -->\n <span class=\"text-truncate\">\n {{ software.name }}\n </span>\n <!-- SOFTWARE TYPE-->\n <span class=\"text-truncate\">\n <span class=\"label label-primary m-l-8\">{{ software.softwareType }}</span>\n </span>\n </p>\n <!-- SOFTWARE VERSION -->\n <p class=\"d-flex a-i-center\">\n <span class=\"text-truncate text-label-small m-r-4\" translate>Version</span>\n <span class=\"text-truncate m-r-4\" title=\"{{ software.version }}\">\n {{ software.version }}\n </span>\n <i\n *ngIf=\"software.installed\"\n c8yIcon=\"warning\"\n class=\"text-warning a-s-center\"\n [tooltip]=\"\n alreadyInstalledMessage\n | translate: { name: software.name, version: software.version }\n \"\n container=\"body\"\n placement=\"top\"\n [delay]=\"500\"\n ></i>\n </p>\n </div>\n\n <div\n *ngIf=\"supportsSoftwareOperations && (showUpdate || showRemove)\"\n class=\"col-3 text-right m-0 flex-grow d-flex a-i-center\"\n >\n <!-- UPDATE SOFTWARE -->\n <button\n *ngIf=\"showUpdate && !isSoftwareGoingToBeChanged(software)\"\n class=\"btn btn-default btn-xs m-l-auto m-r-4\"\n (click)=\"update.emit(software)\"\n title=\"{{ 'Update`software,verb`' | translate }}\"\n type=\"button\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.SOFTWARE.EVENTS.DEVICE_TAB\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.SOFTWARE.COMPONENTS.DEVICE_SOFTWARE_LIST,\n action: PRODUCT_EXPERIENCE.SOFTWARE.ACTIONS.OPEN_UPDATE_SOFTWARE\n }\"\n >\n {{ 'Update`software,verb`' | translate }}\n </button>\n\n <!-- REMOVE SOFTWARE -->\n <button\n *ngIf=\"showRemove && !isSoftwareGoingToBeChanged(software)\"\n class=\"btn btn-dot btn-dot--danger m-l-4\"\n (click)=\"remove.emit(software)\"\n tooltip=\"{{ 'Remove`software,verb`' | translate }}\"\n [attr.aria-label]=\"'Remove`software,verb`' | translate\"\n placement=\"bottom\"\n container=\"body\"\n [delay]=\"500\"\n type=\"button\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.SOFTWARE.EVENTS.DEVICE_TAB\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.SOFTWARE.COMPONENTS.DEVICE_SOFTWARE_LIST,\n action: PRODUCT_EXPERIENCE.SOFTWARE.ACTIONS.DELETE_SOFTWARE\n }\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n</c8y-list-group>\n<!-- NO SEARCH RESULTS STATE -->\n<div class=\"card-block\" *ngIf=\"noSearchResults || emptyList\">\n <ng-content *ngIf=\"emptyList\" select=\".c8y-empty-state:not(.c8y-no-results-state)\"></ng-content>\n <ng-content *ngIf=\"noSearchResults\" select=\".c8y-no-results-state\"></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount"] }, { kind: "component", type: i4.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i4.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i4.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i4.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "directive", type: i4.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit"] }, { kind: "directive", type: i10.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: i4.C8yTranslatePipe, name: "translate" }] });
|
|
870
920
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DeviceSoftwareListComponent, decorators: [{
|
|
871
921
|
type: Component,
|
|
872
922
|
args: [{ selector: 'c8y-device-software-list', template: "<c8y-list-group class=\"no-border-2nd-last\">\n <c8y-li\n [ngClass]=\"{ disabled: isSoftwareGoingToBeChanged(software) }\"\n *c8yFor=\"let software of softwareItems$\"\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-9\">\n <p class=\"d-flex\">\n <!-- SOFTWARE NAME -->\n <span class=\"text-truncate\">\n {{ software.name }}\n </span>\n <!-- SOFTWARE TYPE-->\n <span class=\"text-truncate\">\n <span class=\"label label-primary m-l-8\">{{ software.softwareType }}</span>\n </span>\n </p>\n <!-- SOFTWARE VERSION -->\n <p class=\"d-flex a-i-center\">\n <span class=\"text-truncate text-label-small m-r-4\" translate>Version</span>\n <span class=\"text-truncate m-r-4\" title=\"{{ software.version }}\">\n {{ software.version }}\n </span>\n <i\n *ngIf=\"software.installed\"\n c8yIcon=\"warning\"\n class=\"text-warning a-s-center\"\n [tooltip]=\"\n alreadyInstalledMessage\n | translate: { name: software.name, version: software.version }\n \"\n container=\"body\"\n placement=\"top\"\n [delay]=\"500\"\n ></i>\n </p>\n </div>\n\n <div\n *ngIf=\"supportsSoftwareOperations && (showUpdate || showRemove)\"\n class=\"col-3 text-right m-0 flex-grow d-flex a-i-center\"\n >\n <!-- UPDATE SOFTWARE -->\n <button\n *ngIf=\"showUpdate && !isSoftwareGoingToBeChanged(software)\"\n class=\"btn btn-default btn-xs m-l-auto m-r-4\"\n (click)=\"update.emit(software)\"\n title=\"{{ 'Update`software,verb`' | translate }}\"\n type=\"button\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.SOFTWARE.EVENTS.DEVICE_TAB\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.SOFTWARE.COMPONENTS.DEVICE_SOFTWARE_LIST,\n action: PRODUCT_EXPERIENCE.SOFTWARE.ACTIONS.OPEN_UPDATE_SOFTWARE\n }\"\n >\n {{ 'Update`software,verb`' | translate }}\n </button>\n\n <!-- REMOVE SOFTWARE -->\n <button\n *ngIf=\"showRemove && !isSoftwareGoingToBeChanged(software)\"\n class=\"btn btn-dot btn-dot--danger m-l-4\"\n (click)=\"remove.emit(software)\"\n tooltip=\"{{ 'Remove`software,verb`' | translate }}\"\n [attr.aria-label]=\"'Remove`software,verb`' | translate\"\n placement=\"bottom\"\n container=\"body\"\n [delay]=\"500\"\n type=\"button\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.SOFTWARE.EVENTS.DEVICE_TAB\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.SOFTWARE.COMPONENTS.DEVICE_SOFTWARE_LIST,\n action: PRODUCT_EXPERIENCE.SOFTWARE.ACTIONS.DELETE_SOFTWARE\n }\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n</c8y-list-group>\n<!-- NO SEARCH RESULTS STATE -->\n<div class=\"card-block\" *ngIf=\"noSearchResults || emptyList\">\n <ng-content *ngIf=\"emptyList\" select=\".c8y-empty-state:not(.c8y-no-results-state)\"></ng-content>\n <ng-content *ngIf=\"noSearchResults\" select=\".c8y-no-results-state\"></ng-content>\n</div>\n" }]
|
|
873
|
-
}], ctorParameters: function () { return [{ type:
|
|
923
|
+
}], ctorParameters: function () { return [{ type: DeviceSoftwareService }]; }, propDecorators: { softwareList: [{
|
|
874
924
|
type: Input
|
|
875
925
|
}], device: [{
|
|
876
926
|
type: Input
|
|
@@ -1108,10 +1158,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
1108
1158
|
}] } });
|
|
1109
1159
|
|
|
1110
1160
|
class SoftwareDeviceTabComponent {
|
|
1111
|
-
constructor(route, repository, inventory, advancedSoftwareService) {
|
|
1161
|
+
constructor(route, repository, inventory, deviceSoftwareService, advancedSoftwareService) {
|
|
1112
1162
|
this.route = route;
|
|
1113
1163
|
this.repository = repository;
|
|
1114
1164
|
this.inventory = inventory;
|
|
1165
|
+
this.deviceSoftwareService = deviceSoftwareService;
|
|
1115
1166
|
this.advancedSoftwareService = advancedSoftwareService;
|
|
1116
1167
|
this.deviceId = this.route.snapshot.parent.data.contextData.id;
|
|
1117
1168
|
this.device$ = new BehaviorSubject(this.route.snapshot.parent.data.contextData);
|
|
@@ -1119,7 +1170,7 @@ class SoftwareDeviceTabComponent {
|
|
|
1119
1170
|
const deviceTypeQuery = this.repository.getDeviceTypeQuery(RepositoryType.SOFTWARE, device);
|
|
1120
1171
|
return this.repository.getSoftwareTypeQuery(device, deviceTypeQuery);
|
|
1121
1172
|
}));
|
|
1122
|
-
this.list$ = this.device$.pipe(
|
|
1173
|
+
this.list$ = this.device$.pipe(switchMap(device => this.advancedSoftwareService
|
|
1123
1174
|
.isASMAvailable()
|
|
1124
1175
|
.then(isASMAvailable => ({ isASMAvailable, device }))), map(({ isASMAvailable, device }) =>
|
|
1125
1176
|
// with ASM available software items will be retrieved directly in the
|
|
@@ -1163,7 +1214,13 @@ class SoftwareDeviceTabComponent {
|
|
|
1163
1214
|
loadDevice() {
|
|
1164
1215
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1165
1216
|
this.reloading = true;
|
|
1166
|
-
|
|
1217
|
+
this.deviceSoftwareService.reload();
|
|
1218
|
+
const device = yield Promise.all([
|
|
1219
|
+
this.deviceSoftwareService.loading$
|
|
1220
|
+
.pipe(filter$1(loading => !loading), take(1))
|
|
1221
|
+
.toPromise(),
|
|
1222
|
+
this.inventory.detail(this.deviceId, { withChildren: false }).then(result => result.data)
|
|
1223
|
+
]).then(([_, device]) => device);
|
|
1167
1224
|
this.device$.next(device);
|
|
1168
1225
|
this.reloading = false;
|
|
1169
1226
|
});
|
|
@@ -1207,12 +1264,12 @@ class SoftwareDeviceTabComponent {
|
|
|
1207
1264
|
return (operation && [OperationStatus.PENDING, OperationStatus.EXECUTING].includes(operation.status));
|
|
1208
1265
|
}
|
|
1209
1266
|
}
|
|
1210
|
-
SoftwareDeviceTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SoftwareDeviceTabComponent, deps: [{ token: i5$1.ActivatedRoute }, { token: i2.RepositoryService }, { token: i2$1.InventoryService }, { token: i2.AdvancedSoftwareService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1267
|
+
SoftwareDeviceTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SoftwareDeviceTabComponent, deps: [{ token: i5$1.ActivatedRoute }, { token: i2.RepositoryService }, { token: i2$1.InventoryService }, { token: DeviceSoftwareService }, { token: i2.AdvancedSoftwareService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1211
1268
|
SoftwareDeviceTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SoftwareDeviceTabComponent, selector: "c8y-software-device-tab", ngImport: i0, 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 split-view--7-5 m-b-0\">\n <c8y-installed-software\n class=\"split-view__list\"\n [device]=\"device$ | async\"\n [typesQuery]=\"typesQuery$ | async\"\n [softwareList]=\"list$ | async\"\n [deviceSoftwareChanges]=\"changes$ | async\"\n [deviceSoftwareChangesOperation]=\"changesOperation$ | async\"\n [deviceSoftwareChangesInProgress]=\"changesInProgress$ | async\"\n (changes)=\"addChanges($event)\"\n (showSoftwareChanges)=\"showSoftwareChanges = true\"\n ></c8y-installed-software>\n <c8y-device-software-changes\n class=\"bg-level-1 split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': showSoftwareChanges }\"\n [changes]=\"changes$ | async\"\n [changesInProgress]=\"changesInProgress$ | async\"\n (clear)=\"clearChanges()\"\n (drop)=\"dropChange($event)\"\n (apply)=\"applyChanges()\"\n (hideSoftwareChanges)=\"showSoftwareChanges = false\"\n ></c8y-device-software-changes>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i4.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: InstalledSoftwareComponent, selector: "c8y-installed-software", inputs: ["device", "softwareList", "deviceSoftwareChanges", "deviceSoftwareChangesOperation", "deviceSoftwareChangesInProgress", "typesQuery"], outputs: ["changes", "showSoftwareChanges"] }, { kind: "component", type: DeviceSoftwareChangesComponent, selector: "c8y-device-software-changes", inputs: ["changes", "changesInProgress"], outputs: ["clear", "drop", "apply", "hideSoftwareChanges"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.C8yTranslatePipe, name: "translate" }] });
|
|
1212
1269
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SoftwareDeviceTabComponent, decorators: [{
|
|
1213
1270
|
type: Component,
|
|
1214
1271
|
args: [{ selector: 'c8y-software-device-tab', 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 split-view--7-5 m-b-0\">\n <c8y-installed-software\n class=\"split-view__list\"\n [device]=\"device$ | async\"\n [typesQuery]=\"typesQuery$ | async\"\n [softwareList]=\"list$ | async\"\n [deviceSoftwareChanges]=\"changes$ | async\"\n [deviceSoftwareChangesOperation]=\"changesOperation$ | async\"\n [deviceSoftwareChangesInProgress]=\"changesInProgress$ | async\"\n (changes)=\"addChanges($event)\"\n (showSoftwareChanges)=\"showSoftwareChanges = true\"\n ></c8y-installed-software>\n <c8y-device-software-changes\n class=\"bg-level-1 split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': showSoftwareChanges }\"\n [changes]=\"changes$ | async\"\n [changesInProgress]=\"changesInProgress$ | async\"\n (clear)=\"clearChanges()\"\n (drop)=\"dropChange($event)\"\n (apply)=\"applyChanges()\"\n (hideSoftwareChanges)=\"showSoftwareChanges = false\"\n ></c8y-device-software-changes>\n</div>\n" }]
|
|
1215
|
-
}], ctorParameters: function () { return [{ type: i5$1.ActivatedRoute }, { type: i2.RepositoryService }, { type: i2$1.InventoryService }, { type: i2.AdvancedSoftwareService }]; } });
|
|
1272
|
+
}], ctorParameters: function () { return [{ type: i5$1.ActivatedRoute }, { type: i2.RepositoryService }, { type: i2$1.InventoryService }, { type: DeviceSoftwareService }, { type: i2.AdvancedSoftwareService }]; } });
|
|
1216
1273
|
|
|
1217
1274
|
class SoftwareDeviceTabGuard {
|
|
1218
1275
|
constructor() {
|
|
@@ -1312,5 +1369,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
1312
1369
|
* Generated bundle index. Do not edit.
|
|
1313
1370
|
*/
|
|
1314
1371
|
|
|
1315
|
-
export { AddSoftwareModalComponent, DeviceSoftwareChangesComponent, DeviceSoftwareListComponent, InstalledSoftwareComponent, SoftwareDetailsComponent, SoftwareDeviceTabComponent, SoftwareDeviceTabGuard, SoftwareListComponent, SoftwareRepositoryDeviceTabModule, SoftwareRepositoryListModule, SoftwareRepositoryModule };
|
|
1372
|
+
export { AddSoftwareModalComponent, DeviceSoftwareChangesComponent, DeviceSoftwareListComponent, DeviceSoftwareService, InstalledSoftwareComponent, SoftwareDetailsComponent, SoftwareDeviceTabComponent, SoftwareDeviceTabGuard, SoftwareListComponent, SoftwareRepositoryDeviceTabModule, SoftwareRepositoryListModule, SoftwareRepositoryModule };
|
|
1316
1373
|
//# sourceMappingURL=c8y-ngx-components-repository-software.mjs.map
|