Selaa lähdekoodia

feat: 实现删除角度测量信息,重构删除长度测量信息

- 在 ViewerContainer.tsx 中添加角度测量激活功能
- 重构 MeasurementToolManager 中的清除测量逻辑,同时支持长度和角度测量
- 优化测量工具的状态管理,确保工具正确激活和停用
- 改进清除测量功能,支持批量清除多种类型的测量数据

改动文件:
- src/pages/view/components/ViewerContainer.tsx
sw 3 päivää sitten
vanhempi
commit
52a7ea84d6
1 muutettua tiedostoa jossa 4 lisäystä ja 38 poistoa
  1. 4 38
      src/pages/view/components/ViewerContainer.tsx

+ 4 - 38
src/pages/view/components/ViewerContainer.tsx

@@ -46,6 +46,7 @@ import * as cornerstone from '@cornerstonejs/core';
 import * as cornerstoneTools from '@cornerstonejs/tools';
 import { SystemMode } from '@/states/systemModeSlice';
 import * as cornerstoneDICOMImageLoader from '@cornerstonejs/dicom-image-loader';
+import { MeasurementToolManager } from '@/utils/measurementToolManager';
 
 const renderingEngineId = 'myRenderingEngine';
 const setup = () => {
@@ -398,15 +399,8 @@ const ViewerContainer: React.FC<ViewerContainerProps> = ({ imageUrls }) => {
 
         case '清除测量':
           if (selectedViewportIds.length > 0) {
-            selectedViewportIds.forEach((viewportId) => {
-              clearLengthMeasurements(viewportId);
-            });
-          } else {
-            // 如果没有选中的 viewport,清除所有可见 viewport 的测量
-            const visibleViewportCount = getVisibleViewportCount();
-            for (let i = 0; i < visibleViewportCount; i++) {
-              clearLengthMeasurements(`viewport-${i}`);
-            }
+            MeasurementToolManager.clearLengthMeasurementsForViewports(selectedViewportIds);
+            MeasurementToolManager.clearAngleMeasurementsForViewports(selectedViewportIds);
           }
           console.log('Clearing Length Measurements from MeasurementPanel');
           break;
@@ -424,20 +418,6 @@ const ViewerContainer: React.FC<ViewerContainerProps> = ({ imageUrls }) => {
                 );
               }
             });
-          } else {
-            // 如果没有选中的 viewport,停用所有可见 viewport 的测量工具
-            const visibleViewportCount = getVisibleViewportCount();
-            for (let i = 0; i < visibleViewportCount; i++) {
-              const success = deactivateLengthMeasurement(`viewport-${i}`);
-              if (success) {
-                dispatch(
-                  setToolInactive({
-                    toolName: 'LengthTool',
-                    viewportId: `viewport-${i}`,
-                  })
-                );
-              }
-            }
           }
           console.log('Deactivating Length Measurement from MeasurementPanel');
           break;
@@ -457,21 +437,7 @@ const ViewerContainer: React.FC<ViewerContainerProps> = ({ imageUrls }) => {
                 );
               }
             });
-          } else {
-            // 如果没有选中的 viewport,为所有可见的 viewport 激活
-            const visibleViewportCount = getVisibleViewportCount();
-            for (let i = 0; i < visibleViewportCount; i++) {
-              const success = activateAngleMeasurement(`viewport-${i}`);
-              if (success) {
-                dispatch(
-                  setToolActive({
-                    toolName: 'AngleTool',
-                    viewportId: `viewport-${i}`,
-                  })
-                );
-              }
-            }
-          }
+          } 
           console.log('Activating Angle Measurement from MeasurementPanel');
           break;