diff --git a/src/components/inspector.tsx b/src/components/inspector.tsx
index fc08135..fbcc681 100644
--- a/src/components/inspector.tsx
+++ b/src/components/inspector.tsx
@@ -1,4 +1,10 @@
-import { AimOutlined, EditOutlined, MinusCircleOutlined, PlusOutlined } from "@ant-design/icons";
+import {
+ AimOutlined,
+ EditOutlined,
+ FormOutlined,
+ MinusCircleOutlined,
+ PlusOutlined,
+} from "@ant-design/icons";
import {
AutoComplete,
Button,
@@ -144,6 +150,8 @@ const TreeInspector: FC = () => {
groupDefs: state.groupDefs,
nodeDefs: state.nodeDefs,
relative: state.relative,
+ open: state.open,
+ workdir: state.workdir,
}))
);
const { t } = useTranslation();
@@ -241,10 +249,12 @@ const TreeInspector: FC = () => {
);
form.setFieldValue(
"subtree",
- workspace.editingTree.subtree.map((v) => ({
- name: v.name,
- desc: v.desc,
- count: usingCount[v.name] ?? 0,
+ workspace.editingTree.subtree.map((entry) => ({
+ path: entry.path,
+ vars: entry.vars.map((v) => ({
+ name: v.name,
+ count: usingCount[v.name] ?? 0,
+ })),
}))
);
}, [workspace.editingTree, groupDefs, usingCount]);
@@ -402,12 +412,51 @@ const TreeInspector: FC = () => {
{t("tree.vars.subtree")}
- {(fields) => (
-
- {fields.map((item) => (
-
-
-
+ {(items) => (
+
+ {items.map((item) => (
+
+
+
+
+ {
+ const path = workspace.editingTree.subtree[item.name].path;
+ workspace.open(`${workspace.workdir}/${path}`);
+ }}
+ />
+
+
+ {(vars) => (
+
+ {vars.map((v) => (
+
+
+
+ ))}
+
+ )}
+
+
))}
)}
diff --git a/src/contexts/workspace-context.ts b/src/contexts/workspace-context.ts
index 3494f27..7c888ec 100644
--- a/src/contexts/workspace-context.ts
+++ b/src/contexts/workspace-context.ts
@@ -131,7 +131,7 @@ export type EditTree = {
group: string[];
import: ImportDef[];
declvar: VarDef[];
- subtree: VarDef[];
+ subtree: ImportDef[];
root: TreeGraphData;
};
@@ -699,9 +699,7 @@ export const useWorkspace = create
((set, get) => ({
root: editor.root,
import: editor.declare.import,
declvar: editor.declare.declvar,
- subtree: editor.declare.subtree
- .map((def) => def.vars)
- .reduce((acc, v) => [...acc, ...v], []),
+ subtree: editor.declare.subtree,
},
editingNodeDef: null,
editingNode: null,