import MetaFieldComponent from "../types/MetaField/MetaFieldComponent"; import FormComponent from "../types/Form/FormComponent"; import {FormPartComponent} from "../types/FormPart/FormPartComponent"; // export function forEachFieldCmp(formCmp: FormComponent, onEachFieldCmp: Function, onEachFormPartCmp?: Function): void { if (!formCmp || !formCmp.sub_cmps || formCmp.sub_cmps.length === 0 || formCmp.sub_cmps[0].cmp_type !== 'FormPart') return formCmp.sub_cmps.forEach((formPartCmp: FormPartComponent, formPartIndex: number) => { onEachFormPartCmp && onEachFormPartCmp(formPartCmp, formPartIndex, formCmp) // @ts-ignore formPartCmp.sub_cmps.forEach((fieldCmp: MetaData, fieldIndex: number) => { onEachFieldCmp && onEachFieldCmp(fieldCmp, [formPartIndex, fieldIndex], formCmp) }) }) } export function fieldHasDataSource(fieldCmp: MetaFieldComponent): boolean { return !!fieldCmp.cmp_data.datasourcename } export function getExactFieldName(fieldCmp: MetaFieldComponent, isMultiForm: boolean): string { return isMultiForm ? fieldCmp.cmp_data.field_name_for_multi : fieldCmp.cmp_data.field_name } export function isMultiForm(formCmp: FormComponent): boolean { return formCmp.cmp_data.formViewType === 1 } // export function isCrossingOrigin() { // let topWindow = false; // //判断是否跨域了 // try { // let a = window.top.window.innerHTML; // topWindow = true; // } catch (e) { // topWindow = false; // } // return topWindow // } export function getFieldCmpByFieldName(fieldName: string, formCmp: FormComponent): MetaFieldComponent { // @ts-ignore let result: MetaData = null forEachFieldCmp(formCmp, (fieldCmp: MetaFieldComponent) => { if (result) return const cmpFieldName = isMultiForm(formCmp) ? fieldCmp.cmp_data.field_name_for_multi : fieldCmp.cmp_data.field_name if (fieldName === cmpFieldName) { result = fieldCmp } }) return result }