import { Schema } from '..'; import { basicTypeMap, basicTypeList } from './basicTypes'; import { systemTypeList, systemTypeMap } from './systemTypes'; import { getGenericList } from './genericTypes'; import { cloneDeep } from 'lodash'; export const dataTypeList: Array<{ title: string, children: Array<{ kind: string, text: string, value: string }> }> = [ { title: '基础类型', children: basicTypeList }, { title: '自定义类型', children: [] }, { title: '平台类型', children: systemTypeList }, ]; export const dataTypesMap: { [name: string]: Schema } = { ...basicTypeMap, ...systemTypeMap, }; export function updateDataTypeList() { dataTypeList[1].children = Object.keys(dataTypesMap) .filter((key) => !key.includes('#/basicTypes') && !key.includes('#/systemTypes') && !key.includes('#/genericTypes')) .map((key) => { const dataType = dataTypesMap[key]; return { kind: (dataType as any).level, text: dataType.name, value: key }; }); } export function properties2PropertyList(definition: any) { if (!definition) return definition; definition = cloneDeep(definition); if (definition.properties) { const propertyList: any[] = definition.propertyList = []; Object.values(definition.properties).forEach((item) => { propertyList.push(properties2PropertyList(item)); }); } if (definition.items) { definition.items = properties2PropertyList(definition.items); } return definition; } export async function updateGenericTypeList() { const datatypes = await getGenericList(); dataTypeList[2].children = datatypes.genericTypeList.concat(dataTypeList[2].children); Object.assign(dataTypesMap, datatypes.genericTypemap); } export function findDataTypeDescription(schema: Schema) { let i = 0; while (i < dataTypeList.length) { const dlist = dataTypeList[i]; const finded = dlist.children.find((type) => type.value === schema.typeKey); if (finded) { return finded; } i++; } } export function isBasicType(schema: Schema) { return !!dataTypeList[0].children.find((type) => type.value === schema.typeKey); }