import { Resolver } from '../Entity'; import { config, dataTypesMap, Entity, Enum, View, LEVEL_ENUM, utils } from '../..'; import { NameGroup, filterProperty, getExpression, getParamFromResolver, genEnumSelectBlock, genCallComponentLogic, genCallInterface } from '.'; export function genGetTemplate(entity: Entity, nameGroup: NameGroup) { const propertyList = entity.propertyList .filter(filterProperty('inDetail')); return ` ${propertyList.map((property) => { let formItem = ` `; if (dataTypesMap[property.typeKey].type === 'enum') formItem += ''; else formItem += ''; formItem += ` \n`; return formItem; }).join('')} `; } function genLoadLogic(resolver: Resolver, nameGroup: NameGroup) { const resSchema = { $ref: `#/${resolver.entity.dataNode.service.id}/${resolver.entity.id}`, }; const idParam = getParamFromResolver(resolver, 'id'); return { level: 'logic', expanded: false, name: nameGroup.load, description: '', params: [] as any, returns: [] as any, body: [ { level: 'logicNode', type: 'Start', label: '开始', }, { level: 'logicNode', type: 'AssignmentExpression', label: '赋值', operator: '=', left: { level: 'expressionNode', type: 'Identifier', name: nameGroup.model, }, right: genCallInterface(resolver.interface, [ { parentAttr: 'params', level: LEVEL_ENUM.param, type: 'CallInterParam', name: '', callInterParam: `#/${idParam.id}`, callInterParamValue: { parentAttr: 'callInterParamValue', level: 'expressionNode', type: 'Identifier', name: 'id', }, }, ]), }, { level: 'logicNode', type: 'End', label: '结束', }, ], playground: [] as any, serviceType: 'web', }; } export function genH5GetTemplate(entity: Entity, nameGroup: NameGroup) { const propertyList = entity.propertyList .filter(filterProperty('inDetail')); return ` ${propertyList.map((property) => { let formItem = ` '; else formItem += ' :value="' + getExpression(property, `${nameGroup.model}.${property.name}`) + '">'; formItem += ` \n`; return formItem; }).join('')} `; } export function genGetBlock(entity: Entity, view: View) { const resolver = entity.resolvers.find((item) => item.name.startsWith('get') && !item.name.startsWith('getAll')); const modelSchema = { $ref: resolver.entity.schemaRef, }; const existingNameSets = { viewLogic: new Set(view.$def.logics.map((logic) => logic.name)), }; const nameGroup: NameGroup = { model: utils.firstLowerCase(resolver.entity.name), }; nameGroup.load = utils.unique('load', existingNameSets.viewLogic); return ` { "params": [ { "level": "param", "type": "Identifier", "name": "id", "description": "", "schema": { "type": "integer", "format": "long", "isLeaf": true }, "isLeaf": true, "init": { "type": "Identifier", "name": "undefined" } } ], "variables": [{ "level": "variable", "type": "Identifier", "name": "${nameGroup.model}", "schema": ${JSON.stringify(modelSchema)} }], "lifecycles": [ { "level": "lifecycle", "name": "created", "logicId": "${nameGroup.load}" } ], "logics": [ ${JSON.stringify(genLoadLogic(resolver, nameGroup))} ] } `; } export default genGetBlock;