use 'readTree' to parse data file

This commit is contained in:
codetypes committed 2025-03-18 10:58:17 +08:00
1 parent 7478e1fa0f
commit 4d1d09fe80
12 files changed
+60 -30

No files matched your search

+1 -1
View File
@@ -568,7 +568,7 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
workspace.onEditingNode({
data: b3util.createNode(data, false),
editable: !isSubtreeNode(data),
limit_error: !b3util.checkChildrenLimit(data),
limitError: !b3util.checkChildrenLimit(data),
});
setItemState(editor.selectedId, "selected", true);
} else {
+15 -5
View File
@@ -775,11 +775,21 @@ const NodeInspector: FC = () => {
>
<Input disabled={true} />
</Form.Item>
<Form.Item name="children" label={t("node.children")}>
<Input
style={{ borderColor: editingNode.limit_error ? "red" : undefined }}
disabled={true}
/>
<Form.Item
name="children"
label={t("node.children")}
rules={[
{
validator() {
if (editingNode.limitError) {
return Promise.reject(new Error(t("node.invalidChildren")));
}
return Promise.resolve();
},
},
]}
>
<Input disabled={true} />
</Form.Item>
<Form.Item label={t("node.name")} name="name">
<AutoComplete
+7 -7
View File
@@ -151,14 +151,14 @@ G6.registerNode(
(data.path && !data.children?.length) ||
!checkTreeData(data) ||
(nodeDef.group && !usingGroups[nodeDef.group]) ||
(usingVars && data.input?.some((v) => !usingVars![v])) ||
(usingVars && data.output?.some((v) => !usingVars![v])) ||
(usingVars &&
nodeDef.args?.some(
(v) =>
isExprType(v.type) &&
parseExpr(data.args?.[v.name] ?? "").some((vv) => !usingVars![vv])
))
(data.input?.some((v) => usingVars?.[v] === undefined) ||
data.output?.some((v) => usingVars?.[v] === undefined) ||
nodeDef.args?.some(
(v) =>
isExprType(v.type) &&
parseExpr(data.args?.[v.name] ?? "").some((vv) => usingVars?.[vv] === undefined)
)))
) {
classify = "Error";
color = NODE_COLORS[classify];
+2 -7
View File
@@ -74,10 +74,6 @@ export class EditorStore {
this.path = path;
this.data = readTree(path);
this.data.name = Path.basenameWithoutExt(path);
this.data.firstid = this.data.firstid ?? 1;
this.data.group = this.data.group ?? [];
this.data.import = this.data.import ?? [];
this.data.declvar = this.data.declvar ?? [];
this.root = b3util.createTreeData(this.data.root);
this.modifiedTime = fs.statSync(path).mtimeMs;
this.import = this.data.import.map((v) => ({ path: v, vars: [] }));
@@ -102,7 +98,7 @@ export type FileTreeType = {
export type EditNode = {
data: NodeModel;
editable: boolean;
limit_error?: boolean;
limitError?: boolean;
};
export type EditNodeDef = {
@@ -380,8 +376,7 @@ export const useWorkspace = create<WorkspaceStore>((set, get) => ({
const str = fs.readFileSync(scriptPath, "utf8");
const batch = eval(str) as BatchScript;
workspace.allFiles.forEach((file) => {
const treeStr = fs.readFileSync(file.path, "utf8");
let tree: TreeModel | undefined = JSON.parse(treeStr);
let tree: TreeModel | undefined = readTree(file.path);
if (batch.processTree && tree) {
tree = batch.processTree(tree, file.path);
}
+1 -2
View File
@@ -652,8 +652,7 @@ export const createTreeData = (
export const createBuildData = (path: string) => {
try {
const str = fs.readFileSync(path, "utf8");
const treeModel: TreeModel = JSON.parse(str);
const treeModel: TreeModel = readTree(path);
const data = createTreeData(treeModel.root);
refreshTreeDataId(data, treeModel.firstid ?? 1);
treeModel.name = Path.basenameWithoutExt(path);
+6 -1
View File
@@ -8,7 +8,12 @@ export const readJson = (path: string) => {
export const readTree = (path: string) => {
const str = fs.readFileSync(path, "utf-8");
return JSON.parse(str) as TreeModel;
const data = JSON.parse(str) as TreeModel;
data.firstid = data.firstid ?? 1;
data.group = data.group || [];
data.import = data.import || [];
data.declvar = data.declvar || [];
return data;
};
export const writeJson = (path: string, data: any) => {