customize first id

This commit is contained in:
codetypes committed 2025-03-12 20:03:58 +08:00
1 parent 0571d2fc04
commit fb889a01c8
10 files changed
+56 -41

No files matched your search

+7 -5
View File
@@ -3,11 +3,13 @@
"typescript.tsc.autoDetect": "off", "typescript.tsc.autoDetect": "off",
"json.schemas": [ "json.schemas": [
{ {
"fileMatch": [ "fileMatch": ["/*electron-builder.json5", "/*electron-builder.json"],
"/*electron-builder.json5",
"/*electron-builder.json"
],
"url": "https://json.schemastore.org/electron-builder" "url": "https://json.schemastore.org/electron-builder"
} }
] ],
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.organizeImports": "explicit"
},
"editor.defaultFormatter": "esbenp.prettier-vscode"
} }
-14
View File
@@ -1,14 +0,0 @@
{
"folders": [
{
"path": "."
}
],
"settings": {
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.organizeImports": "explicit"
},
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
}
+1 -1
View File
@@ -20,5 +20,5 @@ else
exit 1 exit 1
fi fi
`; `;
fs.writeFileSync(".git/hooks/pre-commit", hooks); fs.writeFileSync(".git/hooks/pre-commit", hooks.replace(/^[\n\r]+/, ""));
fs.chmodSync(".git/hooks/pre-commit", 0o755); fs.chmodSync(".git/hooks/pre-commit", 0o755);
+1
View File
@@ -76,6 +76,7 @@
"tree.name": "Tree name", "tree.name": "Tree name",
"tree.desc": "Tree desc", "tree.desc": "Tree desc",
"tree.export": "Export", "tree.export": "Export",
"tree.firstid": "First id",
"regnode.input": "Input: ", "regnode.input": "Input: ",
"regnode.output": "Output: ", "regnode.output": "Output: ",
+1
View File
@@ -76,6 +76,7 @@
"tree.name": "行为树", "tree.name": "行为树",
"tree.desc": "说明", "tree.desc": "说明",
"tree.export": "导出", "tree.export": "导出",
"tree.firstid": "起始标识",
"regnode.input": "输入:", "regnode.input": "输入:",
"regnode.output": "输出:", "regnode.output": "输出:",
+32 -18
View File
@@ -192,7 +192,7 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
const onSearchChange = (option: FilterOption) => { const onSearchChange = (option: FilterOption) => {
option.results.length = 0; option.results.length = 0;
filterNodes(option, findDataById("1")); filterNodes(option, editor.data);
setFilterOption({ setFilterOption({
...option, ...option,
}); });
@@ -210,7 +210,7 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
const updateSearchState = () => { const updateSearchState = () => {
const option = { ...filterOption }; const option = { ...filterOption };
option.results.length = 0; option.results.length = 0;
filterNodes(option, findDataById("1")); filterNodes(option, editor.data);
setFilterOption({ setFilterOption({
...option, ...option,
}); });
@@ -268,7 +268,20 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
}; };
const findDataById = (id: string) => { const findDataById = (id: string) => {
return editor.graph.findDataById(id) as TreeGraphData; const traverse = (node: TreeGraphData): TreeGraphData | undefined => {
if (node.id === id) {
return node;
}
if (node.children) {
for (const child of node.children) {
const result = traverse(child);
if (result) {
return result;
}
}
}
};
return traverse(editor.data) as TreeGraphData;
}; };
const includeString = (content: string | undefined, option: FilterOption) => { const includeString = (content: string | undefined, option: FilterOption) => {
@@ -363,11 +376,10 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
}; };
const refresh = () => { const refresh = () => {
const rootData = findDataById("1"); const rootNode = b3util.createNode(editor.data);
const rootNode = b3util.createNode(rootData);
editor.modifiedTime = fs.statSync(editor.path).mtimeMs; editor.modifiedTime = fs.statSync(editor.path).mtimeMs;
editor.data = createTreeData(rootNode); editor.data = createTreeData(rootNode);
editor.autoId = b3util.refreshTreeDataId(editor.data); editor.autoId = b3util.refreshTreeDataId(editor.data, editor.firstid);
editor.graph.changeData(editor.data); editor.graph.changeData(editor.data);
editor.graph.layout(); editor.graph.layout();
restoreViewport(); restoreViewport();
@@ -376,7 +388,7 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
const reload = () => { const reload = () => {
const file = readJson(editor.path) as TreeModel; const file = readJson(editor.path) as TreeModel;
editor.data = createTreeData(file.root); editor.data = createTreeData(file.root);
editor.autoId = b3util.refreshTreeDataId(editor.data); editor.autoId = b3util.refreshTreeDataId(editor.data, editor.firstid);
editor.unsave = false; editor.unsave = false;
updateState(); updateState();
if (editor.graph) { if (editor.graph) {
@@ -388,8 +400,7 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
const checkSubtree = () => { const checkSubtree = () => {
if (editor.graph) { if (editor.graph) {
const data = findDataById("1"); if (isSubtreeUpdated(editor.data)) {
if (isSubtreeUpdated(data)) {
refresh(); refresh();
pushHistory(); pushHistory();
onChange(); onChange();
@@ -430,6 +441,7 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
return; return;
} }
b3util.copyFromNode(data, newNode); b3util.copyFromNode(data, newNode);
data.def = b3util.getNodeDefs().get(data.name)!;
data.size = calcTreeDataSize(data); data.size = calcTreeDataSize(data);
if (oldNode.path !== newNode.path) { if (oldNode.path !== newNode.path) {
refresh(); refresh();
@@ -447,6 +459,10 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
if (editor.desc !== editTree.data.desc || editor.export !== editTree.data.export) { if (editor.desc !== editTree.data.desc || editor.export !== editTree.data.export) {
editor.desc = editTree.data.desc || ""; editor.desc = editTree.data.desc || "";
editor.export = editTree.data.export !== false; editor.export = editTree.data.export !== false;
if (editor.data.firstid !== editTree.data.firstid) {
editor.firstid = editTree.data.firstid ?? 1;
refresh();
}
onChange(); onChange();
} }
}; };
@@ -480,7 +496,7 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
const pushHistory = () => { const pushHistory = () => {
editor.historyStack.length = ++editor.historyIndex; editor.historyStack.length = ++editor.historyIndex;
editor.historyStack.push(b3util.createNode(findDataById("1"))); editor.historyStack.push(b3util.createNode(editor.data));
}; };
const copyNode = () => { const copyNode = () => {
@@ -552,7 +568,7 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
updateGrahp(); updateGrahp();
} else { } else {
editor.data = createTreeData(JSON.parse(str), editor.selectedId); editor.data = createTreeData(JSON.parse(str), editor.selectedId);
editor.autoId = b3util.refreshTreeDataId(editor.data); editor.autoId = b3util.refreshTreeDataId(editor.data, editor.firstid);
editor.graph.changeData(editor.data); editor.graph.changeData(editor.data);
editor.graph.render(); editor.graph.render();
editor.graph.layout(); editor.graph.layout();
@@ -626,7 +642,7 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
const useStackData = (data: NodeModel) => { const useStackData = (data: NodeModel) => {
editor.data = createTreeData(data); editor.data = createTreeData(data);
editor.autoId = b3util.refreshTreeDataId(editor.data); editor.autoId = b3util.refreshTreeDataId(editor.data, editor.firstid);
editor.graph.changeData(editor.data); editor.graph.changeData(editor.data);
editor.graph.layout(); editor.graph.layout();
restoreViewport(); restoreViewport();
@@ -663,12 +679,12 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
const save = () => { const save = () => {
if (editor.unsave || !fs.existsSync(editor.path)) { if (editor.unsave || !fs.existsSync(editor.path)) {
const path = editor.path; const path = editor.path;
const data = findDataById("1"); editor.autoId = b3util.refreshTreeDataId(editor.data, editor.firstid);
editor.autoId = b3util.refreshTreeDataId(data); const root = b3util.createFileData(editor.data);
const root = b3util.createFileData(data);
const treeModel = { const treeModel = {
name: Path.basenameWithoutExt(path), name: Path.basenameWithoutExt(path),
root, root,
firstid: editor.firstid ?? 1,
export: editor.export, export: editor.export,
desc: editor.desc, desc: editor.desc,
} as TreeModel; } as TreeModel;
@@ -676,8 +692,6 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
fs.writeFileSync(path, JSON.stringify(treeModel, null, 2)); fs.writeFileSync(path, JSON.stringify(treeModel, null, 2));
workspace.updateFileMeta(editor); workspace.updateFileMeta(editor);
editor.unsave = false; editor.unsave = false;
editor.data = createTreeData(root);
editor.autoId = b3util.refreshTreeDataId(editor.data);
editor.graph.changeData(editor.data); editor.graph.changeData(editor.data);
editor.graph.layout(); editor.graph.layout();
restoreViewport(); restoreViewport();
@@ -823,7 +837,7 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
const data = findDataById(e.item.getID()); const data = findDataById(e.item.getID());
data.output?.forEach((v) => v && highlight.push(v)); data.output?.forEach((v) => v && highlight.push(v));
} }
const changed = findHightlight(findDataById("1"), highlight); const changed = findHightlight(editor.data, highlight);
changed.forEach((v) => { changed.forEach((v) => {
const item = editor.graph.findById(v.id); const item = editor.graph.findById(v.id);
item.draw(); item.draw();
+5
View File
@@ -58,6 +58,7 @@ const TreeInspector: FC = () => {
form.setFieldValue("name", data.name); form.setFieldValue("name", data.name);
form.setFieldValue("desc", data.desc); form.setFieldValue("desc", data.desc);
form.setFieldValue("export", data.export !== false); form.setFieldValue("export", data.export !== false);
form.setFieldValue("firstid", data.firstid);
}, [workspace.editingTree]); }, [workspace.editingTree]);
const finish = (values: any) => { const finish = (values: any) => {
@@ -66,6 +67,7 @@ const TreeInspector: FC = () => {
name: values.name, name: values.name,
desc: values.desc || undefined, desc: values.desc || undefined,
export: values.export, export: values.export,
firstid: Number(values.firstid),
}, },
} as EditTree); } as EditTree);
}; };
@@ -86,6 +88,9 @@ const TreeInspector: FC = () => {
<Form.Item name="desc" label={t("tree.desc")}> <Form.Item name="desc" label={t("tree.desc")}>
<TextArea autoSize onBlur={form.submit} /> <TextArea autoSize onBlur={form.submit} />
</Form.Item> </Form.Item>
<Form.Item name="firstid" label={t("tree.firstid")}>
<InputNumber min={1} onBlur={form.submit} />
</Form.Item>
<Form.Item name="export" label={t("tree.export")} valuePropName="checked"> <Form.Item name="export" label={t("tree.export")} valuePropName="checked">
<Switch onChange={() => form.submit()} /> <Switch onChange={() => form.submit()} />
</Form.Item> </Form.Item>
+5 -1
View File
@@ -47,6 +47,7 @@ export class EditorStore {
desc: string; desc: string;
export: boolean; export: boolean;
name: string; name: string;
firstid: number;
autoId: number = 1; autoId: number = 1;
dragSrcId?: string; dragSrcId?: string;
@@ -76,7 +77,8 @@ export class EditorStore {
this.desc = file.desc ?? ""; this.desc = file.desc ?? "";
this.export = file.export !== false; this.export = file.export !== false;
this.name = file.name || path.slice(0, -5); this.name = file.name || path.slice(0, -5);
this.autoId = b3util.refreshTreeDataId(this.data); this.firstid = file.firstid ?? 1;
this.autoId = b3util.refreshTreeDataId(this.data, this.firstid);
this.historyStack.push(b3util.createNode(this.data)); this.historyStack.push(b3util.createNode(this.data));
this.historyIndex = 0; this.historyIndex = 0;
} }
@@ -492,6 +494,7 @@ export const useWorkspace = create<WorkspaceStore>((set, get) => ({
data: { data: {
name: editting.name, name: editting.name,
desc: editting.desc, desc: editting.desc,
firstid: editting.firstid,
root: null!, root: null!,
}, },
}, },
@@ -646,6 +649,7 @@ export const useWorkspace = create<WorkspaceStore>((set, get) => ({
name: editor.name, name: editor.name,
desc: editor.desc, desc: editor.desc,
export: editor.export, export: editor.export,
firstid: editor.firstid,
root: null!, root: null!,
}, },
}, },
+1
View File
@@ -29,6 +29,7 @@ export interface TreeModel {
name: string; name: string;
desc?: string; desc?: string;
export?: boolean; export?: boolean;
firstid?: number;
root: NodeModel; root: NodeModel;
} }
+3 -2
View File
@@ -626,9 +626,10 @@ export const createTreeData = (
export const createBuildData = (path: string) => { export const createBuildData = (path: string) => {
try { try {
const str = fs.readFileSync(path, "utf8"); const str = fs.readFileSync(path, "utf8");
const treeModel = JSON.parse(str); const treeModel: TreeModel = JSON.parse(str);
const data = createTreeData(treeModel.root); const data = createTreeData(treeModel.root);
refreshTreeDataId(data); refreshTreeDataId(data, treeModel.firstid ?? 1);
treeModel.name = Path.basenameWithoutExt(path);
treeModel.root = createFileData(data, true); treeModel.root = createFileData(data, true);
return treeModel as TreeModel; return treeModel as TreeModel;
} catch (e) { } catch (e) {