From 18308ad375e93a21ed569fe64c8f571e2b5fcfe7 Mon Sep 17 00:00:00 2001 From: jinchao <383321154@qq.com> Date: Fri, 11 Jul 2025 14:43:18 +0800 Subject: [PATCH] =?UTF-8?q?V0.37.1.250711=5Falpha:=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=BA=86=E4=B8=80=E7=B3=BB=E5=88=97=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Release/database/XNSim.db | Bin 1982464 -> 1982464 bytes .../components/configuration-config.js | 4 +- XNSimPortal/components/model-development.js | 22 ++++++--- XNSimPortal/routes/filesystem.js | 44 +++++++++--------- 4 files changed, 38 insertions(+), 32 deletions(-) diff --git a/Release/database/XNSim.db b/Release/database/XNSim.db index 5715766fe5cab2df7abd80c1e303a6d39e9eb09f..63635a9c444a2ef580d114d7b68ea6d7dabadd95 100644 GIT binary patch delta 657 zcmZwD&uIDu-1jrrgGq5no4c<9BK&=3zM^T{OhzBBXkI4;0(fuxl( zriSMz`+0^qh-P>30;@Gqb|{Xn2e^51zAX?E@2Tw?;$Vov{Zd zc{@L5FwIRlr$qjh(k2CkMM^p!|M^{MR24+^O=^@@6(pOJQw2jaeyzpEj$8~sW1SAS z*MVG4*W|d*Kb?9yYjn8_r_r@E-&xl)j}&=590g>va^ZHQ9#!k8xD4@eVnok%Nf?j>3JgoX81y-rpWSjhDnKj1>X`;Q+ziIN4XL>B1V zHz=)m`6Ip0B6Jq!as!OCx_2cAx|*&?V7Syc8kxQN7vvyDu>b%7 delta 340 zcmZo@sBCDcoFL7}HBrWyk!xeZ!g_9=wG6CmEeyOLxa>CbG#GKQG?z0;PIl_@*nG7s zk#X|#ZsqBH(OjIeN>)mlc_j*osYUtmx%nxnIq?~(iA5zzsfi^DC7VrpE*xg&XMHxE zJ%CYuyODw10oL|sp^V#~g)&9@GjdFKSjx0t+`vS^z{tuNh%6c%rFj@64L$3{#W|+m zUdALn-EbMxBnhYrLn|Z8##kv{po;WHaj23L+)!BqD-*-*>y|Txc`&DN@0-s4fob#h zJs+69b4?83ZQu8s35c12m<5PgftU@5*@2h?h&h3n3y8UamiK|}ABY8jSP+PX kfLIuaMSxfoh{b?d9Ec@=SQ3b(fLI!cWw!78E$ie007UVMp#T5? diff --git a/XNSimPortal/components/configuration-config.js b/XNSimPortal/components/configuration-config.js index bcda69a..085b399 100644 --- a/XNSimPortal/components/configuration-config.js +++ b/XNSimPortal/components/configuration-config.js @@ -1864,7 +1864,7 @@ class ConfigurationConfig extends HTMLElement { let serviceList = []; try { - const response = await fetch('/api/services'); + const response = await fetch('/api/service-dev/services'); if (!response.ok) throw new Error('B03042015: 获取服务列表失败'); serviceList = await response.json(); serviceSelect.innerHTML = '' + @@ -1886,7 +1886,7 @@ class ConfigurationConfig extends HTMLElement { } try { - const response = await fetch(`/api/service-versions/${className}`); + const response = await fetch(`/api/service-dev/service-versions/${className}`); if (!response.ok) throw new Error('B03042016: 获取版本列表失败'); const versions = await response.json(); versionSelect.innerHTML = '' + diff --git a/XNSimPortal/components/model-development.js b/XNSimPortal/components/model-development.js index 2557923..9b7a2ca 100644 --- a/XNSimPortal/components/model-development.js +++ b/XNSimPortal/components/model-development.js @@ -919,12 +919,12 @@ class ModelDevelopment extends HTMLElement {
@@ -1299,11 +1299,19 @@ class ModelDevelopment extends HTMLElement { const option = document.createElement('option'); option.value = i.toString(); option.textContent = i.toString(); - if (this.currentVersion.RunNode === i.toString()) { + + // 使用宽松比较,处理数字和字符串类型 + if (this.currentVersion.RunNode == i.toString()) { option.selected = true; } + runNodeSelect.appendChild(option); } + + // 如果没有选中任何选项,默认选择第一个 + if (runNodeSelect.selectedIndex === -1 && maxNode > 0) { + runNodeSelect.selectedIndex = 0; + } } /** diff --git a/XNSimPortal/routes/filesystem.js b/XNSimPortal/routes/filesystem.js index 0b36859..8c35bcb 100644 --- a/XNSimPortal/routes/filesystem.js +++ b/XNSimPortal/routes/filesystem.js @@ -854,35 +854,33 @@ async function findStructDefinition(headerFilePath, structName) { continue; } - // 匹配成员声明 - // 基础类型: int, double, float, char, short, long, unsigned, etc. - // 结构体指针: struct xxx_S* - // 结构体: struct xxx_S - const memberRegex = /^(?:const\s+)?(?:struct\s+([A-Za-z_][A-Za-z0-9_]*)\s*)?(?:unsigned\s+)?(?:long\s+)?(?:int\s+)?(?:char\s+)?(?:short\s+)?(?:float\s+)?(?:double\s+)?(?:void\s*)?(?:[A-Za-z_][A-Za-z0-9_]*\s*)?(\*?)\s*([A-Za-z_][A-Za-z0-9_]*)\s*(?:\[[^\]]*\])?\s*;?\s*$/; - + /** + * 匹配结构体成员声明,包括如下形式: + * int a; + * double b; + * struct input_hydraulic_S input; + * struct input_hydraulic_S *input; + * float arr[10]; + * const char *name; + */ + // 新正则:分组更清晰,支持struct和基础类型指针 + const memberRegex = /^(?:const\s+)?(?:(struct)\s+([A-Za-z_][A-Za-z0-9_]*)\s*)?([A-Za-z_][A-Za-z0-9_\s]*?)?(\*?)\s*([A-Za-z_][A-Za-z0-9_]*)\s*(?:\[[^\]]*\])?\s*;?\s*$/; + const memberMatch = trimmedLine.match(memberRegex); if (memberMatch) { - const structType = memberMatch[1]; // 结构体类型名 - const isPointer = memberMatch[2]; // 是否为指针 - const memberName = memberMatch[3]; // 成员名 - - // 构建类型信息 + const isStruct = memberMatch[1]; // struct关键字 + const structType = memberMatch[2]; // 结构体类型名 + const baseType = memberMatch[3] ? memberMatch[3].trim() : ''; + const isPointer = memberMatch[4]; // * + const memberName = memberMatch[5]; // 变量名 + let type = ''; - if (structType) { - // 结构体类型 + if (isStruct && structType) { type = `struct ${structType}${isPointer ? '*' : ''}`; } else { - // 基础类型,需要从原始行中提取 - const typeMatch = trimmedLine.match(/^(?:const\s+)?(?:unsigned\s+)?(?:long\s+)?(?:int\s+)?(?:char\s+)?(?:short\s+)?(?:float\s+)?(?:double\s+)?(?:void\s*)?(?:[A-Za-z_][A-Za-z0-9_]*\s*)?/); - if (typeMatch) { - type = typeMatch[0].trim() + (isPointer ? '*' : ''); - } else { - type = 'unknown'; - } + type = `${baseType}${isPointer ? '*' : ''}`.replace(/\s+/g, ' ').trim(); } - - // 拼接类型和成员名 - const memberString = `${type} ${memberName}`; + const memberString = `${type} ${memberName}`.trim(); memberNames.push(memberString); } }