@@ -29,7 +29,7 @@ import { useIntl } from 'react-intl';
29
29
import { useDiagramTitle } from './use-diagram-title' ;
30
30
import { useSnackMessage } from '@gridsuite/commons-ui' ;
31
31
import { NodeType } from 'components/graph/tree-node.type' ;
32
- import { DiagramAdditionalMetadata } from '../diagram-common' ;
32
+ import { DiagramAdditionalMetadata , MAX_NUMBER_OF_NAD_DIAGRAMS } from '../diagram-common' ;
33
33
import { mergePositions } from '../diagram-utils' ;
34
34
import { DiagramMetadata } from '@powsybl/network-viewer' ;
35
35
@@ -41,7 +41,7 @@ type UseDiagramModelProps = {
41
41
42
42
export const useDiagramModel = ( { diagramTypes, onAddDiagram, onDiagramAlreadyExists } : UseDiagramModelProps ) => {
43
43
const intl = useIntl ( ) ;
44
- const { snackError } = useSnackMessage ( ) ;
44
+ const { snackInfo } = useSnackMessage ( ) ;
45
45
// context
46
46
const studyUuid = useSelector ( ( state : AppState ) => state . studyUuid ) ;
47
47
const currentNode = useSelector ( ( state : AppState ) => state . currentTreeNode ) ;
@@ -308,7 +308,7 @@ export const useDiagramModel = ({ diagramTypes, onAddDiagram, onDiagramAlreadyEx
308
308
diagram . type === DiagramType . SUBSTATION ? 'SubstationNotFound' : 'VoltageLevelNotFound' ;
309
309
} else {
310
310
errorMessage = 'svgLoadingFail' ;
311
- snackError ( {
311
+ snackInfo ( {
312
312
headerId : errorMessage ,
313
313
} ) ;
314
314
}
@@ -325,7 +325,7 @@ export const useDiagramModel = ({ diagramTypes, onAddDiagram, onDiagramAlreadyEx
325
325
} ) ;
326
326
} ) ;
327
327
} ,
328
- [ getDiagramTitle , getUrl , intl , snackError , networkVisuParams . networkAreaDiagramParameters . initNadWithGeoData ]
328
+ [ getDiagramTitle , getUrl , intl , snackInfo , networkVisuParams . networkAreaDiagramParameters . initNadWithGeoData ]
329
329
) ;
330
330
331
331
const findSimilarDiagram = useCallback (
@@ -356,8 +356,22 @@ export const useDiagramModel = ({ diagramTypes, onAddDiagram, onDiagramAlreadyEx
356
356
[ diagrams ]
357
357
) ;
358
358
359
+ const countOpenedNadDiagrams = ( diagrams : Record < UUID , Diagram > ) => {
360
+ return Object . values ( diagrams ) . filter ( ( diagram ) => diagram ?. type === DiagramType . NETWORK_AREA_DIAGRAM ) . length ;
361
+ } ;
362
+
359
363
const createDiagram = useCallback (
360
364
( diagramParams : DiagramParams ) => {
365
+ if (
366
+ diagramParams . type === DiagramType . NETWORK_AREA_DIAGRAM &&
367
+ countOpenedNadDiagrams ( diagrams ) >= MAX_NUMBER_OF_NAD_DIAGRAMS
368
+ ) {
369
+ snackInfo ( {
370
+ messageTxt : intl . formatMessage ( { id : 'MaxNumberOfNadDiagramsReached' } ) ,
371
+ } ) ;
372
+ return ;
373
+ }
374
+
361
375
if ( filterDiagramParams ( [ diagramParams ] ) . length === 0 ) {
362
376
// this hook instance don't manage this type of diagram
363
377
return ;
@@ -380,6 +394,9 @@ export const useDiagramModel = ({ diagramTypes, onAddDiagram, onDiagramAlreadyEx
380
394
filterDiagramParams ,
381
395
findSimilarDiagram ,
382
396
onDiagramAlreadyExists ,
397
+ diagrams ,
398
+ intl ,
399
+ snackInfo ,
383
400
]
384
401
) ;
385
402
0 commit comments