diff --git a/src/components/graph/menus/network-modifications/network-modification-node-editor.tsx b/src/components/graph/menus/network-modifications/network-modification-node-editor.tsx index 16851651f6..eed07db772 100644 --- a/src/components/graph/menus/network-modifications/network-modification-node-editor.tsx +++ b/src/components/graph/menus/network-modifications/network-modification-node-editor.tsx @@ -180,6 +180,9 @@ const NetworkModificationNodeEditor = () => { const [isDragging, setIsDragging] = useState(false); const [isAssemblyDepthExceeded, setIsAssemblyDepthExceeded] = useState(false); + // Whether the current selection reaches inside a shared modification the user can't write into. + const [selectionContainsLockedModification, setSelectionContainsLockedModification] = useState(false); + const [editDialogOpen, setEditDialogOpen] = useState(undefined); const [editData, setEditData] = useState(undefined); const [editDataFetchStatus, setEditDataFetchStatus] = useState(FetchStatus.IDLE); @@ -1039,9 +1042,14 @@ const NetworkModificationNodeEditor = () => { setIsUpdate(false); }; const handleRowSelected = useCallback( - (selectedRows: ComposedModificationMetadata[], isAssemblyDepthExceeded: boolean) => { + ( + selectedRows: ComposedModificationMetadata[], + isAssemblyDepthExceeded: boolean, + containsLockedModification: boolean + ) => { setSelectedNetworkModifications(selectedRows); setIsAssemblyDepthExceeded(isAssemblyDepthExceeded); + setSelectionContainsLockedModification(containsLockedModification); }, [setSelectedNetworkModifications, setIsAssemblyDepthExceeded] ); @@ -1197,7 +1205,8 @@ const NetworkModificationNodeEditor = () => { isRootNode || isAssemblyDepthExceeded || isEditBlocked || - selectionContainsShared + selectionContainsShared || + selectionContainsLockedModification ); }, [ selectedNetworkModifications?.length, @@ -1206,6 +1215,7 @@ const NetworkModificationNodeEditor = () => { isAssemblyDepthExceeded, isEditBlocked, selectionContainsShared, + selectionContainsLockedModification, ]); const disabledCompositeExport: boolean = useMemo(() => { @@ -1311,7 +1321,8 @@ const NetworkModificationNodeEditor = () => { isEditBlocked || mapDataLoading || !currentNode || - isRootNode + isRootNode || + selectionContainsLockedModification } data-testid="CutModification" > @@ -1351,7 +1362,7 @@ const NetworkModificationNodeEditor = () => { @@ -1368,7 +1379,8 @@ const NetworkModificationNodeEditor = () => { isEditBlocked || mapDataLoading || !currentNode || - isRootNode + isRootNode || + selectionContainsLockedModification } data-testid="DeleteModification" > diff --git a/src/hooks/use-study-path.ts b/src/hooks/use-study-path.ts index 97a1f33944..ffed392d14 100644 --- a/src/hooks/use-study-path.ts +++ b/src/hooks/use-study-path.ts @@ -7,6 +7,7 @@ import { useCallback, useEffect, useRef, useState } from 'react'; import { + DirectoriesNotificationType, fetchDirectoryElementPath, NotificationsUrlKeys, snackWithFallback, @@ -15,7 +16,6 @@ import { useSnackMessage, } from '@gridsuite/commons-ui'; import { computeFullPath } from '../utils/compute-title'; -import { directoriesNotificationType } from '../utils/directories-notification-type'; import type { UUID } from 'node:crypto'; import { isMetadataUpdatedNotification, parseEventData, CommonStudyEventData } from 'types/notification-types'; import { DIRECTORIES_INFOS, DirectoryInfos } from '../types/directory-server-types'; @@ -62,7 +62,7 @@ export default function useStudyPath(studyUuid: UUID | null) { (event: MessageEvent) => { const eventData = JSON.parse(event.data); if (eventData.headers) { - if (eventData.headers['notificationType'] === directoriesNotificationType.UPDATE_DIRECTORY) { + if (eventData.headers['notificationType'] === DirectoriesNotificationType.UPDATE_DIRECTORY) { // TODO: this receives notifications for all the public directories and all the user's private directories // At least we don't fetch everytime a notification is received, but we should instead limit the // number of notifications (they are sent to all the clients every time). Here we are only diff --git a/src/utils/directories-notification-type.ts b/src/utils/directories-notification-type.ts deleted file mode 100644 index ee0602ae45..0000000000 --- a/src/utils/directories-notification-type.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Copyright (c) 2022, RTE (http://www.rte-france.com) - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -export const directoriesNotificationType = { - DELETE_DIRECTORY: 'DELETE_DIRECTORY', - ADD_DIRECTORY: 'ADD_DIRECTORY', - UPDATE_DIRECTORY: 'UPDATE_DIRECTORY', -};