Skip to content

Commit 6faf358

Browse files
committed
ref: structure and internal dependencies
Signed-off-by: Vladimir Zaikin <[email protected]>
1 parent a92d0ed commit 6faf358

File tree

10 files changed

+401
-379
lines changed

10 files changed

+401
-379
lines changed

.github/workflows/INflow.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,6 @@ jobs:
6161
run: |
6262
npx nyc report
6363
echo '## Coverage' >> $GITHUB_STEP_SUMMARY
64+
echo '```' >> $GITHUB_STEP_SUMMARY
6465
npx nyc report --reporter=text-summary >> $GITHUB_STEP_SUMMARY
66+
echo '```' >> $GITHUB_STEP_SUMMARY

INflow/src/flows/MainFlow.tsx

Lines changed: 17 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -21,27 +21,15 @@ import { useINflowState } from '@utils/INflowContext';
2121
import { useDnD } from '@utils/DnDContext';
2222
import { useNodeParametersState } from '@utils/MCContext';
2323
import { nodeTypes, edgeTypes } from '@utils/typesElements';
24-
import { netSetup } from '@utils/netSetup';
24+
import { compareNet } from '@/utils/netCompare';
25+
import { getNetSetup, updateLocalStorage } from '@/utils/dataManagement';
2526

26-
import {
27-
type Agent,
28-
getObjectFromJSON,
29-
toNetFromObject,
30-
isActivePair,
31-
getTargetHandle,
32-
validate,
33-
defPointCon,
34-
type Net,
35-
toObjectFromNet,
36-
} from '@/nets';
37-
import MenuControl, { compareNet, NetMode } from '@components/MenuControl';
27+
import { type Agent, isActivePair, type Net, isAllowedToCreate } from '@/nets';
28+
import MenuControl, { NetMode } from '@components/MenuControl';
3829
import MenuLayouts from '@components/MenuLayouts';
3930
import MenuConfig from '@components/MenuConfig';
4031
import MenuInfo from '@components/MenuInfo';
4132

42-
// Reset localStorage: `localStorage.removeItem(keyStorageNet);`
43-
const keyStorageNet = 'net-setup';
44-
4533
const indexNet = 0;
4634

4735
export default (): JSX.Element => {
@@ -55,42 +43,16 @@ export default (): JSX.Element => {
5543
} = useINflowState();
5644

5745
// Setup
58-
59-
const updateLocalStorage = async () => {
60-
const netObj = await toObjectFromNet({ agents: nodes, edges: edges, name: fileOpened }, true);
61-
localStorage.setItem(keyStorageNet, JSON.stringify(netObj));
62-
};
63-
6446
const onInit: OnInit<Agent, Edge> = (instance: ReactFlowInstance<Agent, Edge>) => {
6547
const setup = async () => {
66-
let [nds, eds]: [Agent[] | null, Edge[] | null] = [null, null];
67-
let nameFile: string = '';
68-
69-
try {
70-
const netJSON = localStorage.getItem(keyStorageNet);
71-
if (netJSON) {
72-
const netObj = await getObjectFromJSON(netJSON);
73-
const net: Net = await toNetFromObject(netObj, typeNode, typeEdge);
74-
[nds, eds] = [net.agents, net.edges];
75-
nameFile = `IN_${net.agents.length}_agents_${net.edges.length}_edges.back`;
76-
console.log("Setup from 'localStorage'");
77-
}
78-
} catch (error) {
79-
console.log(error);
80-
}
81-
82-
if (!nds || !eds) {
83-
[nds, eds, nameFile] = [netSetup.agents, netSetup.edges, netSetup.name];
84-
}
85-
86-
instance.setNodes(nds);
87-
instance.setEdges(eds);
88-
setFileOpened(nameFile);
48+
const net = await getNetSetup(typeNode, typeEdge);
49+
instance.setNodes(net.agents);
50+
instance.setEdges(net.edges);
51+
setFileOpened(net.name);
8952
};
9053

9154
setup();
9255
fitView();
93-
// updateLocalStorage();
9456
};
9557

9658
// Main
@@ -108,25 +70,19 @@ export default (): JSX.Element => {
10870
const isRunningLayout = isRunningLayouts[indexNet];
10971
const setIsRunningLayout = (value: boolean) => {
11072
setIsRunningLayouts(flags => [value, flags[1]]);
111-
// if (!value) updateLocalStorage();
11273
};
11374

11475
// Add and edit net
11576

11677
const {
11778
nodeId,
118-
setNodeId,
11979
nodeLabel,
120-
setNodeLabel,
12180
nodeAuxiliaryPorts,
122-
setNodeAuxiliaryPorts,
12381
nodePrincipalPort,
124-
setNodePrincipalPort,
12582
nodeAuxiliaryLinks,
126-
setNodeAuxiliaryLinks,
12783
nodePrincipalLink,
128-
setNodePrincipalLink,
12984
cleanUpInfoNode,
85+
setMCContext,
13086
} = useNodeParametersState();
13187

13288
/// Add node
@@ -184,7 +140,6 @@ export default (): JSX.Element => {
184140
});
185141

186142
cleanUpInfoNode();
187-
// updateLocalStorage();
188143
};
189144

190145
//// Add node with drag
@@ -216,6 +171,7 @@ export default (): JSX.Element => {
216171
);
217172

218173
/// Add edge with drag
174+
219175
const onConnect = useCallback(
220176
(params: Connection) => {
221177
const isActPair = isActivePair(params, nodes);
@@ -235,10 +191,8 @@ export default (): JSX.Element => {
235191
eds,
236192
),
237193
);
238-
239-
// updateLocalStorage();
240194
},
241-
[typeEdge, nodes, updateLocalStorage],
195+
[typeEdge, nodes],
242196
);
243197

244198
const onDragOver = useCallback((event: any) => {
@@ -248,16 +202,7 @@ export default (): JSX.Element => {
248202

249203
/// Adding button
250204
const isAllowed = useCallback(() => {
251-
if (!validate(nodeId) || !validate(nodeLabel) || !validate(nodePrincipalPort.id)) return false;
252-
253-
const setPorts = new Set([nodePrincipalPort.id]);
254-
255-
for (const port of nodeAuxiliaryPorts) {
256-
if (!validate(port.id)) return false;
257-
setPorts.add(port.id.trim());
258-
}
259-
260-
return setPorts.size === nodeAuxiliaryPorts.length + 1;
205+
return isAllowedToCreate(nodeId, nodeLabel, nodePrincipalPort, nodeAuxiliaryPorts);
261206
}, [nodeId, nodeLabel, nodePrincipalPort, nodeAuxiliaryPorts]);
262207

263208
// Selected node
@@ -276,50 +221,6 @@ export default (): JSX.Element => {
276221

277222
useOnSelectionChange({ onChange });
278223

279-
const setNodeInfoBySelect = useCallback(() => {
280-
if (!nodeSelected) {
281-
cleanUpInfoNode();
282-
return;
283-
}
284-
285-
setNodeId(nodeSelected.id);
286-
setNodeLabel(nodeSelected.data.label);
287-
const auxPorts = nodeSelected.data.auxiliaryPorts;
288-
setNodeAuxiliaryPorts(auxPorts);
289-
setNodePrincipalPort(nodeSelected.data.principalPort);
290-
setNodeAuxiliaryLinks(Array(auxPorts.length).fill(defPointCon));
291-
292-
edges.forEach(edge => {
293-
if (edge.source === nodeSelected.id) {
294-
if (nodeSelected.data.principalPort.id === edge.sourceHandle) {
295-
setNodePrincipalLink({ idNode: edge.target, idPort: getTargetHandle(edge) });
296-
} else {
297-
const indexAuxPort = auxPorts.findIndex(port => port.id === edge.sourceHandle);
298-
setNodeAuxiliaryLinks(links =>
299-
links.map((port, i) =>
300-
i === indexAuxPort
301-
? { ...port, idNode: edge.target, idPort: getTargetHandle(edge) }
302-
: port,
303-
),
304-
);
305-
}
306-
} else if (edge.target === nodeSelected.id) {
307-
if (nodeSelected.data.principalPort.id === getTargetHandle(edge)) {
308-
setNodePrincipalLink({ idNode: edge.source, idPort: edge.sourceHandle ?? '' });
309-
} else {
310-
const indexAuxPort = auxPorts.findIndex(port => port.id === getTargetHandle(edge));
311-
setNodeAuxiliaryLinks(links =>
312-
links.map((port, i) =>
313-
i === indexAuxPort
314-
? { ...port, idNode: edge.source, idPort: edge.sourceHandle ?? '' }
315-
: port,
316-
),
317-
);
318-
}
319-
}
320-
});
321-
}, [nodeSelected]);
322-
323224
// Several nets
324225

325226
const setNetCur = (net: Net) => {
@@ -362,14 +263,17 @@ export default (): JSX.Element => {
362263
// Effects
363264

364265
useEffect(() => {
365-
if (nodes.length) updateLocalStorage();
266+
if (nodes.length) updateLocalStorage(nodes, edges, fileOpened);
366267
}, [nodes.length, edges.length]);
367268

368269
useEffect(() => {
369270
if (isRunningLayout) unselectNode();
370271
}, [unselectNode]);
371272

372-
useEffect(setNodeInfoBySelect, [setNodeInfoBySelect]);
273+
useEffect(() => {
274+
setMCContext(nodeSelected, edges);
275+
// setNodeInfoBySelect();
276+
}, [nodeSelected]);
373277

374278
useEffect(() => {
375279
if (indexCur < 0 || netsSaved.length === 0) return;

INflow/src/flows/SubFlow.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ import { useINflowState } from '@utils/INflowContext';
1616
import { nodeTypes, edgeTypes } from '@utils/typesElements';
1717

1818
import { type Agent, type Net } from '@/nets';
19-
import { SimplifyMenuControl, NetMode, compareNet } from '@components/MenuControl';
19+
import { SimplifyMenuControl, NetMode } from '@components/MenuControl';
2020
import MenuLayouts from '@components/MenuLayouts';
21+
import { compareNet } from '@/utils/netCompare';
2122

2223
const indexNet = 1;
2324

0 commit comments

Comments
 (0)