fix load subtree variable

This commit is contained in:
codetypes committed 2025-03-20 10:20:02 +08:00
1 parent 0acd291c0c
commit fdc7a8d2d6
4 files changed
+16 -16

No files matched your search

+1 -1
View File
@@ -78,7 +78,7 @@ if (buildOutput || buildProject || buildHelp) {
declvar: treeModel.declvar.map((v) => ({ name: v.name, desc: v.desc })),
subtree: [],
};
b3util.refreshDeclare(treeModel, declare);
b3util.refreshDeclare(treeModel.root, treeModel.group, declare);
if (!b3util.checkNodeData(treeModel?.root)) {
hasError = true;
}
+2 -2
View File
@@ -372,7 +372,7 @@ export const useWorkspace = create<WorkspaceStore>((set, get) => ({
declvar: treeModel.declvar.map((v) => ({ name: v.name, desc: v.desc })),
subtree: [],
};
b3util.refreshDeclare(treeModel, declare);
b3util.refreshDeclare(treeModel.root, treeModel.group, declare);
if (!b3util.checkNodeData(treeModel?.root)) {
hasError = true;
}
@@ -557,7 +557,7 @@ export const useWorkspace = create<WorkspaceStore>((set, get) => ({
if (!editor) {
return;
}
b3util.refreshDeclare(editor.data, editor.declare);
b3util.refreshDeclare(editor.root, editor.data.group, editor.declare);
},
save: () => {
+12 -12
View File
@@ -857,24 +857,24 @@ export const loadVarDef = (list: ImportDef[]) => {
return Array.from(all);
};
const findSubtrees = (data: NodeModel) => {
const list: string[] = [];
const traverse = (v: NodeModel) => {
if (v.path) {
list.push(v.path);
const collectSubtree = (data: TreeGraphData | NodeModel, list: string[] = []) => {
if (data.path) {
list.push(data.path);
}
if (v.children) {
v.children.forEach((child) => traverse(child));
if (data.children) {
data.children.forEach((child) => collectSubtree(child, list));
}
};
traverse(data);
return list;
};
export const refreshDeclare = (tree: TreeModel, declare: FileVarDecl) => {
export const refreshDeclare = (
root: TreeGraphData | NodeModel,
group: string[],
declare: FileVarDecl
) => {
const vars: Set<VarDef> = new Set(declare.declvar.slice());
parsingStack.length = 0;
declare.subtree = findSubtrees(tree.root).map((v) => ({
declare.subtree = collectSubtree(root).map((v) => ({
path: v,
vars: [],
depends: [],
@@ -883,6 +883,6 @@ export const refreshDeclare = (tree: TreeModel, declare: FileVarDecl) => {
loadVarDef(declare.subtree).forEach((v) => {
vars.add(v);
});
updateUsingGroups(tree.group);
updateUsingGroups(group);
updateUsingVars(Array.from(vars));
};