detect file changes
This commit is contained in:
1 parent
298cedbbb3
commit
cf1c33891f
4 files changed
+32
-11
No files matched your search
@@ -152,7 +152,7 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
|
|||||||
filterFocus: true,
|
filterFocus: true,
|
||||||
filterType: "content",
|
filterType: "content",
|
||||||
placeholder: "",
|
placeholder: "",
|
||||||
isFocused: false
|
isFocused: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
const onSearchChange = (option: FilterOption) => {
|
const onSearchChange = (option: FilterOption) => {
|
||||||
@@ -327,7 +327,7 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const reload = () => {
|
const refresh = () => {
|
||||||
const rootData = findDataById("1");
|
const rootData = findDataById("1");
|
||||||
const rootNode = b3util.createNode(rootData);
|
const rootNode = b3util.createNode(rootData);
|
||||||
editor.data = b3util.createTreeData(rootNode);
|
editor.data = b3util.createTreeData(rootNode);
|
||||||
@@ -337,11 +337,13 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
|
|||||||
restoreViewport();
|
restoreViewport();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const reload = () => {};
|
||||||
|
|
||||||
const checkSubtree = () => {
|
const checkSubtree = () => {
|
||||||
if (editor.graph) {
|
if (editor.graph) {
|
||||||
const data = findDataById("1");
|
const data = findDataById("1");
|
||||||
if (b3util.isSubtreeUpdated(data)) {
|
if (b3util.isSubtreeUpdated(data)) {
|
||||||
reload();
|
refresh();
|
||||||
pushHistory();
|
pushHistory();
|
||||||
onChange();
|
onChange();
|
||||||
}
|
}
|
||||||
@@ -383,7 +385,7 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
|
|||||||
b3util.copyFromNode(data, newNode);
|
b3util.copyFromNode(data, newNode);
|
||||||
data.size = b3util.calcTreeDataSize(data);
|
data.size = b3util.calcTreeDataSize(data);
|
||||||
if (oldNode.path !== newNode.path) {
|
if (oldNode.path !== newNode.path) {
|
||||||
reload();
|
refresh();
|
||||||
selectNode(null);
|
selectNode(null);
|
||||||
selectNode(data.id);
|
selectNode(data.id);
|
||||||
} else {
|
} else {
|
||||||
@@ -623,6 +625,7 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
|
|||||||
export: editor.export,
|
export: editor.export,
|
||||||
desc: editor.desc,
|
desc: editor.desc,
|
||||||
} as TreeModel;
|
} as TreeModel;
|
||||||
|
editor.modifiedTime = Date.now();
|
||||||
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;
|
||||||
@@ -684,7 +687,7 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
|
|||||||
} as TreeModel;
|
} as TreeModel;
|
||||||
fs.writeFileSync(subpath, JSON.stringify(subtreeModel, null, 2));
|
fs.writeFileSync(subpath, JSON.stringify(subtreeModel, null, 2));
|
||||||
data.path = workspace.relative(subpath);
|
data.path = workspace.relative(subpath);
|
||||||
reload();
|
refresh();
|
||||||
pushHistory();
|
pushHistory();
|
||||||
onChange();
|
onChange();
|
||||||
}, 200);
|
}, 200);
|
||||||
@@ -1006,6 +1009,10 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
|
|||||||
redo();
|
redo();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case "refresh": {
|
||||||
|
refresh();
|
||||||
|
break;
|
||||||
|
}
|
||||||
case "reload": {
|
case "reload": {
|
||||||
reload();
|
reload();
|
||||||
break;
|
break;
|
||||||
@@ -1274,7 +1281,7 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
|
|||||||
filterStr: "",
|
filterStr: "",
|
||||||
filterType: "content",
|
filterType: "content",
|
||||||
placeholder: "",
|
placeholder: "",
|
||||||
isFocused: false
|
isFocused: false,
|
||||||
});
|
});
|
||||||
keysRef.current?.focus();
|
keysRef.current?.focus();
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -694,7 +694,7 @@ export const Explorer: FC = () => {
|
|||||||
console.log("editor move", editor.path === newPath, editor.path, newPath);
|
console.log("editor move", editor.path === newPath, editor.path, newPath);
|
||||||
if (editor.path.startsWith(newPath)) {
|
if (editor.path.startsWith(newPath)) {
|
||||||
console.log("editor reload", editor.path === newPath, editor.path, newPath);
|
console.log("editor reload", editor.path === newPath, editor.path, newPath);
|
||||||
editor.dispatch("reload");
|
editor.dispatch("refresh");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -133,7 +133,6 @@ export const Menu: FC<LayoutProps> = () => {
|
|||||||
accelerator: "CmdOrCtrl+S",
|
accelerator: "CmdOrCtrl+S",
|
||||||
enabled: enabled,
|
enabled: enabled,
|
||||||
click: () => {
|
click: () => {
|
||||||
console.log("save1");
|
|
||||||
workspace.save();
|
workspace.save();
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -30,8 +30,9 @@ export type EditEvent =
|
|||||||
| "jumpNode"
|
| "jumpNode"
|
||||||
| "undo"
|
| "undo"
|
||||||
| "redo"
|
| "redo"
|
||||||
| "reload"
|
| "refresh"
|
||||||
| "rename"
|
| "rename"
|
||||||
|
| "reload"
|
||||||
| "updateTree"
|
| "updateTree"
|
||||||
| "updateNode"
|
| "updateNode"
|
||||||
| "searchNode"
|
| "searchNode"
|
||||||
@@ -49,6 +50,7 @@ export class EditorStore {
|
|||||||
dragSrcId?: string;
|
dragSrcId?: string;
|
||||||
dragDstId?: string;
|
dragDstId?: string;
|
||||||
unsave: boolean = false;
|
unsave: boolean = false;
|
||||||
|
modifiedTime: number = Date.now();
|
||||||
historyStack: NodeModel[] = [];
|
historyStack: NodeModel[] = [];
|
||||||
historyIndex: number = 0;
|
historyIndex: number = 0;
|
||||||
selectedId?: string | null;
|
selectedId?: string | null;
|
||||||
@@ -66,6 +68,7 @@ export class EditorStore {
|
|||||||
|
|
||||||
const file = readJson(path) as TreeModel;
|
const file = readJson(path) as TreeModel;
|
||||||
this.data = b3util.createTreeData(file.root);
|
this.data = b3util.createTreeData(file.root);
|
||||||
|
this.modifiedTime = fs.statSync(path).mtimeMs;
|
||||||
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);
|
||||||
@@ -393,6 +396,7 @@ export const useWorkspace = create<WorkspaceStore>((set, get) => ({
|
|||||||
},
|
},
|
||||||
|
|
||||||
open: (path) => {
|
open: (path) => {
|
||||||
|
path = fs.realpathSync(path);
|
||||||
const workspace = get();
|
const workspace = get();
|
||||||
let editor = workspace.editors.find((v) => v.path === path);
|
let editor = workspace.editors.find((v) => v.path === path);
|
||||||
if (!editor) {
|
if (!editor) {
|
||||||
@@ -488,8 +492,19 @@ export const useWorkspace = create<WorkspaceStore>((set, get) => ({
|
|||||||
hasEvent = true;
|
hasEvent = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (event === "change" && filename === "node-config.b3-setting") {
|
if (event === "change" && filename) {
|
||||||
|
if (filename === "node-config.b3-setting") {
|
||||||
workspace.loadNodeDefs();
|
workspace.loadNodeDefs();
|
||||||
|
} else {
|
||||||
|
const fullpath = fs.realpathSync(`${workspace.workdir}/${filename}`);
|
||||||
|
const editor = workspace.find(fullpath);
|
||||||
|
if (editor) {
|
||||||
|
console.log(filename, editor, editor.modifiedTime, fs.statSync(fullpath).mtimeMs);
|
||||||
|
if (editor.modifiedTime + 500 < fs.statSync(fullpath).mtimeMs) {
|
||||||
|
console.log("reload", filename);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@@ -550,7 +565,7 @@ export const useWorkspace = create<WorkspaceStore>((set, get) => ({
|
|||||||
nodeDefs.set(v.name, v);
|
nodeDefs.set(v.name, v);
|
||||||
}
|
}
|
||||||
set({ nodeDefs });
|
set({ nodeDefs });
|
||||||
workspace.editing?.dispatch("reload");
|
workspace.editing?.dispatch("refresh");
|
||||||
},
|
},
|
||||||
|
|
||||||
// node edit
|
// node edit
|
||||||
|
|||||||
Reference in new issue
Block a user