diff --git a/extensions/default/src/CustomizableContextMenu/ContextMenuController.tsx b/extensions/default/src/CustomizableContextMenu/ContextMenuController.tsx index 9d65b971d..752929063 100644 --- a/extensions/default/src/CustomizableContextMenu/ContextMenuController.tsx +++ b/extensions/default/src/CustomizableContextMenu/ContextMenuController.tsx @@ -1,6 +1,7 @@ import * as ContextMenuItemsBuilder from './ContextMenuItemsBuilder'; import ContextMenu from '../../../../platform/ui/src/components/ContextMenu/ContextMenu'; import { CommandsManager, ServicesManager, Types } from '@ohif/core'; +import { annotation as CsAnnotation } from '@cornerstonejs/tools'; import { Menu, MenuItem, Point, ContextMenuProps } from './types'; /** @@ -47,6 +48,18 @@ export default class ContextMenuController { const { event, subMenu, menuId, menus, selectorProps } = contextMenuProps; + const annotationManager = CsAnnotation.state.getAnnotationManager(); + const { locking } = CsAnnotation; + const targetAnnotationId = selectorProps?.nearbyToolData?.annotationUID as string; + const isLocked = locking.isAnnotationLocked( + annotationManager.getAnnotation(targetAnnotationId) + ); + + if (isLocked) { + console.warn('Annotation is locked.'); + return; + } + console.log('Getting items from', menus); const items = ContextMenuItemsBuilder.getMenuItems( selectorProps || contextMenuProps, diff --git a/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/hydrateStructuredReport.tsx b/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/hydrateStructuredReport.tsx index 22d04aaf7..480b33310 100644 --- a/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/hydrateStructuredReport.tsx +++ b/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/hydrateStructuredReport.tsx @@ -1,13 +1,13 @@ import { hydrateStructuredReport as baseHydrateStructuredReport } from '@ohif/extension-cornerstone-dicom-sr'; -function hydrateStructuredReport({ servicesManager, extensionManager }, ctx, evt) { +function hydrateStructuredReport({ servicesManager, extensionManager, appConfig }, ctx, evt) { const { displaySetService } = servicesManager.services; const { viewportId, displaySetInstanceUID } = evt; const srDisplaySet = displaySetService.getDisplaySetByUID(displaySetInstanceUID); return new Promise((resolve, reject) => { const hydrationResult = baseHydrateStructuredReport( - { servicesManager, extensionManager }, + { servicesManager, extensionManager, appConfig }, displaySetInstanceUID ); diff --git a/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.tsx b/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.tsx index 7b0ca7977..3605995c6 100644 --- a/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.tsx +++ b/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.tsx @@ -10,6 +10,7 @@ import { } from '@ohif/ui'; import { DicomMetadataStore, utils } from '@ohif/core'; import { useDebounce } from '@hooks'; +import { useAppConfig } from '@state'; import ActionButtons from './ActionButtons'; import { useTrackedMeasurements } from '../../getContextModule'; import debounce from 'lodash.debounce'; @@ -36,6 +37,7 @@ function PanelMeasurementTableTracking({ servicesManager, extensionManager }) { ); const [displayMeasurements, setDisplayMeasurements] = useState([]); const measurementsPanelRef = useRef(null); + const [appConfig] = useAppConfig(); useEffect(() => { const measurements = measurementService.getMeasurements(); @@ -244,20 +246,22 @@ function PanelMeasurementTableTracking({ servicesManager, extensionManager }) { /> )} -