From 3cd86b56e97ff671544928e27458fcf6705d9948 Mon Sep 17 00:00:00 2001 From: yan Date: Fri, 16 Jan 2026 15:47:40 +0800 Subject: [PATCH] =?UTF-8?q?feat(config):=20=E6=B7=BB=E5=8A=A0=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=E5=8A=A0=E8=BD=BD=E5=B1=82=E7=BA=A7=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 loadingLevel 变量用于控制路径加载层级 - 在设置中添加 loading_level 配置项,默认值为 2 - 实现配置解析逻辑,支持自定义加载层级数值 - 添加配置错误时的异常处理和警告日志 - 更新记录文件路径引用,使用统一的 json_path_name 配置 - 注释掉原有的硬编码记录文件路径变量 --- repo/js/FullyAutoAndSemiAutoTools/main.js | 107 ++++++++++++------ .../FullyAutoAndSemiAutoTools/settings.json | 6 + 2 files changed, 77 insertions(+), 36 deletions(-) diff --git a/repo/js/FullyAutoAndSemiAutoTools/main.js b/repo/js/FullyAutoAndSemiAutoTools/main.js index 396d7078f..4efdec94e 100644 --- a/repo/js/FullyAutoAndSemiAutoTools/main.js +++ b/repo/js/FullyAutoAndSemiAutoTools/main.js @@ -16,6 +16,7 @@ const cd = { http_api: undefined, } const pathingName = "pathing" +let loadingLevel = 2 // const pathAsMap = new Map([]) // const pathRunMap = new Map([]) const needRunMap = new Map([]) @@ -32,8 +33,8 @@ const json_path_name = { SevenElement: `${config_root}\\SevenElement.json`, } // 定义记录文件的路径 -let RecordText = `${config_root}\\record.json` -let RecordPathText = `${config_root}\\PathRecord.json` +// let RecordText = `${config_root}\\record.json` +// let RecordPathText = `${config_root}\\PathRecord.json` let RecordList = new Array() let RecordLast = { uid: "", @@ -145,16 +146,16 @@ async function init() { parse?.sort((a, b) => a.level - b.level) SevenElement.SevenElements = Array.from(new Set(SevenElement.SevenElements.concat(parse.map(item => item.name)))) parse.forEach(item => { - const name= item.name - let value= item.value + const name = item.name + let value = item.value if (SevenElement.SevenElementsMap.has(name)) { - value=Array.from(new Set(SevenElement.SevenElementsMap.get(name).concat(value))) + value = Array.from(new Set(SevenElement.SevenElementsMap.get(name).concat(value))) } SevenElement.SevenElementsMap.set(name, value) }) } } catch (e) { - log.warn("[SevenElement]初始化失败error:{0}",e.message) + log.warn("[SevenElement]初始化失败error:{0}", e.message) } //记录初始化 @@ -174,7 +175,7 @@ async function init() { async function refreshALL() { let level = 0 - + const parent_level = level + 1 // 获取当前路径下的所有文件/文件夹 let pathSyncList = file.readPathSync(`${PATHING_ALL[level].name}`); log.debug("{0}文件夹下有{1}个文件/文件夹", `${pathingName}`, pathSyncList.length); @@ -182,7 +183,7 @@ async function init() { let parentJson = { name: `${levelName}_${level}_${level}`, type: "multi-checkbox", - label: `选择要执行的${level + 1}级路径`, + label: `选择要执行的${parent_level}级路径`, options: [] } for (const element of pathSyncList) { @@ -215,31 +216,65 @@ async function init() { if (isBlacklisted && !isWhitelisted) { continue; } - - - const level_parent_name = getChildFolderNameFromRoot(pathRun, level + 1); - const level1_name = getChildFolderNameFromRoot(pathRun, level + 1 + 1); - let level2_name = getChildFolderNameFromRoot(pathRun, level + 2 + 1); - let level3_name = getChildFolderNameFromRoot(pathRun, level + 3 + 1); - if (level2_name.endsWith(".json")) { - level2_name = undefined + //方案1 + try { + loadingLevel = parseInt(settings.loading_level) + } catch (e) { + log.warn("配置 {0} 错误,将使用默认值{0}", "加载路径层级", loadingLevel) } - if (level3_name.endsWith(".json")) { - level3_name = undefined + // 优化版本 + for (let i = 0; i < loadingLevel; i++) { + const currentLevel = parent_level + 1 + i; + const parentLevel = parent_level; + + const currentName = getChildFolderNameFromRoot(pathRun, currentLevel); + const childName = getChildFolderNameFromRoot(pathRun, currentLevel + 1); + + // 检查当前层级是否存在 + if (!currentName) { + break; // 没有当前层级,停止处理 + } + + // 过滤JSON文件 + const filteredChildName = childName?.endsWith(".json") ? undefined : childName; + + // 获取父级名称用于建立层级关系 + const parentName = getChildFolderNameFromRoot(pathRun, parentLevel); + + await addUniquePath({ + level: parent_level + i, // 存储到目标层级 + name: currentName, // 当前层级名称 + parent_name: parentName, // 父级名称 + child_names: filteredChildName ? [filteredChildName] : [] + }); } - //存储 2 级 - await addUniquePath({ - level: level + 1, - name: level1_name, - parent_name: level_parent_name, - child_names: level2_name ? [level2_name] : [] - }) - await addUniquePath({ - level: level + 2, - name: level2_name, - parent_name: level1_name, - child_names: level3_name ? [level3_name] : [] - }) + + //方案2 + /* const level_parent_name = getChildFolderNameFromRoot(pathRun, parent_level); + const level1_name = getChildFolderNameFromRoot(pathRun, parent_level + 1); + + let level2_name = getChildFolderNameFromRoot(pathRun, parent_level + 1 + 1); + let level3_name = getChildFolderNameFromRoot(pathRun, parent_level + 1 + 2); + + if (level2_name.endsWith(".json")) { + level2_name = undefined + } + if (level3_name.endsWith(".json")) { + level3_name = undefined + } + //存储 2 级 + await addUniquePath({ + level: parent_level, + name: level1_name, + parent_name: level_parent_name, + child_names: level2_name ? [level2_name] : [] + }) + await addUniquePath({ + level: parent_level + 1, + name: level2_name, + parent_name: level1_name, + child_names: level3_name ? [level3_name] : [] + })*/ } // 正确的排序方式 PATHING_ALL.sort((a, b) => { @@ -256,7 +291,7 @@ async function init() { await debugKey('log-PATHING_ALL.json', JSON.stringify(PATHING_ALL)) const groupLevel = groupByLevel(PATHING_ALL); - const initLength = settingsList.length + // const initLength = settingsList.length let parentNameLast = undefined // let parentNameNow = undefined const line = 30 @@ -533,7 +568,7 @@ async function saveRecordPaths() { })() }; // 将记录列表转换为JSON字符串并同步写入文件 - file.writeTextSync(RecordText, JSON.stringify(recordToSave)) + file.writeTextSync(json_path_name.RecordText, JSON.stringify(recordToSave)) } /** @@ -561,7 +596,7 @@ function saveRecord() { // 将处理后的记录添加到记录列表 RecordList.push(recordToSave) // 将记录列表转换为JSON字符串并同步写入文件 - file.writeTextSync(RecordText, JSON.stringify(RecordList)) + file.writeTextSync(json_path_name.RecordText, JSON.stringify(RecordList)) } /** @@ -627,7 +662,7 @@ async function initRecord() { try { // 尝试读取记录文件 // 读取后将数组转换回 Set,处理特殊的数据结构 - RecordList = JSON.parse(file.readTextSync(RecordText), (key, value) => { + RecordList = JSON.parse(file.readTextSync(json_path_name.RecordText), (key, value) => { // 处理普通路径集合 if (key === 'paths' || key === 'errorPaths') { return new Set(value); @@ -647,7 +682,7 @@ async function initRecord() { try { // 尝试读取记录文件 // 读取后将数组转换回 Set,处理特殊的数据结构 - RecordPath = JSON.parse(file.readTextSync(RecordPathText), (key, value) => { + RecordPath = JSON.parse(file.readTextSync(json_path_name.RecordPathText), (key, value) => { // 处理分组路径集合,保持嵌套的Set结构 if (key === 'paths') { return new Set(value.map(item => ({ diff --git a/repo/js/FullyAutoAndSemiAutoTools/settings.json b/repo/js/FullyAutoAndSemiAutoTools/settings.json index 5c29256b2..a4d113cba 100644 --- a/repo/js/FullyAutoAndSemiAutoTools/settings.json +++ b/repo/js/FullyAutoAndSemiAutoTools/settings.json @@ -14,6 +14,12 @@ ], "default": "刷新" }, + { + "name": "loading_level", + "type": "input-text", + "label": "加载路径层级(不可小于1)<配置模式 刷新 生效>", + "default": "2" + }, { "type": "separator" },