@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
66 lines • 11.1 kB
JavaScript
import { pick } from 'lodash-es';
import { DynamicComponentAlert } from './dynamic-component-alert.model';
import { DynamicBulkDetailsResolver } from './dynamic-details-resolver';
export class DynamicBulkIIdentifiedResolver extends DynamicBulkDetailsResolver {
constructor(dynamicResolver,
/**
* You either have to provide the service or implement the performBulkRequest method on your own.
*/
service) {
super(dynamicResolver);
this.dynamicResolver = dynamicResolver;
this.service = service;
}
buildRetrievalAlert(entity, errors) {
const moError = `"${entity.name || entity.text || '-'}" (${entity.id})`;
let details = '';
let foundErrorForId;
if (errors?.length) {
foundErrorForId = errors.find(tmp => tmp.id === entity.id);
if (foundErrorForId) {
details = `. ${foundErrorForId.status}: ${foundErrorForId.statusText}`;
}
}
const alert = new DynamicComponentAlert({
text: `Unable to retrieve the following ${this.typeForErrorMessage}: ${moError}${details}`,
type: 'danger',
unresolvedData: entity
});
alert.retrievalError = foundErrorForId;
return alert;
}
performBulkRequest(uniqIds, bulkRequestId) {
if (!this.service) {
console.error(`Either provide a service to the DynamicBulkIIdentifiedResolver constructor or implement performBulkRequest yourself.`);
return Promise.resolve({ bulkRequestId, errors: [], result: [] });
}
const promArray = uniqIds.map(id => this.service.detail(id).catch(res => ({ id, ...pick(res?.res, ['status', 'statusText']) })));
return Promise.all(promArray).then(result => {
const successfulResults = result
.map((tmp) => tmp.data)
.filter(tmp => !!tmp);
const errors = result.filter((tmp) => !!tmp.id);
return { bulkRequestId, errors, result: successfulResults };
});
}
extractIdsToBeRetrieved(valueBehindAttribute) {
if (Array.isArray(valueBehindAttribute)) {
return valueBehindAttribute
.map(entry => entry?.id)
.filter(tmp => !!tmp)
.map(tmp => `${tmp}`);
}
const id = valueBehindAttribute?.id;
if (id) {
return `${id}`;
}
return null;
}
serializeSingleObject(obj) {
if (!obj) {
return obj;
}
return pick(obj, ['id', 'name', 'text']);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtaWQtcmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2R5bmFtaWMtY29tcG9uZW50L2Fic3RyYWN0LWlkLXJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHakMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHeEUsTUFBTSxPQUFnQiw4QkFFcEIsU0FBUSwwQkFBNkI7SUFPckMsWUFDWSxlQUF1QztJQUNqRDs7T0FFRztJQUNPLE9BQW1GO1FBRTdGLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQU5iLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQUl2QyxZQUFPLEdBQVAsT0FBTyxDQUE0RTtJQUcvRixDQUFDO0lBRUQsbUJBQW1CLENBQ2pCLE1BQWtCLEVBQ2xCLE1BQW1DO1FBRW5DLE1BQU0sT0FBTyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLEdBQUcsTUFBTSxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUM7UUFFeEUsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksZUFBMEMsQ0FBQztRQUMvQyxJQUFJLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNuQixlQUFlLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNELElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQ3BCLE9BQU8sR0FBRyxLQUFLLGVBQWUsQ0FBQyxNQUFNLEtBQUssZUFBZSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3pFLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQztZQUN0QyxJQUFJLEVBQUUsb0NBQW9DLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxPQUFPLEdBQUcsT0FBTyxFQUFFO1lBQzFGLElBQUksRUFBRSxRQUFRO1lBQ2QsY0FBYyxFQUFFLE1BQU07U0FDdkIsQ0FBQyxDQUFDO1FBQ0gsS0FBSyxDQUFDLGNBQWMsR0FBRyxlQUFlLENBQUM7UUFDdkMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRVMsa0JBQWtCLENBQzFCLE9BQWlCLEVBQ2pCLGFBQXFCO1FBSXJCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsT0FBTyxDQUFDLEtBQUssQ0FDWCxzSEFBc0gsQ0FDdkgsQ0FBQztZQUNGLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBMkQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUN6RixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDNUYsQ0FBQztRQUNGLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDMUMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNO2lCQUM3QixHQUFHLENBQUMsQ0FBQyxHQUFlLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7aUJBQ2xDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQVEsQ0FBQztZQUMvQixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUMxQixDQUFDLEdBQThCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUNkLENBQUM7WUFDakMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLENBQUM7UUFDOUQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsdUJBQXVCLENBQy9CLG9CQUFvRDtRQUVwRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sb0JBQW9CO2lCQUN4QixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO2lCQUN2QixNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2lCQUNwQixHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUVELE1BQU0sRUFBRSxHQUFHLG9CQUFvQixFQUFFLEVBQUUsQ0FBQztRQUNwQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ1AsT0FBTyxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFUyxxQkFBcUIsQ0FBQyxHQUFNO1FBQ3BDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQWUsQ0FBQztJQUN6RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUmVzdWx0LCBTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgcGljayB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEeW5hbWljQnVsa1JldHJpZXZhbEVycm9yIH0gZnJvbSAnLi9keW5hbWljLWJ1bGstcmV0cmlldmFsLWVycm9yLm1vZGVsJztcbmltcG9ydCB7IER5bmFtaWNDb21wb25lbnRBbGVydCB9IGZyb20gJy4vZHluYW1pYy1jb21wb25lbnQtYWxlcnQubW9kZWwnO1xuaW1wb3J0IHsgRHluYW1pY0J1bGtEZXRhaWxzUmVzb2x2ZXIgfSBmcm9tICcuL2R5bmFtaWMtZGV0YWlscy1yZXNvbHZlcic7XG5pbXBvcnQgeyBEeW5hbWljUmVzb2x2ZXJTZXJ2aWNlIH0gZnJvbSAnLi9keW5hbWljLXJlc29sdmVyLnNlcnZpY2UnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRHluYW1pY0J1bGtJSWRlbnRpZmllZFJlc29sdmVyPFxuICBUIGV4dGVuZHMgeyBpZDogc3RyaW5nIHwgbnVtYmVyOyBba2V5OiBzdHJpbmddOiBhbnkgfVxuPiBleHRlbmRzIER5bmFtaWNCdWxrRGV0YWlsc1Jlc29sdmVyPFQ+IHtcbiAgLyoqXG4gICAqIFVzZWQgd2l0aGluIHRoZSBidWlsZFJldHJpZXZhbEFsZXJ0IG1ldGhvZCB0byBnZW5lcmF0ZSB0aGUgYWxlcnQgdGV4dC5cbiAgICogRm9yIE1hbmFnZWRPYmplY3RzIHRoaXMgd291bGQgYmUgc2V0IHRvIG1hbmFnZWRPYmplY3QsIGZvciBldmVudHMgZS5nLiB0byBldmVudC5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSB0eXBlRm9yRXJyb3JNZXNzYWdlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGR5bmFtaWNSZXNvbHZlcjogRHluYW1pY1Jlc29sdmVyU2VydmljZSxcbiAgICAvKipcbiAgICAgKiBZb3UgZWl0aGVyIGhhdmUgdG8gcHJvdmlkZSB0aGUgc2VydmljZSBvciBpbXBsZW1lbnQgdGhlIHBlcmZvcm1CdWxrUmVxdWVzdCBtZXRob2Qgb24geW91ciBvd24uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHNlcnZpY2U/OiBTZXJ2aWNlPFQ+ICYgeyBkZXRhaWwoZW50aXR5T3JJZDogc3RyaW5nIHwgbnVtYmVyKTogUHJvbWlzZTxJUmVzdWx0PFQ+PiB9XG4gICkge1xuICAgIHN1cGVyKGR5bmFtaWNSZXNvbHZlcik7XG4gIH1cblxuICBidWlsZFJldHJpZXZhbEFsZXJ0KFxuICAgIGVudGl0eTogUGFydGlhbDxUPixcbiAgICBlcnJvcnM6IER5bmFtaWNCdWxrUmV0cmlldmFsRXJyb3JbXVxuICApOiBEeW5hbWljQ29tcG9uZW50QWxlcnQge1xuICAgIGNvbnN0IG1vRXJyb3IgPSBgXCIke2VudGl0eS5uYW1lIHx8IGVudGl0eS50ZXh0IHx8ICctJ31cIiAoJHtlbnRpdHkuaWR9KWA7XG5cbiAgICBsZXQgZGV0YWlscyA9ICcnO1xuICAgIGxldCBmb3VuZEVycm9yRm9ySWQ6IER5bmFtaWNCdWxrUmV0cmlldmFsRXJyb3I7XG4gICAgaWYgKGVycm9ycz8ubGVuZ3RoKSB7XG4gICAgICBmb3VuZEVycm9yRm9ySWQgPSBlcnJvcnMuZmluZCh0bXAgPT4gdG1wLmlkID09PSBlbnRpdHkuaWQpO1xuICAgICAgaWYgKGZvdW5kRXJyb3JGb3JJZCkge1xuICAgICAgICBkZXRhaWxzID0gYC4gJHtmb3VuZEVycm9yRm9ySWQuc3RhdHVzfTogJHtmb3VuZEVycm9yRm9ySWQuc3RhdHVzVGV4dH1gO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGFsZXJ0ID0gbmV3IER5bmFtaWNDb21wb25lbnRBbGVydCh7XG4gICAgICB0ZXh0OiBgVW5hYmxlIHRvIHJldHJpZXZlIHRoZSBmb2xsb3dpbmcgJHt0aGlzLnR5cGVGb3JFcnJvck1lc3NhZ2V9OiAke21vRXJyb3J9JHtkZXRhaWxzfWAsXG4gICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgIHVucmVzb2x2ZWREYXRhOiBlbnRpdHlcbiAgICB9KTtcbiAgICBhbGVydC5yZXRyaWV2YWxFcnJvciA9IGZvdW5kRXJyb3JGb3JJZDtcbiAgICByZXR1cm4gYWxlcnQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGVyZm9ybUJ1bGtSZXF1ZXN0KFxuICAgIHVuaXFJZHM6IHN0cmluZ1tdLFxuICAgIGJ1bGtSZXF1ZXN0SWQ6IG51bWJlclxuICApOlxuICAgIHwgUHJvbWlzZTx7IHJlc3VsdDogVFtdOyBidWxrUmVxdWVzdElkOiBudW1iZXI7IGVycm9yczogRHluYW1pY0J1bGtSZXRyaWV2YWxFcnJvcltdIH0+XG4gICAgfCBPYnNlcnZhYmxlPHsgcmVzdWx0OiBUW107IGJ1bGtSZXF1ZXN0SWQ6IG51bWJlcjsgZXJyb3JzOiBEeW5hbWljQnVsa1JldHJpZXZhbEVycm9yW10gfT4ge1xuICAgIGlmICghdGhpcy5zZXJ2aWNlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBgRWl0aGVyIHByb3ZpZGUgYSBzZXJ2aWNlIHRvIHRoZSBEeW5hbWljQnVsa0lJZGVudGlmaWVkUmVzb2x2ZXIgY29uc3RydWN0b3Igb3IgaW1wbGVtZW50IHBlcmZvcm1CdWxrUmVxdWVzdCB5b3Vyc2VsZi5gXG4gICAgICApO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IGJ1bGtSZXF1ZXN0SWQsIGVycm9yczogW10sIHJlc3VsdDogW10gfSk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvbUFycmF5OiBBcnJheTxQcm9taXNlPElSZXN1bHQ8VD4gfCBEeW5hbWljQnVsa1JldHJpZXZhbEVycm9yPj4gPSB1bmlxSWRzLm1hcChpZCA9PlxuICAgICAgdGhpcy5zZXJ2aWNlLmRldGFpbChpZCkuY2F0Y2gocmVzID0+ICh7IGlkLCAuLi5waWNrKHJlcz8ucmVzLCBbJ3N0YXR1cycsICdzdGF0dXNUZXh0J10pIH0pKVxuICAgICk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21BcnJheSkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgY29uc3Qgc3VjY2Vzc2Z1bFJlc3VsdHMgPSByZXN1bHRcbiAgICAgICAgLm1hcCgodG1wOiBJUmVzdWx0PFQ+KSA9PiB0bXAuZGF0YSlcbiAgICAgICAgLmZpbHRlcih0bXAgPT4gISF0bXApIGFzIFRbXTtcbiAgICAgIGNvbnN0IGVycm9ycyA9IHJlc3VsdC5maWx0ZXIoXG4gICAgICAgICh0bXA6IER5bmFtaWNCdWxrUmV0cmlldmFsRXJyb3IpID0+ICEhdG1wLmlkXG4gICAgICApIGFzIER5bmFtaWNCdWxrUmV0cmlldmFsRXJyb3JbXTtcbiAgICAgIHJldHVybiB7IGJ1bGtSZXF1ZXN0SWQsIGVycm9ycywgcmVzdWx0OiBzdWNjZXNzZnVsUmVzdWx0cyB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGV4dHJhY3RJZHNUb0JlUmV0cmlldmVkKFxuICAgIHZhbHVlQmVoaW5kQXR0cmlidXRlOiBQYXJ0aWFsPFQ+IHwgQXJyYXk8UGFydGlhbDxUPj5cbiAgKTogc3RyaW5nIHwgc3RyaW5nW10ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlQmVoaW5kQXR0cmlidXRlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlQmVoaW5kQXR0cmlidXRlXG4gICAgICAgIC5tYXAoZW50cnkgPT4gZW50cnk/LmlkKVxuICAgICAgICAuZmlsdGVyKHRtcCA9PiAhIXRtcClcbiAgICAgICAgLm1hcCh0bXAgPT4gYCR7dG1wfWApO1xuICAgIH1cblxuICAgIGNvbnN0IGlkID0gdmFsdWVCZWhpbmRBdHRyaWJ1dGU/LmlkO1xuICAgIGlmIChpZCkge1xuICAgICAgcmV0dXJuIGAke2lkfWA7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlcmlhbGl6ZVNpbmdsZU9iamVjdChvYmo6IFQpOiBQYXJ0aWFsPFQ+IHtcbiAgICBpZiAoIW9iaikge1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gICAgcmV0dXJuIHBpY2sob2JqLCBbJ2lkJywgJ25hbWUnLCAndGV4dCddKSBhcyBQYXJ0aWFsPFQ+O1xuICB9XG59XG4iXX0=