@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
69 lines • 10.6 kB
JavaScript
import { Injectable } from '@angular/core';
import { DynamicDatapointsResolver, DynamicManagedObjectResolver } from '@c8y/ngx-components';
import { DashboardBridgeService } from './dashboard-bridge.service';
import { WidgetComponent } from './widget.component';
import { LegacyDeviceSelectorComponent } from './device-selector.component';
import { of } from 'rxjs';
import { shareReplay, switchMap, take } from 'rxjs/operators';
import * as i0 from "@angular/core";
import * as i1 from "./dashboard-bridge.service";
export class Ng1ComponentFactoryService {
constructor(bridge) {
this.bridge = bridge;
this.components$ = of(1).pipe(switchMap(() => this.getComponents()), shareReplay(1), take(1));
}
get() {
return this.components$;
}
async getComponents() {
const ng1Components = await this.bridge.ng1Components.list();
const components = ng1Components.map(cmp => {
const resolve = {};
if (cmp.options?.datapointAttributes && Array.isArray(cmp.options?.datapointAttributes)) {
cmp.options?.datapointAttributes.forEach(attribute => (resolve[attribute] = DynamicDatapointsResolver));
}
if (cmp.options?.managedObjectAttributes &&
Array.isArray(cmp.options?.managedObjectAttributes)) {
cmp.options?.managedObjectAttributes.forEach(attribute => (resolve[attribute] = DynamicManagedObjectResolver));
}
const data = {
settings: {
...cmp.options,
configTemplateUrl: cmp.configTemplateUrl,
widgetComponent: cmp.widgetComponent,
configComponent: cmp.configComponent,
transformConfigWithContext: cmp.transformConfigWithContext || cmp.componentTransformConfigWithContext,
upgrade: true
}
};
data.settings.templateUrl = cmp.templateUrl; // workaround as in object it creates build error
data.displaySettings = cmp.displaySettings;
return {
id: cmp.name,
label: cmp.nameDisplay || cmp.name,
description: cmp.description,
component: WidgetComponent,
configComponent: WidgetComponent,
previewImage: cmp.previewImage,
errorStrategy: cmp.errorStrategy,
resolve,
data
};
});
// add the device selector legacy component
components.push({
id: 'device.selector.legacy',
label: 'Device selector',
description: '',
data: { settings: { noNewWidgets: true, upgrade: true } },
component: LegacyDeviceSelectorComponent
});
return components;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Ng1ComponentFactoryService, deps: [{ token: i1.DashboardBridgeService }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Ng1ComponentFactoryService }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Ng1ComponentFactoryService, decorators: [{
type: Injectable
}], ctorParameters: () => [{ type: i1.DashboardBridgeService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi91cGdyYWRlL2Rhc2hib2FyZC9jb21wb25lbnQuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFFTCx5QkFBeUIsRUFDekIsNEJBQTRCLEVBQzdCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxFQUFFLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUc5RCxNQUFNLE9BQU8sMEJBQTBCO0lBRXJDLFlBQW9CLE1BQThCO1FBQTlCLFdBQU0sR0FBTixNQUFNLENBQXdCO1FBQ2hELElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDM0IsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxFQUNyQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNSLENBQUM7SUFDSixDQUFDO0lBRUQsR0FBRztRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRU8sS0FBSyxDQUFDLGFBQWE7UUFDekIsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3RCxNQUFNLFVBQVUsR0FBaUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN2RSxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDbkIsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLG1CQUFtQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hGLEdBQUcsQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLENBQUMsT0FBTyxDQUN0QyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLHlCQUFnQyxDQUFDLENBQ3JFLENBQUM7WUFDSixDQUFDO1lBQ0QsSUFDRSxHQUFHLENBQUMsT0FBTyxFQUFFLHVCQUF1QjtnQkFDcEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLHVCQUF1QixDQUFDLEVBQ25ELENBQUM7Z0JBQ0QsR0FBRyxDQUFDLE9BQU8sRUFBRSx1QkFBdUIsQ0FBQyxPQUFPLENBQzFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsNEJBQW1DLENBQUMsQ0FDeEUsQ0FBQztZQUNKLENBQUM7WUFDRCxNQUFNLElBQUksR0FBRztnQkFDWCxRQUFRLEVBQUU7b0JBQ1IsR0FBRyxHQUFHLENBQUMsT0FBTztvQkFDZCxpQkFBaUIsRUFBRSxHQUFHLENBQUMsaUJBQWlCO29CQUN4QyxlQUFlLEVBQUUsR0FBRyxDQUFDLGVBQWU7b0JBQ3BDLGVBQWUsRUFBRSxHQUFHLENBQUMsZUFBZTtvQkFDcEMsMEJBQTBCLEVBQ3hCLEdBQUcsQ0FBQywwQkFBMEIsSUFBSSxHQUFHLENBQUMsbUNBQW1DO29CQUMzRSxPQUFPLEVBQUUsSUFBSTtpQkFDZDthQUNLLENBQUM7WUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsaURBQWlEO1lBQzlGLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQztZQUUzQyxPQUFPO2dCQUNMLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSTtnQkFDWixLQUFLLEVBQUUsR0FBRyxDQUFDLFdBQVcsSUFBSSxHQUFHLENBQUMsSUFBSTtnQkFDbEMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXO2dCQUM1QixTQUFTLEVBQUUsZUFBZTtnQkFDMUIsZUFBZSxFQUFFLGVBQWU7Z0JBQ2hDLFlBQVksRUFBRSxHQUFHLENBQUMsWUFBWTtnQkFDOUIsYUFBYSxFQUFFLEdBQUcsQ0FBQyxhQUFhO2dCQUNoQyxPQUFPO2dCQUNQLElBQUk7YUFDeUIsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztRQUVILDJDQUEyQztRQUMzQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ2QsRUFBRSxFQUFFLHdCQUF3QjtZQUM1QixLQUFLLEVBQUUsaUJBQWlCO1lBQ3hCLFdBQVcsRUFBRSxFQUFFO1lBQ2YsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDekQsU0FBUyxFQUFFLDZCQUE2QjtTQUN6QyxDQUFDLENBQUM7UUFFSCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDOytHQXBFVSwwQkFBMEI7bUhBQTFCLDBCQUEwQjs7NEZBQTFCLDBCQUEwQjtrQkFEdEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uLFxuICBEeW5hbWljRGF0YXBvaW50c1Jlc29sdmVyLFxuICBEeW5hbWljTWFuYWdlZE9iamVjdFJlc29sdmVyXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgRGFzaGJvYXJkQnJpZGdlU2VydmljZSB9IGZyb20gJy4vZGFzaGJvYXJkLWJyaWRnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFdpZGdldENvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMZWdhY3lEZXZpY2VTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4vZGV2aWNlLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBvZiwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5nMUNvbXBvbmVudEZhY3RvcnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjb21wb25lbnRzJDogT2JzZXJ2YWJsZTxEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbltdPjtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBicmlkZ2U6IERhc2hib2FyZEJyaWRnZVNlcnZpY2UpIHtcbiAgICB0aGlzLmNvbXBvbmVudHMkID0gb2YoMSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmdldENvbXBvbmVudHMoKSksXG4gICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICAgIHRha2UoMSlcbiAgICApO1xuICB9XG5cbiAgZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudHMkO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRDb21wb25lbnRzKCk6IFByb21pc2U8RHluYW1pY0NvbXBvbmVudERlZmluaXRpb25bXT4ge1xuICAgIGNvbnN0IG5nMUNvbXBvbmVudHMgPSBhd2FpdCB0aGlzLmJyaWRnZS5uZzFDb21wb25lbnRzLmxpc3QoKTtcbiAgICBjb25zdCBjb21wb25lbnRzOiBEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbltdID0gbmcxQ29tcG9uZW50cy5tYXAoY21wID0+IHtcbiAgICAgIGNvbnN0IHJlc29sdmUgPSB7fTtcbiAgICAgIGlmIChjbXAub3B0aW9ucz8uZGF0YXBvaW50QXR0cmlidXRlcyAmJiBBcnJheS5pc0FycmF5KGNtcC5vcHRpb25zPy5kYXRhcG9pbnRBdHRyaWJ1dGVzKSkge1xuICAgICAgICBjbXAub3B0aW9ucz8uZGF0YXBvaW50QXR0cmlidXRlcy5mb3JFYWNoKFxuICAgICAgICAgIGF0dHJpYnV0ZSA9PiAocmVzb2x2ZVthdHRyaWJ1dGVdID0gRHluYW1pY0RhdGFwb2ludHNSZXNvbHZlciBhcyBhbnkpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNtcC5vcHRpb25zPy5tYW5hZ2VkT2JqZWN0QXR0cmlidXRlcyAmJlxuICAgICAgICBBcnJheS5pc0FycmF5KGNtcC5vcHRpb25zPy5tYW5hZ2VkT2JqZWN0QXR0cmlidXRlcylcbiAgICAgICkge1xuICAgICAgICBjbXAub3B0aW9ucz8ubWFuYWdlZE9iamVjdEF0dHJpYnV0ZXMuZm9yRWFjaChcbiAgICAgICAgICBhdHRyaWJ1dGUgPT4gKHJlc29sdmVbYXR0cmlidXRlXSA9IER5bmFtaWNNYW5hZ2VkT2JqZWN0UmVzb2x2ZXIgYXMgYW55KVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgICAuLi5jbXAub3B0aW9ucyxcbiAgICAgICAgICBjb25maWdUZW1wbGF0ZVVybDogY21wLmNvbmZpZ1RlbXBsYXRlVXJsLFxuICAgICAgICAgIHdpZGdldENvbXBvbmVudDogY21wLndpZGdldENvbXBvbmVudCxcbiAgICAgICAgICBjb25maWdDb21wb25lbnQ6IGNtcC5jb25maWdDb21wb25lbnQsXG4gICAgICAgICAgdHJhbnNmb3JtQ29uZmlnV2l0aENvbnRleHQ6XG4gICAgICAgICAgICBjbXAudHJhbnNmb3JtQ29uZmlnV2l0aENvbnRleHQgfHwgY21wLmNvbXBvbmVudFRyYW5zZm9ybUNvbmZpZ1dpdGhDb250ZXh0LFxuICAgICAgICAgIHVwZ3JhZGU6IHRydWVcbiAgICAgICAgfVxuICAgICAgfSBhcyBhbnk7XG4gICAgICBkYXRhLnNldHRpbmdzLnRlbXBsYXRlVXJsID0gY21wLnRlbXBsYXRlVXJsOyAvLyB3b3JrYXJvdW5kIGFzIGluIG9iamVjdCBpdCBjcmVhdGVzIGJ1aWxkIGVycm9yXG4gICAgICBkYXRhLmRpc3BsYXlTZXR0aW5ncyA9IGNtcC5kaXNwbGF5U2V0dGluZ3M7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBjbXAubmFtZSxcbiAgICAgICAgbGFiZWw6IGNtcC5uYW1lRGlzcGxheSB8fCBjbXAubmFtZSxcbiAgICAgICAgZGVzY3JpcHRpb246IGNtcC5kZXNjcmlwdGlvbixcbiAgICAgICAgY29tcG9uZW50OiBXaWRnZXRDb21wb25lbnQsXG4gICAgICAgIGNvbmZpZ0NvbXBvbmVudDogV2lkZ2V0Q29tcG9uZW50LFxuICAgICAgICBwcmV2aWV3SW1hZ2U6IGNtcC5wcmV2aWV3SW1hZ2UsXG4gICAgICAgIGVycm9yU3RyYXRlZ3k6IGNtcC5lcnJvclN0cmF0ZWd5LFxuICAgICAgICByZXNvbHZlLFxuICAgICAgICBkYXRhXG4gICAgICB9IGFzIER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uO1xuICAgIH0pO1xuXG4gICAgLy8gYWRkIHRoZSBkZXZpY2Ugc2VsZWN0b3IgbGVnYWN5IGNvbXBvbmVudFxuICAgIGNvbXBvbmVudHMucHVzaCh7XG4gICAgICBpZDogJ2RldmljZS5zZWxlY3Rvci5sZWdhY3knLFxuICAgICAgbGFiZWw6ICdEZXZpY2Ugc2VsZWN0b3InLFxuICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgZGF0YTogeyBzZXR0aW5nczogeyBub05ld1dpZGdldHM6IHRydWUsIHVwZ3JhZGU6IHRydWUgfSB9LFxuICAgICAgY29tcG9uZW50OiBMZWdhY3lEZXZpY2VTZWxlY3RvckNvbXBvbmVudFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvbXBvbmVudHM7XG4gIH1cbn1cbiJdfQ==