Skip to content

Commit e44dac7

Browse files
committed
Integrate new graph representation and don't promot save for new flow
1 parent 2964319 commit e44dac7

File tree

10 files changed

+181
-232
lines changed

10 files changed

+181
-232
lines changed

packages/flowtest-electron/src/app/watcher.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const path = require('path');
33
const dotenv = require('dotenv');
44
const { PATH_SEPARATOR, getSubdirectoriesFromRoot } = require('../utils/filemanager/filesystem');
55
const readFile = require('../utils/filemanager/readfile');
6+
const { serialize } = require('../utils/flowparser/parser');
67

78
class Watcher {
89
constructor() {
@@ -32,13 +33,16 @@ class Watcher {
3233
add(mainWindow, pathname, collectionId, watchPath) {
3334
console.log(`[Watcher] File ${pathname} added`);
3435
if (this.isFlowTestFile(pathname)) {
36+
const content = readFile(pathname);
37+
const flowData = serialize(JSON.parse(content));
3538
const dirname = path.dirname(pathname);
3639
const subDirectories = getSubdirectoriesFromRoot(watchPath, dirname);
3740
const file = {
3841
name: path.basename(pathname),
3942
pathname: pathname,
4043
subDirectories,
4144
sep: PATH_SEPARATOR,
45+
flowData,
4246
};
4347
mainWindow.webContents.send('main:create-flowtest', file, collectionId);
4448
} else if (this.isEnvFile(pathname, watchPath)) {

packages/flowtest-electron/src/ipc/collection.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ const { isDirectory, pathExists } = require('../utils/filemanager/filesystem');
1313
const createFile = require('../utils/filemanager/createfile');
1414
const updateFile = require('../utils/filemanager/updatefile');
1515
const deleteFile = require('../utils/filemanager/deletefile');
16-
const { flowDataToReadableData, readableDataToFlowData } = require('../utils/parser');
1716
const readFile = require('../utils/filemanager/readfile');
1817
const FlowtestAI = require('../utils/flowtestai');
1918
const { stringify, parse } = require('flatted');
19+
const { deserialize, serialize } = require('../utils/flowparser/parser');
2020

2121
const collectionStore = new Collections();
2222
const flowTestAI = new FlowtestAI();
@@ -227,8 +227,8 @@ const registerRendererEventHandlers = (mainWindow, watcher) => {
227227
ipcMain.handle('renderer:create-flowtest', async (event, name, path, flowData) => {
228228
try {
229229
if (isDirectory(path)) {
230-
const readableData = flowData ? flowDataToReadableData(flowData) : {};
231-
createFile(`${name}.flow`, path, JSON.stringify(readableData, null, 4));
230+
const textData = deserialize(flowData);
231+
createFile(`${name}.flow`, path, JSON.stringify(textData, null, 4));
232232
console.log(`Created file: ${name}.flow`);
233233
}
234234
} catch (error) {
@@ -239,7 +239,7 @@ const registerRendererEventHandlers = (mainWindow, watcher) => {
239239
ipcMain.handle('renderer:read-flowtest', async (event, pathname, collectionId) => {
240240
try {
241241
const content = readFile(pathname);
242-
const flowData = content === '{}' ? undefined : readableDataToFlowData(JSON.parse(content));
242+
const flowData = serialize(JSON.parse(content));
243243
mainWindow.webContents.send('main:read-flowtest', pathname, collectionId, flowData);
244244
} catch (error) {
245245
return Promise.reject(error);
@@ -248,14 +248,14 @@ const registerRendererEventHandlers = (mainWindow, watcher) => {
248248

249249
ipcMain.handle('renderer:read-flowtest-sync', (event, pathname) => {
250250
const content = readFile(pathname);
251-
const flowData = content === '{}' ? undefined : readableDataToFlowData(JSON.parse(content));
251+
const flowData = serialize(JSON.parse(content));
252252
return flowData;
253253
});
254254

255255
ipcMain.handle('renderer:update-flowtest', async (event, pathname, flowData) => {
256256
try {
257-
const readableData = flowDataToReadableData(flowData);
258-
updateFile(pathname, JSON.stringify(readableData, null, 4));
257+
const textData = deserialize(flowData);
258+
updateFile(pathname, JSON.stringify(textData, null, 4));
259259
console.log(`Updated file: ${pathname}`);
260260
} catch (error) {
261261
return Promise.reject(error);

packages/flowtest-electron/src/utils/flowparser/parser.js

Lines changed: 118 additions & 130 deletions
Original file line numberDiff line numberDiff line change
@@ -17,125 +17,127 @@ const deserialize = (flowData) => {
1717
textData.version = VERSION;
1818
textData.graph = {};
1919

20-
if (flowData.nodes) {
21-
const nodes = flowDataCopy.nodes;
22-
textData.graph.data = {};
23-
textData.graph.data.nodes = {};
24-
textData.graph.metadata = {};
25-
textData.graph.metadata.nodes = {};
26-
27-
nodes.forEach((node) => {
28-
if (node.type === 'startNode') {
29-
const sNode = new StartNode();
30-
const result = sNode.deserialize(node);
31-
32-
textData.graph.data.nodes[result.id] = {
33-
type: 'startNode',
34-
};
35-
36-
textData.graph.metadata.nodes[result.id] = {
37-
type: 'startNode',
38-
...result.metadata,
39-
};
40-
}
41-
42-
if (node.type === 'authNode') {
43-
const aNode = new AuthNode();
44-
const result = aNode.deserialize(node);
45-
textData.graph.data.nodes[result.id] = {
46-
type: 'authNode',
47-
auth: result.data,
48-
};
49-
50-
textData.graph.metadata.nodes[result.id] = {
51-
type: 'authNode',
52-
...result.metadata,
53-
};
54-
}
55-
56-
if (node.type === 'requestNode') {
57-
const rNode = new RequestNode();
58-
const result = rNode.deserialize(node);
59-
textData.graph.data.nodes[result.id] = {
60-
type: 'requestNode',
61-
...result.data,
62-
};
63-
64-
textData.graph.metadata.nodes[result.id] = {
65-
type: 'requestNode',
66-
...result.metadata,
67-
};
68-
}
69-
70-
if (node.type === 'outputNode') {
71-
const oNode = new OutputNode();
72-
const result = oNode.deserialize(node);
73-
textData.graph.data.nodes[result.id] = {
74-
type: 'outputNode',
75-
...result.data,
76-
};
77-
78-
textData.graph.metadata.nodes[result.id] = {
79-
type: 'outputNode',
80-
...result.metadata,
81-
};
82-
}
83-
84-
if (node.type === 'delayNode') {
85-
const dNode = new DelayNode();
86-
const result = dNode.deserialize(node);
87-
textData.graph.data.nodes[result.id] = {
88-
type: 'delayNode',
89-
...result.data,
90-
};
91-
92-
textData.graph.metadata.nodes[result.id] = {
93-
type: 'delayNode',
94-
...result.metadata,
95-
};
96-
}
97-
98-
if (node.type === 'evaluateNode') {
99-
const eNode = new EvaluateNode();
100-
const result = eNode.deserialize(node);
101-
textData.graph.data.nodes[result.id] = {
102-
type: 'evaluateNode',
103-
...result.data,
104-
};
105-
106-
textData.graph.metadata.nodes[result.id] = {
107-
type: 'evaluateNode',
108-
...result.metadata,
109-
};
110-
}
111-
112-
if (node.type === 'complexNode') {
113-
const cNode = new ComplexNode();
114-
const result = cNode.deserialize(node);
115-
textData.graph.data.nodes[result.id] = {
116-
type: 'complexNode',
117-
...result.data,
118-
};
119-
120-
textData.graph.metadata.nodes[result.id] = {
121-
type: 'complexNode',
122-
...result.metadata,
123-
};
124-
}
125-
});
126-
}
20+
if (flowData) {
21+
if (flowData.nodes) {
22+
const nodes = flowDataCopy.nodes;
23+
textData.graph.data = {};
24+
textData.graph.data.nodes = {};
25+
textData.graph.metadata = {};
26+
textData.graph.metadata.nodes = {};
27+
28+
nodes.forEach((node) => {
29+
if (node.type === 'startNode') {
30+
const sNode = new StartNode();
31+
const result = sNode.deserialize(node);
32+
33+
textData.graph.data.nodes[result.id] = {
34+
type: 'startNode',
35+
};
36+
37+
textData.graph.metadata.nodes[result.id] = {
38+
type: 'startNode',
39+
...result.metadata,
40+
};
41+
}
12742

128-
if (flowData.edges) {
129-
const edges = flowDataCopy.edges;
130-
textData.graph.data.edges = [];
131-
textData.graph.metadata.edges = {};
43+
if (node.type === 'authNode') {
44+
const aNode = new AuthNode();
45+
const result = aNode.deserialize(node);
46+
textData.graph.data.nodes[result.id] = {
47+
type: 'authNode',
48+
auth: result.data,
49+
};
50+
51+
textData.graph.metadata.nodes[result.id] = {
52+
type: 'authNode',
53+
...result.metadata,
54+
};
55+
}
13256

133-
edges.forEach((edge) => {
134-
textData.graph.data.edges.push(`${edge.source} -> ${edge.target}`);
57+
if (node.type === 'requestNode') {
58+
const rNode = new RequestNode();
59+
const result = rNode.deserialize(node);
60+
textData.graph.data.nodes[result.id] = {
61+
type: 'requestNode',
62+
...result.data,
63+
};
64+
65+
textData.graph.metadata.nodes[result.id] = {
66+
type: 'requestNode',
67+
...result.metadata,
68+
};
69+
}
70+
71+
if (node.type === 'outputNode') {
72+
const oNode = new OutputNode();
73+
const result = oNode.deserialize(node);
74+
textData.graph.data.nodes[result.id] = {
75+
type: 'outputNode',
76+
...result.data,
77+
};
78+
79+
textData.graph.metadata.nodes[result.id] = {
80+
type: 'outputNode',
81+
...result.metadata,
82+
};
83+
}
84+
85+
if (node.type === 'delayNode') {
86+
const dNode = new DelayNode();
87+
const result = dNode.deserialize(node);
88+
textData.graph.data.nodes[result.id] = {
89+
type: 'delayNode',
90+
...result.data,
91+
};
92+
93+
textData.graph.metadata.nodes[result.id] = {
94+
type: 'delayNode',
95+
...result.metadata,
96+
};
97+
}
13598

136-
const { ['id']: _, ..._edge } = edge;
137-
textData.graph.metadata.edges[edge.id] = _edge;
138-
});
99+
if (node.type === 'evaluateNode') {
100+
const eNode = new EvaluateNode();
101+
const result = eNode.deserialize(node);
102+
textData.graph.data.nodes[result.id] = {
103+
type: 'evaluateNode',
104+
...result.data,
105+
};
106+
107+
textData.graph.metadata.nodes[result.id] = {
108+
type: 'evaluateNode',
109+
...result.metadata,
110+
};
111+
}
112+
113+
if (node.type === 'complexNode') {
114+
const cNode = new ComplexNode();
115+
const result = cNode.deserialize(node);
116+
textData.graph.data.nodes[result.id] = {
117+
type: 'complexNode',
118+
...result.data,
119+
};
120+
121+
textData.graph.metadata.nodes[result.id] = {
122+
type: 'complexNode',
123+
...result.metadata,
124+
};
125+
}
126+
});
127+
}
128+
129+
if (flowData.edges) {
130+
const edges = flowDataCopy.edges;
131+
textData.graph.data.edges = [];
132+
textData.graph.metadata.edges = {};
133+
134+
edges.forEach((edge) => {
135+
textData.graph.data.edges.push(`${edge.source} -> ${edge.target}`);
136+
137+
const { ['id']: _, ..._edge } = edge;
138+
textData.graph.metadata.edges[edge.id] = _edge;
139+
});
140+
}
139141
}
140142

141143
return textData;
@@ -222,20 +224,6 @@ const serialize = (textData) => {
222224
throw new Error('Version not recognized');
223225
}
224226

225-
// const nodeData = readableDataCopy.nodes;
226-
// const nodeMetadata = readableDataCopy.metadata.nodes;
227-
// const edges = readableDataCopy.metadata.edges;
228-
229-
// flowData['nodes'] = [];
230-
// flowData['edges'] = edges;
231-
232-
// nodeData.forEach((nData, index) => {
233-
// flowData['nodes'].push({
234-
// ...nData,
235-
// ...nodeMetadata[index],
236-
// });
237-
// });
238-
239227
return flowData;
240228
};
241229

0 commit comments

Comments
 (0)