fix node def selected state
This commit is contained in:
1 parent
600191eae8
commit
eba675b0ab
3 files changed
+15
-16
No files matched your search
@@ -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();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -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]);
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -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 = {
|
||||||
|
|||||||
Reference in new issue
Block a user