@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
58 lines • 9.7 kB
JavaScript
import { Component, EventEmitter, Injector, Input, Output } from '@angular/core';
import { FormGroup } from '@angular/forms';
import { FormlyModule } from '@ngx-formly/core';
import { DynamicFormsModule, CommonModule as C8yCommonModule, FormsModule as C8yFormsModule, CoreModule } from '@c8y/ngx-components';
import { BaseObjectMapping } from './default-object-mapping-types';
import * as i0 from "@angular/core";
import * as i1 from "@c8y/ngx-components";
import * as i2 from "@ngx-formly/core";
export class ObjectMappingComponent {
constructor(injector) {
this.injector = injector;
this.model = {};
this.onUpdate = new EventEmitter();
this.form = new FormGroup({});
this.fields = [];
this.options = {
formState: {
disabled: false
}
};
}
ngOnInit() {
this.fillFormlyForm();
}
ngAfterViewInit() {
if (this.fields?.length > 0) {
this.options.detectChanges(this.fields[0]);
}
}
onChange(_event) {
const { dirty, valid, touched } = this.form;
this.onUpdate.emit({ dirty, valid, touched });
}
fillFormlyForm() {
if (this.objectMappingTypes && this.objectMappingTypes.length > 0) {
this.objectMappingTypes.forEach(functionalityType => {
const instance = new functionalityType(this.injector);
if (instance instanceof BaseObjectMapping) {
this.fields.push(instance.getFormlyFieldConfig());
}
});
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectMappingComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ObjectMappingComponent, isStandalone: true, selector: "c8y-device-protocol-object-mappings", inputs: { model: ["data", "model"], objectMappingTypes: "objectMappingTypes" }, outputs: { onUpdate: "onUpdate" }, ngImport: i0, template: "<div class=\"form m-b-16 object-mappings\">\n <div class=\"legend form-block\">{{ 'Functionalities' | translate }}</div>\n <formly-form\n [model]=\"model\"\n [form]=\"form\"\n [fields]=\"fields\"\n [options]=\"options\"\n (modelChange)=\"onChange($event)\"\n data-cy=\"device-protocol-object-mappings--formly-form\"\n ></formly-form>\n</div>\n", dependencies: [{ kind: "ngmodule", type: C8yCommonModule }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "ngmodule", type: C8yFormsModule }, { kind: "ngmodule", type: DynamicFormsModule }, { kind: "component", type: i2.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "ngmodule", type: CoreModule }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectMappingComponent, decorators: [{
type: Component,
args: [{ selector: 'c8y-device-protocol-object-mappings', standalone: true, imports: [C8yCommonModule, C8yFormsModule, DynamicFormsModule, FormlyModule, CoreModule], template: "<div class=\"form m-b-16 object-mappings\">\n <div class=\"legend form-block\">{{ 'Functionalities' | translate }}</div>\n <formly-form\n [model]=\"model\"\n [form]=\"form\"\n [fields]=\"fields\"\n [options]=\"options\"\n (modelChange)=\"onChange($event)\"\n data-cy=\"device-protocol-object-mappings--formly-form\"\n ></formly-form>\n</div>\n" }]
}], ctorParameters: () => [{ type: i0.Injector }], propDecorators: { model: [{
type: Input,
args: ['data']
}], objectMappingTypes: [{
type: Input
}], onUpdate: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LW1hcHBpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZGV2aWNlLXByb3RvY29sLW9iamVjdC1tYXBwaW5ncy9vYmplY3QtbWFwcGluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9kZXZpY2UtcHJvdG9jb2wtb2JqZWN0LW1hcHBpbmdzL29iamVjdC1tYXBwaW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBRUwsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQXdDLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RGLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsWUFBWSxJQUFJLGVBQWUsRUFDL0IsV0FBVyxJQUFJLGNBQWMsRUFDN0IsVUFBVSxFQUNYLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7QUFTbkUsTUFBTSxPQUFPLHNCQUFzQjtJQWFqQyxZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBWnZCLFVBQUssR0FBWSxFQUFFLENBQUM7UUFFekIsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFrQyxDQUFDO1FBRXhFLFNBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixXQUFNLEdBQXdCLEVBQUUsQ0FBQztRQUNqQyxZQUFPLEdBQXNCO1lBQzNCLFNBQVMsRUFBRTtnQkFDVCxRQUFRLEVBQUUsS0FBSzthQUNoQjtTQUNGLENBQUM7SUFFdUMsQ0FBQztJQUUxQyxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0MsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRLENBQUMsTUFBTTtRQUNiLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBb0MsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO2dCQUNsRCxNQUFNLFFBQVEsR0FBRyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFFdEQsSUFBSSxRQUFRLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztvQkFDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztnQkFDcEQsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7K0dBeENVLHNCQUFzQjttR0FBdEIsc0JBQXNCLGtOQzNCbkMsOFdBV0EsMkNEY1ksZUFBZSw4RkFBRSxjQUFjLDhCQUFFLGtCQUFrQiw2S0FBRSxZQUFZLDhCQUFFLFVBQVU7OzRGQUU1RSxzQkFBc0I7a0JBTmxDLFNBQVM7K0JBQ0UscUNBQXFDLGNBQ25DLElBQUksV0FFUCxDQUFDLGVBQWUsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQzs2RUFHekUsS0FBSztzQkFBbkIsS0FBSzt1QkFBQyxNQUFNO2dCQUNKLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFR5cGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZywgRm9ybWx5Rm9ybU9wdGlvbnMsIEZvcm1seU1vZHVsZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHtcbiAgRHluYW1pY0Zvcm1zTW9kdWxlLFxuICBDb21tb25Nb2R1bGUgYXMgQzh5Q29tbW9uTW9kdWxlLFxuICBGb3Jtc01vZHVsZSBhcyBDOHlGb3Jtc01vZHVsZSxcbiAgQ29yZU1vZHVsZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEJhc2VPYmplY3RNYXBwaW5nIH0gZnJvbSAnLi9kZWZhdWx0LW9iamVjdC1tYXBwaW5nLXR5cGVzJztcbmltcG9ydCB7IE9iamVjdE1hcHBpbmdzVmFsaWRhdGlvbk9iamVjdCB9IGZyb20gJy4vaW5kZXgnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZGV2aWNlLXByb3RvY29sLW9iamVjdC1tYXBwaW5ncycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlVXJsOiBgLi9vYmplY3QtbWFwcGluZy5jb21wb25lbnQuaHRtbGAsXG4gIGltcG9ydHM6IFtDOHlDb21tb25Nb2R1bGUsIEM4eUZvcm1zTW9kdWxlLCBEeW5hbWljRm9ybXNNb2R1bGUsIEZvcm1seU1vZHVsZSwgQ29yZU1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgT2JqZWN0TWFwcGluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgnZGF0YScpIG1vZGVsOiB1bmtub3duID0ge307XG4gIEBJbnB1dCgpIG9iamVjdE1hcHBpbmdUeXBlczogVHlwZTxCYXNlT2JqZWN0TWFwcGluZz5bXTtcbiAgQE91dHB1dCgpIG9uVXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxPYmplY3RNYXBwaW5nc1ZhbGlkYXRpb25PYmplY3Q+KCk7XG5cbiAgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICBmaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10gPSBbXTtcbiAgb3B0aW9uczogRm9ybWx5Rm9ybU9wdGlvbnMgPSB7XG4gICAgZm9ybVN0YXRlOiB7XG4gICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICB9XG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5maWxsRm9ybWx5Rm9ybSgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmZpZWxkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5vcHRpb25zLmRldGVjdENoYW5nZXModGhpcy5maWVsZHNbMF0pO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2hhbmdlKF9ldmVudCkge1xuICAgIGNvbnN0IHsgZGlydHksIHZhbGlkLCB0b3VjaGVkIH0gPSB0aGlzLmZvcm07XG4gICAgdGhpcy5vblVwZGF0ZS5lbWl0KHsgZGlydHksIHZhbGlkLCB0b3VjaGVkIH0gYXMgT2JqZWN0TWFwcGluZ3NWYWxpZGF0aW9uT2JqZWN0KTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsbEZvcm1seUZvcm0oKSB7XG4gICAgaWYgKHRoaXMub2JqZWN0TWFwcGluZ1R5cGVzICYmIHRoaXMub2JqZWN0TWFwcGluZ1R5cGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMub2JqZWN0TWFwcGluZ1R5cGVzLmZvckVhY2goZnVuY3Rpb25hbGl0eVR5cGUgPT4ge1xuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBmdW5jdGlvbmFsaXR5VHlwZSh0aGlzLmluamVjdG9yKTtcblxuICAgICAgICBpZiAoaW5zdGFuY2UgaW5zdGFuY2VvZiBCYXNlT2JqZWN0TWFwcGluZykge1xuICAgICAgICAgIHRoaXMuZmllbGRzLnB1c2goaW5zdGFuY2UuZ2V0Rm9ybWx5RmllbGRDb25maWcoKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0gbS1iLTE2IG9iamVjdC1tYXBwaW5nc1wiPlxuICA8ZGl2IGNsYXNzPVwibGVnZW5kIGZvcm0tYmxvY2tcIj57eyAnRnVuY3Rpb25hbGl0aWVzJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICA8Zm9ybWx5LWZvcm1cbiAgICBbbW9kZWxdPVwibW9kZWxcIlxuICAgIFtmb3JtXT1cImZvcm1cIlxuICAgIFtmaWVsZHNdPVwiZmllbGRzXCJcbiAgICBbb3B0aW9uc109XCJvcHRpb25zXCJcbiAgICAobW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgZGF0YS1jeT1cImRldmljZS1wcm90b2NvbC1vYmplY3QtbWFwcGluZ3MtLWZvcm1seS1mb3JtXCJcbiAgPjwvZm9ybWx5LWZvcm0+XG48L2Rpdj5cbiJdfQ==