fix node def selected state

This commit is contained in:
codetypes committed 2025-03-22 08:11:55 +08:00
1 parent 600191eae8
commit eba675b0ab
3 files changed
+15 -16

No files matched your search

+5 -12
View File
@@ -100,12 +100,7 @@ const isTreeUpdated = (editor: EditorStore, editTree: EditTree) => {
const isSubtreeUpdated = (data: TreeGraphData) => { const isSubtreeUpdated = (data: TreeGraphData) => {
if (data.path) { if (data.path) {
try { if (b3util.files[data.path] !== data.lastModified) {
const subtreePath = useWorkspace.getState().workdir + "/" + data.path;
if (fs.statSync(subtreePath).mtimeMs !== data.lastModified) {
return true;
}
} catch (error) {
return true; return true;
} }
} }
@@ -488,12 +483,10 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
}; };
const checkSubtree = () => { const checkSubtree = () => {
if (editor.graph) { if (editor.graph && isSubtreeUpdated(editor.root)) {
if (isSubtreeUpdated(editor.root)) { refresh();
refresh(); pushHistory();
pushHistory(); onChange();
onChange();
}
} }
}; };
+9 -4
View File
@@ -324,7 +324,7 @@ export const Explorer: FC = () => {
}, },
}; };
workspace.nodeDefs.forEach((nodeDef) => { workspace.nodeDefs.forEach((nodeDef) => {
(nodeDef.group || [""]).forEach((g, idx) => { (nodeDef.group || [""]).forEach((g) => {
const typeGroup = !g ? nodeDef.type : `${nodeDef.type} (${g})`; const typeGroup = !g ? nodeDef.type : `${nodeDef.type} (${g})`;
let catalog = data.children?.find((nt) => nt.title === typeGroup); let catalog = data.children?.find((nt) => nt.title === typeGroup);
if (!catalog) { if (!catalog) {
@@ -349,7 +349,7 @@ export const Explorer: FC = () => {
title: `${nodeDef.name}(${nodeDef.desc})`, title: `${nodeDef.name}(${nodeDef.desc})`,
isLeaf: true, isLeaf: true,
def: nodeDef, def: nodeDef,
path: `${nodeDef.name} ${idx}`, path: `${nodeDef.name}(${g})`,
icon: nodeDef.icon ? ( icon: nodeDef.icon ? (
<Flex justify="center" align="center" style={{ height: "100%" }}> <Flex justify="center" align="center" style={{ height: "100%" }}>
<img <img
@@ -392,15 +392,18 @@ export const Explorer: FC = () => {
// expand the selected node def // expand the selected node def
useEffect(() => { useEffect(() => {
if (workspace.editingNodeDef) { if (workspace.editingNodeDef) {
const def = workspace.editingNodeDef.data;
const path = workspace.editingNodeDef.path ?? `${def.name}(${def.group?.[0] ?? ""})`;
const keys: React.Key[] = []; const keys: React.Key[] = [];
resolveKeys(workspace.editingNodeDef.data.name, nodeTree, keys);
resolveKeys(path, nodeTree, keys);
for (const k of expandedNodedefKeys) { for (const k of expandedNodedefKeys) {
if (keys.indexOf(k) === -1) { if (keys.indexOf(k) === -1) {
keys.push(k); keys.push(k);
} }
} }
setExpandedNodedefKeys(keys); setExpandedNodedefKeys(keys);
setSelectedNodedefKeys([workspace.editingNodeDef.data.name]); setSelectedNodedefKeys([path]);
} }
}, [t, workspace.editingNodeDef]); }, [t, workspace.editingNodeDef]);
@@ -922,8 +925,10 @@ export const Explorer: FC = () => {
if (node.isLeaf) { if (node.isLeaf) {
workspace.onEditingNodeDef({ workspace.onEditingNodeDef({
data: node.def!, data: node.def!,
path: node.path,
}); });
} }
console.info("select node:", node.path, node.def);
setSelectedNodedefKeys([node.path]); setSelectedNodedefKeys([node.path]);
} }
}} }}
+1
View File
@@ -121,6 +121,7 @@ export type EditNode = {
export type EditNodeDef = { export type EditNodeDef = {
data: NodeDef; data: NodeDef;
path?: string;
}; };
export type EditTree = { export type EditTree = {