UNPKG

@lcap/nasl

Version:

NetEase Application Specific Language

593 lines (589 loc) 30.5 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.genLogicParamWithDefaultValue = exports.genFormDesignerSelectLoadLogic = exports.genEditTableColumnComponent = exports.genCurdEditMultipleKeyBlock = void 0; /** * 1. 从genCurdEditTableBlock组件复制,算是工行的定制化需求多主键(联合主键的支持) * 2. 改动了原来判断id的逻辑 * 3. 先简单做后续在看如何优化 */ const utils = __importStar(require("../utils")); const concepts_1 = require("../concepts"); const utils_1 = require("./utils"); const _1 = require("."); function genFilterTemplate(entity, nameGroup, selectNameGroupMap) { const dataSource = entity.parentNode; const properties = entity.properties.filter((0, _1.filterProperty)('inFilter')); return ` <u-linear-layout> <u-form layout="inline"> ${properties .map((property) => { const vModel = `${nameGroup.viewVariableFilter}.${property.name}`; const label = (property.label || property.name).replace(/"/g, '&quot;'); let formItem = `<u-form-item layout="center"><template #label><u-text text="${label}"></u-text></template>`; const { typeAnnotation } = property || {}; const { typeName: propertyTypeName, typeNamespace: propertyTypeNamespace } = typeAnnotation || {}; const propertyTypeMaxLength = Number(property.rules .find((item) => item.indexOf('max') > -1) ?.split('(')[1] .slice(0, -1)) || 0; if (property.relationEntity) { // 有外键关联 const relationEntity = dataSource?.findEntityByName(property.relationEntity); if (relationEntity) { const relationProperty = relationEntity.properties.find((prop) => prop.name === property.relationProperty); const displayedProperty = (0, _1.getFirstDisplayedProperty)(relationEntity); if (displayedProperty) { const lowerEntityName = utils.firstLowerCase(relationEntity.name); // 存在多个属性关联同一个实体的情况,因此加上属性名用以唯一标识 const key = [property.name, relationEntity.name].join('-'); const selectNameGroup = selectNameGroupMap.get(key); let dataSourceValue = `(params) => ${selectNameGroup.logic}(elements.$ce.page, elements.$ce.size)`; formItem += ` <u-select :clearable="true" placeholder="请选择${label}" :dataSource="${dataSourceValue}" :pageSize="50" textField="${lowerEntityName}.${displayedProperty.name}" valueField="${lowerEntityName}.${relationProperty.name}" :pagination="true" v-model="${vModel}" :emptyValueIsNull="true"> </u-select> `; } else return ''; } else return ''; } else if (propertyTypeName === 'Boolean') { formItem += ` <u-select :clearable="true" v-model="${vModel}" placeholder="请选择${label}" :emptyValueIsNull="true"> <u-select-item :value="true" text=""><u-text text=""></u-text></u-select-item> <u-select-item :value="false" text=""><u-text text=""></u-text></u-select-item> </u-select> `; } else if (propertyTypeName === 'Integer' || propertyTypeName === 'Long') { formItem += `<u-number-input v-model="${vModel}" placeholder="请输入${label}"></u-number-input>`; } else if (propertyTypeName === 'Double') { formItem += `<u-number-input v-model="${vModel}" :precision="0" :step="0" placeholder="请输入${label}"></u-number-input>`; } else if (propertyTypeName === 'Decimal') { formItem += `<u-number-input v-model="${vModel}" :precision="0" :step="0" placeholder="请输入${label}"></u-number-input>`; } else if (propertyTypeName === 'String' && propertyTypeMaxLength > 256) { formItem += `<u-textarea v-model="${vModel}" placeholder="请输入${label}" :emptyValueIsNull="true"></u-textarea>`; } else if (propertyTypeName === 'Date') { formItem += `<u-date-picker :clearable="true" :value.sync="${vModel}" placeholder="请选择${label}" :emptyValueIsNull="true"></u-date-picker>`; } else if (propertyTypeName === 'Time') { formItem += `<u-time-picker :value.sync="${vModel}" placeholder="请选择${label}" :emptyValueIsNull="true"></u-time-picker>`; } else if (propertyTypeName === 'DateTime') { formItem += `<u-date-time-picker :clearable="true" :value.sync="${vModel}" placeholder="请选择${label}" :emptyValueIsNull="true"></u-date-time-picker>`; } else { const namespaceArr = propertyTypeNamespace?.split?.('.') || []; const type = namespaceArr.pop(); if (type === 'enums') { const Enum = dataSource.app.findNodeByCompleteName(`${propertyTypeNamespace}.${propertyTypeName}`); formItem += (0, _1.genEnumSelectBlock)(Enum, `${vModel}`, '', `请选择${label}`, true); } else { formItem += `<u-input v-model="${vModel}" placeholder="请输入${label}" :emptyValueIsNull="true"></u-input>`; } } formItem += `</u-form-item>`; return formItem; }) .join('')} <u-form-item layout="center" label-size="auto"> <u-button color="primary" @click="${nameGroup.viewLogicReload}">查 询</u-button> </u-form-item> </u-form> </u-linear-layout> <u-linear-layout mode="flex" alignment="start" justify="end"><u-button color="primary" @click="${nameGroup.viewLogicCreate}">创 建</u-button></u-linear-layout> `; } function genSaveModalTemplate(entity, nameGroup, selectNameGroupMap) { const dataSource = entity.parentNode; const properties = entity.properties.filter((0, _1.filterProperty)('inForm')); return ` <u-modal ref="${nameGroup.viewElementSaveModal}"> <template #title> <div>创建</div> </template> <template #body> <u-form ref="${nameGroup.viewElementSaveModalForm}"> ${properties .map((property) => { const vModel = `${nameGroup.viewVariableInput}.${property.name}`; const label = (property.label || property.name).replace(/"/g, '&quot;'); const required = !!property.required; const rules = []; if (property.rules && property.rules.length) { property.rules.forEach((rule) => rules.push(rule)); } if (required) rules.push('required'); const rulesStr = rules.join(' | '); let formItem = `<u-form-item ${required ? ':required="true"' : ''} ${rulesStr.length ? `rules="${rulesStr}"` : ''} layout="center" ><template #label><u-text text="${label}"></u-text></template>`; const { typeAnnotation } = property || {}; const { typeName: propertyTypeName, typeNamespace: propertyTypeNamespace } = typeAnnotation || {}; const propertyTypeMaxLength = Number(property.rules .find((item) => item.indexOf('max') > -1) ?.split('(')[1] .slice(0, -1)) || 0; if (property.relationEntity) { // 有外键关联 const relationEntity = dataSource?.findEntityByName(property.relationEntity); if (relationEntity) { const relationProperty = relationEntity.properties.find((prop) => prop.name === property.relationProperty); const displayedProperty = (0, _1.getFirstDisplayedProperty)(relationEntity); if (displayedProperty) { const lowerEntityName = utils.firstLowerCase(relationEntity.name); // 存在多个属性关联同一个实体的情况,因此加上属性名用以唯一标识 const key = [property.name, relationEntity.name].join('-'); const selectNameGroup = selectNameGroupMap.get(key); let dataSourceValue = `(params) => ${selectNameGroup.logic}(elements.$ce.page, elements.$ce.size)`; formItem += ` <u-select :clearable="true" placeholder="请选择${label}" :dataSource="${dataSourceValue}" :pageSize="50" textField="${lowerEntityName}.${displayedProperty.name}" valueField="${lowerEntityName}.${relationProperty.name}" :pagination="true" v-model="${vModel}" :emptyValueIsNull="true"> </u-select> `; } else return ''; } else return ''; } else if (propertyTypeName === 'Boolean') { formItem += ` <u-select :clearable="true" v-model="${vModel}" placeholder="请选择${label}" :emptyValueIsNull="true"> <u-select-item :value="true" text="是">是</u-select-item> <u-select-item :value="false" text="否">否</u-select-item> </u-select>`; } else if (propertyTypeName === 'Integer' || propertyTypeName === 'Long') { formItem += `<u-number-input v-model="${vModel}" placeholder="请输入${label}"></u-number-input>`; } else if (propertyTypeName === 'Double') { formItem += `<u-number-input v-model="${vModel}" :precision="0" :step="0" placeholder="请输入${label}"></u-number-input>`; } else if (propertyTypeName === 'Decimal') { formItem += `<u-number-input v-model="${vModel}" :precision="0" :step="0" placeholder="请输入${label}"></u-number-input>`; } else if (propertyTypeName === 'String' && propertyTypeMaxLength > 256) { formItem += `<u-textarea v-model="${vModel}" placeholder="请输入${label}" :emptyValueIsNull="true"></u-textarea>`; } else if (propertyTypeName === 'Date') { formItem += `<u-date-picker :clearable="true" :value.sync="${vModel}" placeholder="请选择${label}" :emptyValueIsNull="true"></u-date-picker>`; } else if (propertyTypeName === 'Time') { formItem += `<u-time-picker :value.sync="${vModel}" placeholder="请选择${label}" :emptyValueIsNull="true"></u-time-picker>`; } else if (propertyTypeName === 'DateTime') { formItem += `<u-date-time-picker :clearable="true" :value.sync="${vModel}" placeholder="请选择${label}" :emptyValueIsNull="true"></u-date-time-picker>`; } else { const namespaceArr = propertyTypeNamespace?.split?.('.') || []; const type = namespaceArr.pop(); if (type === 'enums') { const Enum = dataSource.app.findNodeByCompleteName(`${propertyTypeNamespace}.${propertyTypeName}`); formItem += (0, _1.genEnumSelectBlock)(Enum, `${vModel}`, '', `请选择${label}`, true); } else { formItem += `<u-input v-model="${vModel}" placeholder="请输入${label}" :emptyValueIsNull="true"></u-input>`; } } formItem += `</u-form-item>\n`; return formItem; }) .join('')} </u-form> </template> <template #foot> <u-linear-layout> <u-button color="primary" @click="${nameGroup.viewLogicSubmit}()">立即创建</u-button> </u-linear-layout> </template> </u-modal>`; } function genInitLogic(nameGroup) { return utils_1.NaslNode.Logic({ name: nameGroup.viewLogicInit, description: '', params: [], returns: [], variables: [], body: [ utils_1.NaslLogicItem.Start, utils_1.NaslLogicItem.CallFunction({ calleeName: 'Clear', arguments: [ utils_1.NaslLogicItem.Argument({ keyword: 'struct', expression: utils_1.NaslLogicItem.Identifier({ name: nameGroup.viewVariableFilter, }), }), utils_1.NaslLogicItem.Argument({ keyword: 'mode', expression: utils_1.NaslLogicItem.StringLiteral({ value: 'deep', }), }), ], }), utils_1.NaslLogicItem.End, ], playground: [], }); } function genCreateLogic(nameGroup) { return utils_1.NaslNode.Logic({ name: nameGroup.viewLogicCreate, description: '', params: [], returns: [], variables: [], body: [ utils_1.NaslLogicItem.Start, utils_1.NaslLogicItem.Assignment({ left: utils_1.NaslLogicItem.Identifier({ name: nameGroup.viewVariableInput, }), right: utils_1.NaslLogicItem.CallFunction({ calleeName: 'Clone', arguments: [ utils_1.NaslLogicItem.Argument({ keyword: 'obj', expression: utils_1.NaslLogicItem.Identifier({ name: nameGroup.viewVariableEntity, }), }), ], }), }), (0, _1.genCallComponentLogic)(nameGroup.viewElementSaveModal, 'open'), utils_1.NaslLogicItem.End, ], playground: [], }); } function genCurdEditMultipleKeyBlock(entity, oldNode) { const likeComponent = oldNode?.likeComponent; const dataSource = entity.parentNode; const module = dataSource.app; const viewElementMainView = likeComponent.getViewElementUniqueName('tableView'); const nameGroup = (0, _1.genUniqueQueryNameGroup)(module, likeComponent, viewElementMainView); nameGroup.viewElementMainView = viewElementMainView; nameGroup.viewElementSaveModal = likeComponent.getViewElementUniqueName('saveModal'); nameGroup.viewElementSaveModalForm = likeComponent.getViewElementUniqueName('saveModalForm'); nameGroup.viewLogicRemove = likeComponent.getLogicUniqueName('remove'); nameGroup.viewLogicInit = likeComponent.getLogicUniqueName('init'); nameGroup.viewLogicCreate = likeComponent.getLogicUniqueName('create'); nameGroup.viewLogicSubmit = likeComponent.getLogicUniqueName('submit'); nameGroup.viewLogicBlurUpdate = likeComponent.getLogicUniqueName('blurUpdate'); nameGroup.viewLogicReload = likeComponent.getLogicUniqueName('reload'); nameGroup.viewVariableEntity = likeComponent.getVariableUniqueName(utils.firstLowerCase(entity.name)); nameGroup.viewVariableInput = likeComponent.getVariableUniqueName('input'); nameGroup.viewVariableFilter = likeComponent.getVariableUniqueName('filter'); // 收集所有和本实体关联的实体 const entitySet = new Set(); entitySet.add(entity); const selectNameGroupMap = new Map(); const newLogics = []; const newLoadSelectLogics = []; entity.properties.forEach((property) => { // 有外键关联 if (property.relationEntity) { const relationEntity = dataSource?.findEntityByName(property.relationEntity); if (relationEntity) { const displayedProperty = (0, _1.getFirstDisplayedProperty)(relationEntity); if (displayedProperty) { entitySet.add(relationEntity); const viewElementSelect = likeComponent.getViewElementUniqueName('select'); const selectNameGroup = (0, _1.genUniqueQueryNameGroup)(module, likeComponent, viewElementSelect, false, relationEntity.name); selectNameGroup.viewElementSelect = viewElementSelect; // 存在多个属性关联同一个实体的情况,因此加上属性名用以唯一标识 const key = [property.name, relationEntity.name].join('-'); selectNameGroupMap.set(key, selectNameGroup); const newLogic = (0, _1.genQueryLogic)([relationEntity], selectNameGroup, false, false, module); newLogics.push(newLogic); newLoadSelectLogics.push((0, _1.genLoadSelectLogic)(relationEntity, selectNameGroup, newLogic)); } } } }); const allEntities = [...entitySet]; const entityLogic = (0, _1.genQueryLogic)(allEntities, nameGroup, true, true, module); newLogics.push(entityLogic); return `<template> <u-linear-layout direction="vertical"> ${genFilterTemplate(entity, nameGroup, selectNameGroupMap)} ${(0, _1.genEditTableTemplate)(entity, nameGroup, entityLogic, selectNameGroupMap, 'genCurdEditMultipleKeyBlock')} ${genSaveModalTemplate(entity, nameGroup, selectNameGroupMap)} </u-linear-layout> </template> <definition> { "viewVariables": [ { "concept": "Variable", "name": "${nameGroup.viewVariableEntity}", "typeAnnotation": ${JSON.stringify(utils_1.NaslTypeAnnotation.Reference({ typeNamespace: entity.getNamespace(), typeName: entity.name, }))} }, { "concept": "Variable", "name": "${nameGroup.viewVariableInput}", "typeAnnotation": ${JSON.stringify(utils_1.NaslTypeAnnotation.Reference({ typeNamespace: entity.getNamespace(), typeName: entity.name, }))} }, { "concept": "Variable", "name": "${nameGroup.viewVariableFilter}", "typeAnnotation": ${JSON.stringify(utils_1.NaslTypeAnnotation.Reference({ typeNamespace: entity.getNamespace(), typeName: entity.name, }))} } ], "viewLogics": [ ${JSON.stringify((0, _1.genEditTableLoadLogic)(entity, nameGroup, entityLogic, true))}, ${JSON.stringify((0, _1.genTableRemoveLogic)(entity, nameGroup))}, ${JSON.stringify(genInitLogic(nameGroup))}, ${JSON.stringify(genCreateLogic(nameGroup))}, ${JSON.stringify((0, _1.genSubmitLogic)(entity, nameGroup))}, ${JSON.stringify((0, _1.genBlurUpdateLogic)(entity, nameGroup))}, ${JSON.stringify((0, _1.genReloadLogic)(nameGroup))} ${newLoadSelectLogics.map((logic) => `,${JSON.stringify(logic)}`).join('\n')} ], "viewBindEvents": [ { "concept": "BindEvent", "arguments": [], "name": "created", "calleeNamespace": "", "calleeName": "${nameGroup.viewLogicInit}" } ], "logics": ${JSON.stringify(newLogics)} } </definition> `; } exports.genCurdEditMultipleKeyBlock = genCurdEditMultipleKeyBlock; /** * 根据实体属性生成表格列模板 * @param property 实体属性 */ function genEditTableColumnComponent(app, entity, property, view, nameGroup) { const dataSource = entity.parentNode; const valueExpression = `${nameGroup.valuePrefixExpression}.${property.name}`; const module = app; const newLogics = []; const newLoadSelectLogics = []; const genEditComponent = (property) => { const label = (property.label || property.name).replace(/"/g, '&quot;'); let formItem = ''; const propertyTypeName = property.typeAnnotation.typeName; const propertyTypeNamespace = property.typeAnnotation.typeNamespace; const propertyTypeMaxLength = Number(property.rules ?.find?.((item) => item.indexOf('max') > -1) ?.split('(')[1] .slice(0, -1)) || 0; if (property.relationEntity) { // 有外键关联 const relationEntity = dataSource?.findEntityByName(property.relationEntity); if (relationEntity) { const relationProperty = relationEntity.properties.find((prop) => prop.name === property.relationProperty); const displayedProperty = (0, _1.getFirstDisplayedProperty)(relationEntity); if (displayedProperty) { const lowerEntityName = utils.firstLowerCase(relationEntity.name); const selectNameGroup = { viewLogicLoad: nameGroup.viewElementSelectLogic, viewElementSelect: '', }; let dataSourceValue = selectNameGroup.viewLogicLoad; if (!nameGroup.viewElementSelectLogic) { const viewElementSelect = view.getViewElementUniqueName('select'); const selectNameGroup = (0, _1.genUniqueQueryNameGroup)(module, view, viewElementSelect, false, relationEntity.name); selectNameGroup.viewElementSelect = viewElementSelect; const newLogic = (0, _1.genQueryLogic)([relationEntity], selectNameGroup, false, false, module); newLogics.push(newLogic); newLoadSelectLogics.push((0, _1.genLoadSelectLogic)(relationEntity, selectNameGroup, newLogic)); dataSourceValue = `(params) => ${selectNameGroup.viewLogicLoad}(elements.$ce.page, elements.$ce.size)`; } formItem += ` <u-select :clearable="true" placeholder="请选择${label}" :dataSource="${dataSourceValue}" :pageSize="50" :autofocus="true" :opened="true" appendTo="body" @blur="${nameGroup.viewLogicBlurUpdate}" @select="${nameGroup.viewLogicBlurUpdate}" textField="${lowerEntityName}.${displayedProperty.name}" valueField="${lowerEntityName}.${relationProperty.name}" :pagination="true" :value.sync="${valueExpression}" :emptyValueIsNull="true"> </u-select> `; } else return ''; } else return ''; } else if (propertyTypeName === 'Boolean') { formItem += `<u-select :clearable="true" :value.sync="${valueExpression}" placeholder="请选择${label}" :autofocus="true" :opened="true" appendTo="body" @blur="${nameGroup.viewLogicBlurUpdate}" @select="${nameGroup.viewLogicBlurUpdate}" :emptyValueIsNull="true"> <u-select-item :value="true" text="">是</u-select-item> <u-select-item :value="false" text="">否</u-select-item> </u-select>`; } else if (propertyTypeName === 'Integer' || propertyTypeName === 'Long') { formItem = `<u-number-input :value.sync="${valueExpression}" placeholder="请输入${label}" :autofocus="true" @blur="${nameGroup.viewLogicBlurUpdate}"></u-number-input>`; } else if (propertyTypeName === 'Double') { formItem = `<u-number-input :value.sync="${valueExpression}" :precision="0" :step="0" placeholder="请输入${label}" :autofocus="true" @blur="${nameGroup.viewLogicBlurUpdate}"></u-number-input>`; } else if (propertyTypeName === 'Decimal') { formItem = `<u-number-input :value.sync="${valueExpression}" :precision="0" :step="0" placeholder="请输入${label}" :autofocus="true" @blur="${nameGroup.viewLogicBlurUpdate}"></u-number-input>`; } else if (propertyTypeName === 'String' && propertyTypeMaxLength > 256) { formItem = `<u-validator placement="bottom" display="appear" @blur-valid="${nameGroup.viewLogicBlurUpdate}" style="width:100%"> <u-textarea :value.sync="${valueExpression}" placeholder="请输入${label}" :autofocus="true" size="full" :emptyValueIsNull="true"></u-textarea> </u-validator>`; } else if (propertyTypeName === 'Date') { formItem = `<u-date-picker :clearable="true" :value.sync="${valueExpression}" placeholder="请选择${label}" appendTo="body" :autofocus="true" :opened="true" @blur="${nameGroup.viewLogicBlurUpdate}" :emptyValueIsNull="true"></u-date-picker>`; } else if (propertyTypeName === 'Time') { formItem = `<u-time-picker :value.sync="${valueExpression}" placeholder="请选择${label}" appendTo="body" :autofocus="true" @blur="${nameGroup.viewLogicBlurUpdate}" :emptyValueIsNull="true"></u-time-picker>`; } else if (propertyTypeName === 'DateTime') { formItem = `<u-date-time-picker :clearable="true" :value.sync="${valueExpression}" placeholder="请选择${label}" appendTo="body" :autofocus="true" :opened="true" @blur="${nameGroup.viewLogicBlurUpdate}" :emptyValueIsNull="true"></u-date-time-picker>`; } else { const namespaceArr = (propertyTypeNamespace && propertyTypeNamespace.split('.')) || []; const type = namespaceArr.pop(); if (type === 'enums') { const enumeration = app.findNodeByCompleteName(`${propertyTypeNamespace}.${propertyTypeName}`); const namespace = enumeration?.getNamespace() || ''; const name = enumeration?.name || ''; const enumTypeAnnotationStr = `__enumTypeAnnotation_${namespace}.${name}`; formItem += `<u-select :clearable="true" :dataSource="$utils.EnumToList('${enumTypeAnnotationStr}')" :pageSize="50" :value.sync="${valueExpression}" placeholder="请选择${label}" :autofocus="true" :opened="true" appendTo="body" @blur="${nameGroup.viewLogicBlurUpdate}" @select="${nameGroup.viewLogicBlurUpdate}" :emptyValueIsNull="true"> </u-select>`; } else { formItem = `<u-validator placement="bottom" display="appear" @blur-valid="${nameGroup.viewLogicBlurUpdate}" style="width:100%" appendTo="body"> <u-input :value.sync="${valueExpression}" placeholder="请输入${label}" :autofocus="true" size="full" :emptyValueIsNull="true"></u-input> </u-validator>`; } } return `<template #editcell="current"> <u-linear-layout gap="small"> ${formItem} </u-linear-layout> </template>`; }; return `<template>${genEditComponent(property)}</template> <definition> { "viewLogics": [ ${JSON.stringify((0, _1.genBlurUpdateLogic)(entity, nameGroup))} ${newLoadSelectLogics.map((logic) => `,${JSON.stringify(logic)}`).join('\n')} ], "logics": ${JSON.stringify(newLogics)} } </definition>`; } exports.genEditTableColumnComponent = genEditTableColumnComponent; // 生成单选、多选、选择器的数据源 function genFormDesignerSelectLoadLogic(entity, nameGroup, newLogic, defaultValue = {}) { const moduleNode = entity.app; const moduleNamespace = moduleNode?.getNamespace(); const params = []; Object.entries(defaultValue).forEach(([key, value], index) => { params.push(genLogicParamWithDefaultValue(`${newLogic.params[index].name}`, value)); }); return { logic: utils_1.NaslNode.Logic({ name: nameGroup.viewLogicLoad, params: [ utils_1.NaslNode.Param({ name: 'params', typeAnnotation: utils_1.NaslUITypeAnnotation.DataSourceParams, }), ], returns: [ utils_1.NaslNode.Return({ name: 'result', typeAnnotation: null, }), ], variables: [], body: [ utils_1.NaslLogicItem.Start, utils_1.NaslLogicItem.Assignment({ left: utils_1.NaslLogicItem.Identifier({ name: 'result', }), right: utils_1.NaslLogicItem.CallLogic({ calleeNamespace: `${moduleNamespace}.logics`, calleeName: newLogic.name, arguments: params, }), }), utils_1.NaslLogicItem.End, ], }), params }; } exports.genFormDesignerSelectLoadLogic = genFormDesignerSelectLoadLogic; function genLogicParamWithDefaultValue(paramIdOrName, defaultValue) { const genArgumentExpression = (defaultValue) => { if (typeof defaultValue === 'string') { return new concepts_1.StringLiteral({ value: defaultValue }); } else if (typeof defaultValue === 'number') { return new concepts_1.NumericLiteral({ value: defaultValue.toString() }); } }; return utils_1.NaslLogicItem.Argument({ keyword: paramIdOrName, expression: genArgumentExpression(defaultValue), }); } exports.genLogicParamWithDefaultValue = genLogicParamWithDefaultValue; //# sourceMappingURL=genCurdEditMultipleKeyBlock.js.map