mirror of
https://github.com/babalae/bettergi-scripts-list.git
synced 2026-06-05 01:05:49 +08:00
fix(FullyAutoAndSemiAutoTools): 优化路径筛选逻辑并修复配置加载问题
- 修改循环逻辑,仅遍历有子节点的路径项 - 添加父级节点的层级名称设置功能 - 增加路径配置列表加载检查,防止未初始化时出错 - 重构设置过滤逻辑,提高层级匹配准确性 - 优化路径匹配算法,确保只有含子节点的路径参与筛选 - 移除冗余代码,简化树形结构转列表逻辑
This commit is contained in:
@@ -215,8 +215,8 @@ async function initRefresh(settingsConfig) {
|
|||||||
|
|
||||||
PATH_JSON_LIST = pathJsonList
|
PATH_JSON_LIST = pathJsonList
|
||||||
|
|
||||||
|
const forList=pathJsonList.filter(item=>item.child_names.length>0)
|
||||||
for (const element of pathJsonList) {
|
for (const element of forList) {
|
||||||
const pathRun = element.path
|
const pathRun = element.path
|
||||||
|
|
||||||
// 检查路径是否被允许
|
// 检查路径是否被允许
|
||||||
@@ -310,6 +310,10 @@ async function initRefresh(settingsConfig) {
|
|||||||
label: `${p}选择要执行的${item.level + 1}级路径`,
|
label: `${p}选择要执行的${item.level + 1}级路径`,
|
||||||
options: []
|
options: []
|
||||||
}
|
}
|
||||||
|
let filter = PATH_JSON_LIST.filter(list_item => list_item.id === item.parentId).find();
|
||||||
|
if (filter) {
|
||||||
|
filter.levelName = name || undefined
|
||||||
|
}
|
||||||
// leveJson.options = leveJson.options.concat(item.child_names)
|
// leveJson.options = leveJson.options.concat(item.child_names)
|
||||||
leveJson.options = [...item.child_names]
|
leveJson.options = [...item.child_names]
|
||||||
if (leveJson.options && leveJson.options.length > 0) {
|
if (leveJson.options && leveJson.options.length > 0) {
|
||||||
@@ -441,6 +445,11 @@ async function loadUidSettingsMap(uidSettingsMap) {
|
|||||||
let uidSettings = uidSettingsMap.get(Record.uid);
|
let uidSettings = uidSettingsMap.get(Record.uid);
|
||||||
// 如果存在用户设置
|
// 如果存在用户设置
|
||||||
if (uidSettings) {
|
if (uidSettings) {
|
||||||
|
if (!loadPathJsonListByUid()) {
|
||||||
|
throw new Error(
|
||||||
|
"未找到 PATH_JSON_LIST,请先执行一次【刷新配置】"
|
||||||
|
);
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
// 筛选出名称为'config_run'的设置项
|
// 筛选出名称为'config_run'的设置项
|
||||||
uidSettings.filter(
|
uidSettings.filter(
|
||||||
@@ -455,7 +464,9 @@ async function loadUidSettingsMap(uidSettingsMap) {
|
|||||||
// 刷新settings自动设置执行
|
// 刷新settings自动设置执行
|
||||||
item.label = "当前配置uid:\{" + Record.uid + "\}\n(仅仅显示配置uid无其他作用)"
|
item.label = "当前配置uid:\{" + Record.uid + "\}\n(仅仅显示配置uid无其他作用)"
|
||||||
})
|
})
|
||||||
|
let filterSettings = []
|
||||||
const filterUidSettings = uidSettings.filter(item => item.name.startsWith(levelName))
|
const filterUidSettings = uidSettings.filter(item => item.name.startsWith(levelName))
|
||||||
|
filterSettings = filterUidSettings
|
||||||
uidSettings = Array.from(new Set(uidSettings).difference(new Set(filterUidSettings)))
|
uidSettings = Array.from(new Set(uidSettings).difference(new Set(filterUidSettings)))
|
||||||
try {
|
try {
|
||||||
loadingLevel = parseInt(settings.loading_level)
|
loadingLevel = parseInt(settings.loading_level)
|
||||||
@@ -465,12 +476,48 @@ async function loadUidSettingsMap(uidSettingsMap) {
|
|||||||
//
|
//
|
||||||
loadingLevel = loadingLevel < 1 ? 2 : loadingLevel
|
loadingLevel = loadingLevel < 1 ? 2 : loadingLevel
|
||||||
}
|
}
|
||||||
const levelSettings = filterUidSettings.filter(item => {
|
//todo: 高阶层级过滤
|
||||||
|
/**
|
||||||
|
* 实例:pathing\地方特产\
|
||||||
|
* 地方特产
|
||||||
|
* 实例:pathing\地方特产\枫丹\
|
||||||
|
* 地方特产->枫丹
|
||||||
|
* 实例:pathing\地方特产\枫丹\幽光星星\
|
||||||
|
* 地方特产->枫丹->幽光星星
|
||||||
|
* 实例:pathing\地方特产\枫丹\幽光星星\幽光星星@jbcaaa\
|
||||||
|
* 地方特产->枫丹->幽光星星->幽光星星@jbcaaa
|
||||||
|
*/
|
||||||
|
// const keys = new Set([])
|
||||||
|
//
|
||||||
|
// function countMatchingElements(mainSet, subset) {
|
||||||
|
// const mainSetObj = new Set(mainSet);
|
||||||
|
// return subset.filter(item => mainSetObj.has(item)).length;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// const key = keys[keys.size - 1]
|
||||||
|
// // PATH_JSON_LIST.filter(item => item.level > 0)
|
||||||
|
// filterUidSettings.filter(item => {
|
||||||
|
// const bracketContent = getBracketContent(item.label);
|
||||||
|
// if (key.includes(bracketContent)) {
|
||||||
|
// const fullPathNamesList = Array.from(new Set(PATH_JSON_LIST.filter(item => bracketContent.includes(item.name)).map(item => {
|
||||||
|
// const fileName = item.fullPathNames[item.fullPathNames.length - 1]
|
||||||
|
// if (fileName.endsWith(".json")) {
|
||||||
|
// const set = new Set(item.fullPathNames);
|
||||||
|
// set.delete(fileName)
|
||||||
|
// return Array.from(set)
|
||||||
|
// }
|
||||||
|
// return item.fullPathNames
|
||||||
|
// })));
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
const levelSettings = filterSettings.filter(item => {
|
||||||
const level_all = item.name.replaceAll(levelName, "");
|
const level_all = item.name.replaceAll(levelName, "");
|
||||||
// 获取级别
|
// 获取级别
|
||||||
const level = level_all.split("_").filter(item => item?.trim() !== "").map(parseInt)[0]
|
const level = level_all.split("_").filter(item => item?.trim() !== "").map(parseInt)[0]
|
||||||
if (false && loadingLevel === level + 1) {
|
if (false && loadingLevel === level + 1) {
|
||||||
//只加载对应级别的设置
|
//只加载对应级别的设置
|
||||||
|
return loadingLevel === level + 1
|
||||||
}
|
}
|
||||||
// 检查级别是否大于等于加载层级
|
// 检查级别是否大于等于加载层级
|
||||||
return loadingLevel > level
|
return loadingLevel > level
|
||||||
@@ -538,7 +585,7 @@ async function initRun(config_run) {
|
|||||||
const selectedOptions = multiJson.options;
|
const selectedOptions = multiJson.options;
|
||||||
|
|
||||||
// 2. 从 PATH_JSON_LIST 中筛选命中的路径
|
// 2. 从 PATH_JSON_LIST 中筛选命中的路径
|
||||||
let matchedPaths = PATH_JSON_LIST.filter(item => {
|
let matchedPaths = PATH_JSON_LIST.filter(item => item.child_names.length > 0).filter(item => {
|
||||||
const hitParent = item.fullPathNames.includes(labelParentName);
|
const hitParent = item.fullPathNames.includes(labelParentName);
|
||||||
const hitOption = selectedOptions.some(opt =>
|
const hitOption = selectedOptions.some(opt =>
|
||||||
item.fullPathNames.some(name => name.includes(opt))
|
item.fullPathNames.some(name => name.includes(opt))
|
||||||
@@ -1237,7 +1284,6 @@ async function getValueByMultiCheckboxName(name) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取字符串中第一个方括号对之间的内容
|
* 获取字符串中第一个方括号对之间的内容
|
||||||
* @param {string} str - 输入的字符串
|
* @param {string} str - 输入的字符串
|
||||||
@@ -1786,9 +1832,7 @@ async function treeToList(treeList = []) {
|
|||||||
if (element.isFile) {
|
if (element.isFile) {
|
||||||
list.push(element);
|
list.push(element);
|
||||||
}
|
}
|
||||||
if (child && child.length > 0) {
|
list = [...list, ...await treeToList(child)]
|
||||||
list = [...list, ...await treeToList(child)]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return list
|
return list
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user