UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

1 lines 11.8 kB
{"version":3,"file":"c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-uEdtPWC0.mjs","sources":["../../computed-asset-properties/fieldbus-item-status/fieldbus-item-status-config.component.ts","../../computed-asset-properties/fieldbus-item-status/fieldbus-item-status-config.component.html"],"sourcesContent":["import {\n Component,\n inject,\n Input,\n OnInit,\n OnChanges,\n SimpleChanges,\n OnDestroy\n} from '@angular/core';\nimport {\n ControlContainer,\n FormBuilder,\n NgForm,\n ReactiveFormsModule,\n Validators\n} from '@angular/forms';\nimport { IManagedObject } from '@c8y/client';\nimport { C8yTranslatePipe, CommonModule, CoreModule } from '@c8y/ngx-components';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n FieldbusCoil,\n FieldbusDeviceType,\n FieldbusItemStatusConfig,\n FieldbusRegister,\n RESULT_TYPES\n} from './fieldbus-item-status.model';\nimport { FieldbusService } from './fieldbus.service';\nimport { Observable } from 'rxjs';\n\ntype FieldbusItemsGroup = {\n type: 'c8y_Coil' | 'c8y_Register';\n label: string;\n items: (FieldbusCoil | FieldbusRegister)[];\n};\n\n@Component({\n selector: 'c8y-fieldbus-item-status-config',\n templateUrl: './fieldbus-item-status-config.component.html',\n imports: [CoreModule, CommonModule, C8yTranslatePipe, ReactiveFormsModule],\n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }]\n})\nexport class FieldbusItemStatusConfigComponent implements OnInit, OnChanges, OnDestroy {\n @Input() config?: FieldbusItemStatusConfig;\n @Input() asset?: IManagedObject;\n\n resultTypes = RESULT_TYPES;\n formGroup: ReturnType<FieldbusItemStatusConfigComponent['createForm']>;\n groupedItems: FieldbusItemsGroup[] = [];\n private deviceType: FieldbusDeviceType;\n\n private fieldbusService = inject(FieldbusService);\n private formBuilder = inject(FormBuilder);\n private form = inject(NgForm);\n\n ngOnInit() {\n this.initForm();\n }\n\n async ngOnChanges(changes: SimpleChanges) {\n if (changes['asset'] && this.asset) {\n try {\n this.deviceType = await this.fieldbusService.getDeviceTypeOf(this.asset);\n this.buildGroupedItemsFromDeviceType();\n this.patchFormFromConfig();\n } catch (err) {\n this.deviceType = null;\n this.groupedItems = [];\n this.formGroup.reset();\n }\n }\n\n if (changes['config'] && this.config) {\n this.patchFormFromConfig();\n }\n }\n\n ngOnDestroy() {\n this.form.form.removeControl('config');\n }\n\n onBeforeSave(\n config?: FieldbusItemStatusConfig\n ): boolean | Promise<boolean> | Observable<boolean> {\n if (this.formGroup.valid) {\n Object.assign(config, this.formToConfig());\n return true;\n }\n return false;\n }\n\n private initForm(): void {\n this.formGroup = this.createForm();\n this.form.form.addControl('config', this.formGroup);\n this.formGroup.patchValue({ item: null, resultType: RESULT_TYPES.RAW_VALUE.value });\n this.patchFormFromConfig();\n }\n\n private createForm() {\n return this.formBuilder.group({\n item: [null, [Validators.required]],\n resultType: ['', [Validators.required]]\n });\n }\n\n private formToConfig(): FieldbusItemStatusConfig {\n const formValue = this.formGroup.value;\n if (!formValue.item) return null;\n const item = formValue.item as FieldbusCoil | FieldbusRegister;\n const itemName = item.name;\n const itemType = this.groupedItems.find(g => g.items.includes(item))?.type;\n const resultType = formValue.resultType as keyof typeof RESULT_TYPES;\n return { itemName, itemType, resultType };\n }\n\n private patchFormFromConfig(): void {\n if (!this.config || !this.groupedItems.length || !this.formGroup) return;\n const { itemType, itemName, resultType } = this.config;\n let foundItem = null;\n for (const group of this.groupedItems) {\n foundItem = group.items.find(item => group.type === itemType && item.name === itemName);\n if (foundItem) break;\n }\n if (foundItem) {\n this.formGroup.patchValue({ item: foundItem, resultType });\n } else {\n this.formGroup.patchValue({ item: null, resultType: RESULT_TYPES.RAW_VALUE.value });\n }\n }\n\n private buildGroupedItemsFromDeviceType() {\n this.groupedItems = [];\n if (!this.deviceType) return;\n if (this.deviceType.c8y_Coils?.length) {\n this.groupedItems.push({\n type: 'c8y_Coil',\n label: gettext('Coils'),\n items: this.deviceType.c8y_Coils\n });\n }\n if (this.deviceType.c8y_Registers?.length) {\n this.groupedItems.push({\n type: 'c8y_Register',\n label: gettext('Registers'),\n items: this.deviceType.c8y_Registers\n });\n }\n }\n}\n","<form [formGroup]=\"formGroup\">\n <div class=\"d-flex-md row\">\n <div class=\"col-md-6\">\n <c8y-form-group style=\"padding-top: var(--c8y-font-size-base)\">\n <label for=\"fieldbusItem\">{{ 'Fieldbus item' | translate }}</label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"fieldbusItem\"\n formControlName=\"item\"\n >\n @for (group of groupedItems; track group.label) {\n <optgroup [label]=\"group.label | translate\">\n @for (item of group.items; track item.name) {\n <option [ngValue]=\"item\">\n {{ item.name }}\n </option>\n }\n </optgroup>\n }\n </select>\n </div>\n <c8y-messages\n [show]=\"formGroup.controls?.item?.touched ? formGroup?.controls?.item?.errors : {}\"\n ></c8y-messages>\n </c8y-form-group>\n </div>\n <div class=\"col-md-6\">\n <c8y-form-group style=\"padding-top: var(--c8y-font-size-base)\">\n <label for=\"resultType\">{{ 'Result type' | translate }}</label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"resultType\"\n formControlName=\"resultType\"\n >\n @for (resultType of resultTypes | keyvalue; track resultType.key) {\n <option [ngValue]=\"resultType.value.value\">\n {{ resultType.value.label | translate }}\n </option>\n }\n </select>\n </div>\n </c8y-form-group>\n </div>\n </div>\n</form>\n"],"names":["i1","i2","i3"],"mappings":";;;;;;;;;;MAyCa,iCAAiC,CAAA;AAN9C,IAAA,WAAA,GAAA;QAUE,IAAA,CAAA,WAAW,GAAG,YAAY;QAE1B,IAAA,CAAA,YAAY,GAAyB,EAAE;AAG/B,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AA+F9B,IAAA;IA7FC,QAAQ,GAAA;QACN,IAAI,CAAC,QAAQ,EAAE;IACjB;IAEA,MAAM,WAAW,CAAC,OAAsB,EAAA;QACtC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE;AAClC,YAAA,IAAI;AACF,gBAAA,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;gBACxE,IAAI,CAAC,+BAA+B,EAAE;gBACtC,IAAI,CAAC,mBAAmB,EAAE;YAC5B;YAAE,OAAO,GAAG,EAAE;AACZ,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,gBAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YACxB;QACF;QAEA,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;YACpC,IAAI,CAAC,mBAAmB,EAAE;QAC5B;IACF;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;IACxC;AAEA,IAAA,YAAY,CACV,MAAiC,EAAA;AAEjC,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YACxB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1C,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,KAAK;IACd;IAEQ,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;AACnD,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACnF,IAAI,CAAC,mBAAmB,EAAE;IAC5B;IAEQ,UAAU,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAC5B,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACnC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;AACvC,SAAA,CAAC;IACJ;IAEQ,YAAY,GAAA;AAClB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK;QACtC,IAAI,CAAC,SAAS,CAAC,IAAI;AAAE,YAAA,OAAO,IAAI;AAChC,QAAA,MAAM,IAAI,GAAG,SAAS,CAAC,IAAuC;AAC9D,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI;AAC1E,QAAA,MAAM,UAAU,GAAG,SAAS,CAAC,UAAuC;AACpE,QAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE;IAC3C;IAEQ,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE;QAClE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,MAAM;QACtD,IAAI,SAAS,GAAG,IAAI;AACpB,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE;YACrC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC;AACvF,YAAA,IAAI,SAAS;gBAAE;QACjB;QACA,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;QAC5D;aAAO;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACrF;IACF;IAEQ,+BAA+B,GAAA;AACrC,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;QACtB,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE;QACtB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE;AACrC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC;AACvB,gBAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;AACxB,aAAA,CAAC;QACJ;QACA,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE;AACzC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC;AAC3B,gBAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;AACxB,aAAA,CAAC;QACJ;IACF;+GAzGW,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iCAAiC,8JCzC9C,krDA+CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDTY,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,aAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,8BAAoB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,aAAA,EAC1D,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAA,CAAA,CAAA;;4FAExD,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAN7C,SAAS;+BACE,iCAAiC,EAAA,OAAA,EAElC,CAAC,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,iBAC3D,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAA,QAAA,EAAA,krDAAA,EAAA;;sBAGlE;;sBACA;;;;;"}