@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
94 lines • 12.2 kB
JavaScript
import { Injectable } from '@angular/core';
import { ServiceRegistry } from '@c8y/ngx-components';
import { head, set } from 'lodash-es';
import { BehaviorSubject, Subject } from 'rxjs';
import { share, switchMap } from 'rxjs/operators';
import * as i0 from "@angular/core";
import * as i1 from "@c8y/ngx-components";
export class DeviceSoftwareService {
/**
* Indicates whether device software data is currently being loaded.
*/
get loading$() {
return this.loadingSubject$.asObservable().pipe(share());
}
constructor(serviceRegistry) {
this.serviceRegistry = serviceRegistry;
this.reloadSubject$ = new BehaviorSubject(null);
this.loadingSubject$ = new Subject();
}
/**
* Trigger device software data reload.
*/
reload() {
this.reloadSubject$.next();
}
/**
* Retrieves the software list that is installed on a given device.
*
* @param deviceId ID of the device to retrieve software data for
* @param filterCriteria Criteria that software items are filtered by.
* @param legacySoftwareList If provided no data will be fetched from backend. The provided software list
* will be filtered by the specified filter criteria.
*
* @returns The software items installed on the specified device filtered by the specified criteria.
*/
getSoftwareList(deviceId, filterCriteria, legacySoftwareList) {
this.loadingSubject$.next(true);
return this.reloadSubject$.pipe(switchMap(() => {
const softwareList$ = !!legacySoftwareList
? this.getLegacySoftwareList(legacySoftwareList, filterCriteria)
: this.getAdvancedSoftwareList(deviceId, filterCriteria);
return softwareList$.then(resultList => {
this.loadingSubject$.next(false);
return resultList;
});
}), share());
}
getAdvancedSoftwareList(deviceId, filterCriteria) {
const queryFilter = {
deviceId,
currentPage: 1,
pageSize: 50,
withTotalPages: true
};
const advancedSoftwareService = head(this.serviceRegistry.get('asm'));
if (filterCriteria?.name) {
set(queryFilter, 'name', `*${filterCriteria.name}*`);
}
if (filterCriteria?.softwareType) {
set(queryFilter, 'type', `${filterCriteria.softwareType}`);
}
return advancedSoftwareService.list(queryFilter);
}
getLegacySoftwareList(legacySoftwareList, filterCriteria) {
const data = filterCriteria
? legacySoftwareList.filter(item => {
let match = true;
if (filterCriteria?.name) {
match = match && item.name?.includes(filterCriteria.name);
}
if (filterCriteria?.softwareType) {
match = match && item.softwareType === filterCriteria.softwareType;
}
return match;
})
: legacySoftwareList;
return Promise.resolve({
data,
res: null,
paging: {
totalPages: data.length
}
});
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeviceSoftwareService, deps: [{ token: i1.ServiceRegistry }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeviceSoftwareService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeviceSoftwareService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: () => [{ type: i1.ServiceRegistry }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXNvZnR3YXJlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9yZXBvc2l0b3J5L3NvZnR3YXJlL2RldmljZS10YWIvZGV2aWNlLXNvZnR3YXJlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFNdEQsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBS2xELE1BQU0sT0FBTyxxQkFBcUI7SUFDaEM7O09BRUc7SUFDSCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUtELFlBQW9CLGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUg1QyxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFPLElBQUksQ0FBQyxDQUFDO1FBQ2pELG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQUVNLENBQUM7SUFFeEQ7O09BRUc7SUFDSCxNQUFNO1FBQ0osSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsZUFBZSxDQUNiLFFBQVEsRUFDUixjQUE4QixFQUM5QixrQkFBcUM7UUFFckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFaEMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDN0IsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNiLE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBQyxrQkFBa0I7Z0JBQ3hDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsa0JBQWtCLEVBQUUsY0FBYyxDQUFDO2dCQUNoRSxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUMzRCxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqQyxPQUFPLFVBQVUsQ0FBQztZQUNwQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxFQUNGLEtBQUssRUFBRSxDQUNSLENBQUM7SUFDSixDQUFDO0lBRU8sdUJBQXVCLENBQzdCLFFBQVEsRUFDUixjQUE4QjtRQUU5QixNQUFNLFdBQVcsR0FBRztZQUNsQixRQUFRO1lBQ1IsV0FBVyxFQUFFLENBQUM7WUFDZCxRQUFRLEVBQUUsRUFBRTtZQUNaLGNBQWMsRUFBRSxJQUFJO1NBQ3JCLENBQUM7UUFDRixNQUFNLHVCQUF1QixHQUE2QixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNoRyxJQUFJLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUN6QixHQUFHLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLGNBQWMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFDRCxJQUFJLGNBQWMsRUFBRSxZQUFZLEVBQUUsQ0FBQztZQUNqQyxHQUFHLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxHQUFHLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFDRCxPQUFPLHVCQUF1QixDQUFDLElBQUksQ0FBQyxXQUFXLENBRTlDLENBQUM7SUFDSixDQUFDO0lBRU8scUJBQXFCLENBQzNCLGtCQUFvQyxFQUNwQyxjQUE4QjtRQUU5QixNQUFNLElBQUksR0FBRyxjQUFjO1lBQ3pCLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQy9CLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztnQkFDakIsSUFBSSxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUM7b0JBQ3pCLEtBQUssR0FBRyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM1RCxDQUFDO2dCQUNELElBQUksY0FBYyxFQUFFLFlBQVksRUFBRSxDQUFDO29CQUNqQyxLQUFLLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssY0FBYyxDQUFDLFlBQVksQ0FBQztnQkFDckUsQ0FBQztnQkFFRCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUMsQ0FBQztZQUNKLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztRQUN2QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDckIsSUFBSTtZQUNKLEdBQUcsRUFBRSxJQUFJO1lBQ1QsTUFBTSxFQUFFO2dCQUNOLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTTthQUNFO1NBQzVCLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBakdVLHFCQUFxQjttSEFBckIscUJBQXFCLGNBRnBCLE1BQU07OzRGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJUmVzdWx0TGlzdCwgUGFnaW5nIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgU2VydmljZVJlZ2lzdHJ5IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBEZXZpY2VTb2Z0d2FyZSxcbiAgRmlsdGVyQ3JpdGVyaWEsXG4gIElBZHZhbmNlZFNvZnR3YXJlU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL3JlcG9zaXRvcnkvc2hhcmVkJztcbmltcG9ydCB7IGhlYWQsIHNldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNoYXJlLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIERldmljZVNvZnR3YXJlU2VydmljZSB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBkZXZpY2Ugc29mdHdhcmUgZGF0YSBpcyBjdXJyZW50bHkgYmVpbmcgbG9hZGVkLlxuICAgKi9cbiAgZ2V0IGxvYWRpbmckKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmxvYWRpbmdTdWJqZWN0JC5hc09ic2VydmFibGUoKS5waXBlKHNoYXJlKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWxvYWRTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dm9pZD4obnVsbCk7XG4gIHByaXZhdGUgbG9hZGluZ1N1YmplY3QkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlcnZpY2VSZWdpc3RyeTogU2VydmljZVJlZ2lzdHJ5KSB7fVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyIGRldmljZSBzb2Z0d2FyZSBkYXRhIHJlbG9hZC5cbiAgICovXG4gIHJlbG9hZCgpIHtcbiAgICB0aGlzLnJlbG9hZFN1YmplY3QkLm5leHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIHNvZnR3YXJlIGxpc3QgdGhhdCBpcyBpbnN0YWxsZWQgb24gYSBnaXZlbiBkZXZpY2UuXG4gICAqXG4gICAqIEBwYXJhbSBkZXZpY2VJZCBJRCBvZiB0aGUgZGV2aWNlIHRvIHJldHJpZXZlIHNvZnR3YXJlIGRhdGEgZm9yXG4gICAqIEBwYXJhbSBmaWx0ZXJDcml0ZXJpYSBDcml0ZXJpYSB0aGF0IHNvZnR3YXJlIGl0ZW1zIGFyZSBmaWx0ZXJlZCBieS5cbiAgICogQHBhcmFtIGxlZ2FjeVNvZnR3YXJlTGlzdCBJZiBwcm92aWRlZCBubyBkYXRhIHdpbGwgYmUgZmV0Y2hlZCBmcm9tIGJhY2tlbmQuIFRoZSBwcm92aWRlZCBzb2Z0d2FyZSBsaXN0XG4gICAqIHdpbGwgYmUgZmlsdGVyZWQgYnkgdGhlIHNwZWNpZmllZCBmaWx0ZXIgY3JpdGVyaWEuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBzb2Z0d2FyZSBpdGVtcyBpbnN0YWxsZWQgb24gdGhlIHNwZWNpZmllZCBkZXZpY2UgZmlsdGVyZWQgYnkgdGhlIHNwZWNpZmllZCBjcml0ZXJpYS5cbiAgICovXG4gIGdldFNvZnR3YXJlTGlzdChcbiAgICBkZXZpY2VJZCxcbiAgICBmaWx0ZXJDcml0ZXJpYTogRmlsdGVyQ3JpdGVyaWEsXG4gICAgbGVnYWN5U29mdHdhcmVMaXN0PzogRGV2aWNlU29mdHdhcmVbXVxuICApOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PERldmljZVNvZnR3YXJlPj4ge1xuICAgIHRoaXMubG9hZGluZ1N1YmplY3QkLm5leHQodHJ1ZSk7XG5cbiAgICByZXR1cm4gdGhpcy5yZWxvYWRTdWJqZWN0JC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgY29uc3Qgc29mdHdhcmVMaXN0JCA9ICEhbGVnYWN5U29mdHdhcmVMaXN0XG4gICAgICAgICAgPyB0aGlzLmdldExlZ2FjeVNvZnR3YXJlTGlzdChsZWdhY3lTb2Z0d2FyZUxpc3QsIGZpbHRlckNyaXRlcmlhKVxuICAgICAgICAgIDogdGhpcy5nZXRBZHZhbmNlZFNvZnR3YXJlTGlzdChkZXZpY2VJZCwgZmlsdGVyQ3JpdGVyaWEpO1xuICAgICAgICByZXR1cm4gc29mdHdhcmVMaXN0JC50aGVuKHJlc3VsdExpc3QgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QkLm5leHQoZmFsc2UpO1xuICAgICAgICAgIHJldHVybiByZXN1bHRMaXN0O1xuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgc2hhcmUoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldEFkdmFuY2VkU29mdHdhcmVMaXN0KFxuICAgIGRldmljZUlkLFxuICAgIGZpbHRlckNyaXRlcmlhOiBGaWx0ZXJDcml0ZXJpYVxuICApOiBQcm9taXNlPElSZXN1bHRMaXN0PERldmljZVNvZnR3YXJlPj4ge1xuICAgIGNvbnN0IHF1ZXJ5RmlsdGVyID0ge1xuICAgICAgZGV2aWNlSWQsXG4gICAgICBjdXJyZW50UGFnZTogMSxcbiAgICAgIHBhZ2VTaXplOiA1MCxcbiAgICAgIHdpdGhUb3RhbFBhZ2VzOiB0cnVlXG4gICAgfTtcbiAgICBjb25zdCBhZHZhbmNlZFNvZnR3YXJlU2VydmljZTogSUFkdmFuY2VkU29mdHdhcmVTZXJ2aWNlID0gaGVhZCh0aGlzLnNlcnZpY2VSZWdpc3RyeS5nZXQoJ2FzbScpKTtcbiAgICBpZiAoZmlsdGVyQ3JpdGVyaWE/Lm5hbWUpIHtcbiAgICAgIHNldChxdWVyeUZpbHRlciwgJ25hbWUnLCBgKiR7ZmlsdGVyQ3JpdGVyaWEubmFtZX0qYCk7XG4gICAgfVxuICAgIGlmIChmaWx0ZXJDcml0ZXJpYT8uc29mdHdhcmVUeXBlKSB7XG4gICAgICBzZXQocXVlcnlGaWx0ZXIsICd0eXBlJywgYCR7ZmlsdGVyQ3JpdGVyaWEuc29mdHdhcmVUeXBlfWApO1xuICAgIH1cbiAgICByZXR1cm4gYWR2YW5jZWRTb2Z0d2FyZVNlcnZpY2UubGlzdChxdWVyeUZpbHRlcikgYXMgdW5rbm93biBhcyBQcm9taXNlPFxuICAgICAgSVJlc3VsdExpc3Q8RGV2aWNlU29mdHdhcmU+XG4gICAgPjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TGVnYWN5U29mdHdhcmVMaXN0KFxuICAgIGxlZ2FjeVNvZnR3YXJlTGlzdDogRGV2aWNlU29mdHdhcmVbXSxcbiAgICBmaWx0ZXJDcml0ZXJpYTogRmlsdGVyQ3JpdGVyaWFcbiAgKTogUHJvbWlzZTxJUmVzdWx0TGlzdDxEZXZpY2VTb2Z0d2FyZT4+IHtcbiAgICBjb25zdCBkYXRhID0gZmlsdGVyQ3JpdGVyaWFcbiAgICAgID8gbGVnYWN5U29mdHdhcmVMaXN0LmZpbHRlcihpdGVtID0+IHtcbiAgICAgICAgICBsZXQgbWF0Y2ggPSB0cnVlO1xuICAgICAgICAgIGlmIChmaWx0ZXJDcml0ZXJpYT8ubmFtZSkge1xuICAgICAgICAgICAgbWF0Y2ggPSBtYXRjaCAmJiBpdGVtLm5hbWU/LmluY2x1ZGVzKGZpbHRlckNyaXRlcmlhLm5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZmlsdGVyQ3JpdGVyaWE/LnNvZnR3YXJlVHlwZSkge1xuICAgICAgICAgICAgbWF0Y2ggPSBtYXRjaCAmJiBpdGVtLnNvZnR3YXJlVHlwZSA9PT0gZmlsdGVyQ3JpdGVyaWEuc29mdHdhcmVUeXBlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgICAgfSlcbiAgICAgIDogbGVnYWN5U29mdHdhcmVMaXN0O1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgZGF0YSxcbiAgICAgIHJlczogbnVsbCxcbiAgICAgIHBhZ2luZzoge1xuICAgICAgICB0b3RhbFBhZ2VzOiBkYXRhLmxlbmd0aFxuICAgICAgfSBhcyBQYWdpbmc8RGV2aWNlU29mdHdhcmU+XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==