@@ -21,27 +21,15 @@ import { useINflowState } from '@utils/INflowContext';
2121import { useDnD } from '@utils/DnDContext' ;
2222import { useNodeParametersState } from '@utils/MCContext' ;
2323import { 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' ;
3829import MenuLayouts from '@components/MenuLayouts' ;
3930import MenuConfig from '@components/MenuConfig' ;
4031import MenuInfo from '@components/MenuInfo' ;
4132
42- // Reset localStorage: `localStorage.removeItem(keyStorageNet);`
43- const keyStorageNet = 'net-setup' ;
44-
4533const indexNet = 0 ;
4634
4735export 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 ;
0 commit comments