From eba675b0ab60c677214275cc83de0d6844cce629 Mon Sep 17 00:00:00 2001 From: codetypes Date: Sat, 22 Mar 2025 08:11:55 +0800 Subject: [PATCH] fix node def selected state --- src/components/editor.tsx | 17 +++++------------ src/components/explorer.tsx | 13 +++++++++---- src/contexts/workspace-context.ts | 1 + 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/src/components/editor.tsx b/src/components/editor.tsx index 7516213..6cb635e 100644 --- a/src/components/editor.tsx +++ b/src/components/editor.tsx @@ -100,12 +100,7 @@ const isTreeUpdated = (editor: EditorStore, editTree: EditTree) => { const isSubtreeUpdated = (data: TreeGraphData) => { if (data.path) { - try { - const subtreePath = useWorkspace.getState().workdir + "/" + data.path; - if (fs.statSync(subtreePath).mtimeMs !== data.lastModified) { - return true; - } - } catch (error) { + if (b3util.files[data.path] !== data.lastModified) { return true; } } @@ -488,12 +483,10 @@ export const Editor: FC = ({ onUpdate: updateState, data: editor, . }; const checkSubtree = () => { - if (editor.graph) { - if (isSubtreeUpdated(editor.root)) { - refresh(); - pushHistory(); - onChange(); - } + if (editor.graph && isSubtreeUpdated(editor.root)) { + refresh(); + pushHistory(); + onChange(); } }; diff --git a/src/components/explorer.tsx b/src/components/explorer.tsx index 3954d90..435d706 100644 --- a/src/components/explorer.tsx +++ b/src/components/explorer.tsx @@ -324,7 +324,7 @@ export const Explorer: FC = () => { }, }; workspace.nodeDefs.forEach((nodeDef) => { - (nodeDef.group || [""]).forEach((g, idx) => { + (nodeDef.group || [""]).forEach((g) => { const typeGroup = !g ? nodeDef.type : `${nodeDef.type} (${g})`; let catalog = data.children?.find((nt) => nt.title === typeGroup); if (!catalog) { @@ -349,7 +349,7 @@ export const Explorer: FC = () => { title: `${nodeDef.name}(${nodeDef.desc})`, isLeaf: true, def: nodeDef, - path: `${nodeDef.name} ${idx}`, + path: `${nodeDef.name}(${g})`, icon: nodeDef.icon ? ( { // expand the selected node def useEffect(() => { if (workspace.editingNodeDef) { + const def = workspace.editingNodeDef.data; + const path = workspace.editingNodeDef.path ?? `${def.name}(${def.group?.[0] ?? ""})`; const keys: React.Key[] = []; - resolveKeys(workspace.editingNodeDef.data.name, nodeTree, keys); + + resolveKeys(path, nodeTree, keys); for (const k of expandedNodedefKeys) { if (keys.indexOf(k) === -1) { keys.push(k); } } setExpandedNodedefKeys(keys); - setSelectedNodedefKeys([workspace.editingNodeDef.data.name]); + setSelectedNodedefKeys([path]); } }, [t, workspace.editingNodeDef]); @@ -922,8 +925,10 @@ export const Explorer: FC = () => { if (node.isLeaf) { workspace.onEditingNodeDef({ data: node.def!, + path: node.path, }); } + console.info("select node:", node.path, node.def); setSelectedNodedefKeys([node.path]); } }} diff --git a/src/contexts/workspace-context.ts b/src/contexts/workspace-context.ts index b315f39..e4f9922 100644 --- a/src/contexts/workspace-context.ts +++ b/src/contexts/workspace-context.ts @@ -121,6 +121,7 @@ export type EditNode = { export type EditNodeDef = { data: NodeDef; + path?: string; }; export type EditTree = {