customize first id
This commit is contained in:
1 parent
0571d2fc04
commit
fb889a01c8
10 files changed
+56
-41
No files matched your search
Vendored
+7
-5
@@ -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"
|
||||||
}
|
}
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"folders": [
|
|
||||||
{
|
|
||||||
"path": "."
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"settings": {
|
|
||||||
"editor.formatOnSave": true,
|
|
||||||
"editor.codeActionsOnSave": {
|
|
||||||
"source.organizeImports": "explicit"
|
|
||||||
},
|
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+1
-1
@@ -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);
|
||||||
@@ -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: ",
|
||||||
|
|||||||
@@ -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
@@ -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();
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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!,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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
@@ -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) {
|
||||||
|
|||||||
Reference in new issue
Block a user