V0.37.1.250711_alpha:修复了一系列问题

This commit is contained in:
jinchao 2025-07-11 14:43:18 +08:00
parent b1f1c4970f
commit 18308ad375
4 changed files with 38 additions and 32 deletions

Binary file not shown.

View File

@ -1864,7 +1864,7 @@ class ConfigurationConfig extends HTMLElement {
let serviceList = []; let serviceList = [];
try { try {
const response = await fetch('/api/services'); const response = await fetch('/api/service-dev/services');
if (!response.ok) throw new Error('B03042015: 获取服务列表失败'); if (!response.ok) throw new Error('B03042015: 获取服务列表失败');
serviceList = await response.json(); serviceList = await response.json();
serviceSelect.innerHTML = '<option value="">请选择服务</option>' + serviceSelect.innerHTML = '<option value="">请选择服务</option>' +
@ -1886,7 +1886,7 @@ class ConfigurationConfig extends HTMLElement {
} }
try { 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: 获取版本列表失败'); if (!response.ok) throw new Error('B03042016: 获取版本列表失败');
const versions = await response.json(); const versions = await response.json();
versionSelect.innerHTML = '<option value="">请选择版本</option>' + versionSelect.innerHTML = '<option value="">请选择版本</option>' +

View File

@ -919,12 +919,12 @@ class ModelDevelopment extends HTMLElement {
<div class="form-group"> <div class="form-group">
<label for="runFreqGroup">运行频率组 (RunFreqGroup)</label> <label for="runFreqGroup">运行频率组 (RunFreqGroup)</label>
<select id="runFreqGroup" name="RunFreqGroup" title="模型的运行频率组"> <select id="runFreqGroup" name="RunFreqGroup" title="模型的运行频率组">
<option value="0" ${this.currentVersion.RunFreqGroup === '0' ? 'selected' : ''}>基频 (0)</option> <option value="0" ${this.currentVersion.RunFreqGroup == '0' ? 'selected' : ''}>基频 (0)</option>
<option value="1" ${this.currentVersion.RunFreqGroup === '1' ? 'selected' : ''}>半频 (1)</option> <option value="1" ${this.currentVersion.RunFreqGroup == '1' ? 'selected' : ''}>半频 (1)</option>
<option value="2" ${this.currentVersion.RunFreqGroup === '2' ? 'selected' : ''}>1/4 (2)</option> <option value="2" ${this.currentVersion.RunFreqGroup == '2' ? 'selected' : ''}>1/4 (2)</option>
<option value="3" ${this.currentVersion.RunFreqGroup === '3' ? 'selected' : ''}>1/8 (3)</option> <option value="3" ${this.currentVersion.RunFreqGroup == '3' ? 'selected' : ''}>1/8 (3)</option>
<option value="4" ${this.currentVersion.RunFreqGroup === '4' ? 'selected' : ''}>1/16 (4)</option> <option value="4" ${this.currentVersion.RunFreqGroup == '4' ? 'selected' : ''}>1/16 (4)</option>
<option value="5" ${this.currentVersion.RunFreqGroup === '5' ? 'selected' : ''}>1/32 (5)</option> <option value="5" ${this.currentVersion.RunFreqGroup == '5' ? 'selected' : ''}>1/32 (5)</option>
</select> </select>
</div> </div>
<div class="form-group"> <div class="form-group">
@ -1299,11 +1299,19 @@ class ModelDevelopment extends HTMLElement {
const option = document.createElement('option'); const option = document.createElement('option');
option.value = i.toString(); option.value = i.toString();
option.textContent = i.toString(); option.textContent = i.toString();
if (this.currentVersion.RunNode === i.toString()) {
// 使用宽松比较,处理数字和字符串类型
if (this.currentVersion.RunNode == i.toString()) {
option.selected = true; option.selected = true;
} }
runNodeSelect.appendChild(option); runNodeSelect.appendChild(option);
} }
// 如果没有选中任何选项,默认选择第一个
if (runNodeSelect.selectedIndex === -1 && maxNode > 0) {
runNodeSelect.selectedIndex = 0;
}
} }
/** /**

View File

@ -854,35 +854,33 @@ async function findStructDefinition(headerFilePath, structName) {
continue; continue;
} }
// 匹配成员声明 /**
// 基础类型: int, double, float, char, short, long, unsigned, etc. * 匹配结构体成员声明包括如下形式
// 结构体指针: struct xxx_S* * int a;
// 结构体: struct xxx_S * double b;
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*$/; * 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); const memberMatch = trimmedLine.match(memberRegex);
if (memberMatch) { if (memberMatch) {
const structType = memberMatch[1]; // 结构体类型名 const isStruct = memberMatch[1]; // struct关键字
const isPointer = memberMatch[2]; // 是否为指针 const structType = memberMatch[2]; // 结构体类型名
const memberName = memberMatch[3]; // 成员名 const baseType = memberMatch[3] ? memberMatch[3].trim() : '';
const isPointer = memberMatch[4]; // *
// 构建类型信息 const memberName = memberMatch[5]; // 变量名
let type = ''; let type = '';
if (structType) { if (isStruct && structType) {
// 结构体类型
type = `struct ${structType}${isPointer ? '*' : ''}`; type = `struct ${structType}${isPointer ? '*' : ''}`;
} else { } else {
// 基础类型,需要从原始行中提取 type = `${baseType}${isPointer ? '*' : ''}`.replace(/\s+/g, ' ').trim();
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';
}
} }
const memberString = `${type} ${memberName}`.trim();
// 拼接类型和成员名
const memberString = `${type} ${memberName}`;
memberNames.push(memberString); memberNames.push(memberString);
} }
} }