Skip to content

Commit d855bfd

Browse files
authored
create security node and adjust creation rules for network modificati… (#3028)
* create security node and adjust creation rules for network modification nodes --------- Signed-off-by: SOUISSI Maissa (Externe) <[email protected]>
1 parent 8a4d230 commit d855bfd

File tree

4 files changed

+58
-13
lines changed

4 files changed

+58
-13
lines changed

src/components/graph/menus/create-node-menu.tsx

Lines changed: 52 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { type AppState, type NodeSelectionForCopy } from 'redux/reducer';
1818
import { UUID } from 'crypto';
1919
import NetworkModificationTreeModel from '../network-modification-tree-model';
2020
import { CopyType } from 'components/network-modification.type';
21-
import { CurrentTreeNode, isSecurityModificationNode, NodeType } from '../tree-node.type';
21+
import { CurrentTreeNode, isSecurityModificationNode, NetworkModificationNodeType, NodeType } from '../tree-node.type';
2222
import { NodeInsertModes } from 'types/notification-types';
2323
import { useParameterState } from 'components/dialogs/parameters/use-parameters-state';
2424
import { PARAM_DEVELOPER_MODE } from 'utils/config-params';
@@ -44,7 +44,12 @@ type NodeMenuItems = Record<string, MenuItem>;
4444

4545
interface CreateNodeMenuProps {
4646
position: { x: number; y: number };
47-
handleNodeCreation: (element: CurrentTreeNode, type: NodeType, insertMode: NodeInsertModes) => void;
47+
handleNodeCreation: (
48+
element: CurrentTreeNode,
49+
type: NodeType,
50+
insertMode: NodeInsertModes,
51+
networkModificationNodeType: NetworkModificationNodeType
52+
) => void;
4853
handleSecuritySequenceCreation: (element: CurrentTreeNode) => void;
4954
handleNodeRemoval: (activeNode: CurrentTreeNode) => void;
5055
handleClose: () => void;
@@ -135,8 +140,11 @@ const CreateNodeMenu: React.FC<CreateNodeMenuProps> = ({
135140
handleClose();
136141
}
137142

138-
function createNetworkModificationNode(insertMode: NodeInsertModes) {
139-
handleNodeCreation(activeNode, NodeType.NETWORK_MODIFICATION, insertMode);
143+
function createNetworkModificationNode(
144+
insertMode: NodeInsertModes,
145+
networkModificationNodeType: NetworkModificationNodeType
146+
) {
147+
handleNodeCreation(activeNode, NodeType.NETWORK_MODIFICATION, insertMode, networkModificationNodeType);
140148
handleClose();
141149
}
142150

@@ -265,24 +273,58 @@ const CreateNodeMenu: React.FC<CreateNodeMenuProps> = ({
265273
activeNode?.data?.globalBuildStatus === BUILD_STATUS.BUILDING ||
266274
isModificationsInProgress,
267275
},
268-
CREATE_MODIFICATION_NODE: {
276+
CREATE_MODIFICATION_NODE_CONSTRUCTION: {
269277
onRoot: true,
270-
hidden: isSecurityModificationNode(activeNode),
271-
id: 'createNetworkModificationNode',
278+
disabled: isSecurityModificationNode(activeNode),
279+
280+
id: 'createNetworkModificationConstructionNode',
281+
subMenuItems: {
282+
CREATE_MODIFICATION_NODE: {
283+
onRoot: true,
284+
action: () =>
285+
createNetworkModificationNode(
286+
NodeInsertModes.NewBranch,
287+
NetworkModificationNodeType.CONSTRUCTION
288+
),
289+
id: 'createNetworkModificationNodeInNewBranch',
290+
},
291+
INSERT_MODIFICATION_NODE_BEFORE: {
292+
onRoot: false,
293+
294+
action: () =>
295+
createNetworkModificationNode(NodeInsertModes.Before, NetworkModificationNodeType.CONSTRUCTION),
296+
id: 'insertNetworkModificationNodeAbove',
297+
},
298+
INSERT_MODIFICATION_NODE_AFTER: {
299+
onRoot: true,
300+
action: () =>
301+
createNetworkModificationNode(NodeInsertModes.After, NetworkModificationNodeType.CONSTRUCTION),
302+
id: 'insertNetworkModificationNodeBelow',
303+
},
304+
},
305+
},
306+
CREATE_MODIFICATION_NODE_SECURITY: {
307+
onRoot: true,
308+
id: 'createNetworkModificationSecurityNode',
272309
subMenuItems: {
273310
CREATE_MODIFICATION_NODE: {
274311
onRoot: true,
275-
action: () => createNetworkModificationNode(NodeInsertModes.NewBranch),
312+
action: () =>
313+
createNetworkModificationNode(NodeInsertModes.NewBranch, NetworkModificationNodeType.SECURITY),
276314
id: 'createNetworkModificationNodeInNewBranch',
277315
},
278316
INSERT_MODIFICATION_NODE_BEFORE: {
279317
onRoot: false,
280-
action: () => createNetworkModificationNode(NodeInsertModes.Before),
318+
disabled: !isSecurityModificationNode(activeNode),
319+
action: () =>
320+
createNetworkModificationNode(NodeInsertModes.Before, NetworkModificationNodeType.SECURITY),
281321
id: 'insertNetworkModificationNodeAbove',
282322
},
283323
INSERT_MODIFICATION_NODE_AFTER: {
284324
onRoot: true,
285-
action: () => createNetworkModificationNode(NodeInsertModes.After),
325+
disabled: !isSecurityModificationNode(activeNode),
326+
action: () =>
327+
createNetworkModificationNode(NodeInsertModes.After, NetworkModificationNodeType.SECURITY),
286328
id: 'insertNetworkModificationNodeBelow',
287329
},
288330
},

src/components/network-modification-tree-pane.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,14 +345,15 @@ export const NetworkModificationTreePane = ({ studyUuid, studyMapTreeDisplay, cu
345345
]);
346346

347347
const handleCreateNode = useCallback(
348-
(element, type, insertMode) => {
348+
(element, type, insertMode, networkModificationNodeType) => {
349349
getUniqueNodeName(studyUuid)
350350
.then((response) =>
351351
createTreeNode(studyUuid, element.id, insertMode, {
352352
name: response,
353353
type: type,
354354
localBuildStatus: BUILD_STATUS.NOT_BUILT,
355355
globalBuildStatus: BUILD_STATUS.NOT_BUILT,
356+
nodeType: networkModificationNodeType,
356357
}).catch((error) => {
357358
snackError({
358359
messageTxt: error.message,

src/translations/en.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -501,7 +501,8 @@
501501
"loadingOptions": "Loading...",
502502
"buildNode": "Build node",
503503
"maxBuiltNodeExceededError": "You have reached your user quota for builds per study, therefore you cannot build further nodes within this study. Please unbuild nodes in order to go below the limit of {limit} builds",
504-
"createNetworkModificationNode": "Create a new node",
504+
"createNetworkModificationConstructionNode": "Create a construction node",
505+
"createNetworkModificationSecurityNode": "Create a security node",
505506
"createNetworkModificationNodeInNewBranch": "in a new branch",
506507
"pasteNetworkModificationNodeInNewBranch": "in a new branch",
507508
"createSecuritySequence": "Create a security sequence",

src/translations/fr.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -501,7 +501,8 @@
501501
"loadingOptions": "Chargement...",
502502
"buildNode": "Réaliser le nœud",
503503
"maxBuiltNodeExceededError": "Vous avez atteint votre quota utilisateur en termes de réalisations par étude, vous ne pouvez donc plus réaliser de nœuds dans cette étude pour le moment. Merci de déréaliser des nœuds afin de redescendre sous le seuil de {limit} réalisations.",
504-
"createNetworkModificationNode": "Créer un nouveau nœud",
504+
"createNetworkModificationConstructionNode": "Créer un nœud de construction",
505+
"createNetworkModificationSecurityNode": "Créer un nœud de sécurité",
505506
"createNetworkModificationNodeInNewBranch": "dans une nouvelle branche",
506507
"pasteNetworkModificationNodeInNewBranch": "dans une nouvelle branche",
507508
"createSecuritySequence": "Créer un enchaînement de sécurité",

0 commit comments

Comments
 (0)