Browse Source

fix item undo bug

melon.yin 2 years ago
parent
commit
91e7222d9f
2 changed files with 12 additions and 7 deletions
  1. 2 0
      lib/item_create_test.dart
  2. 10 7
      lib/process/workspace/recorder.dart

+ 2 - 0
lib/item_create_test.dart

@@ -115,6 +115,8 @@ class TestItems {
     MeasureTerms.CervixL,
     MeasureTerms.CervixW,
     MeasureTerms.CervixH,
+    "IVSs",
+    "IVPWd",
     "AFI",
     "Tumor Cervix",
     "AxT",

+ 10 - 7
lib/process/workspace/recorder.dart

@@ -1,4 +1,5 @@
 import 'package:fis_measure/interfaces/enums/annotation.dart';
+import 'package:fis_measure/interfaces/process/items/item.dart';
 import 'package:fis_measure/interfaces/process/workspace/application.dart';
 import 'package:fis_measure/interfaces/process/workspace/recorder.dart';
 
@@ -78,19 +79,21 @@ class MeasureRecorder implements IMeasureRecorder {
     final matchs =
         _application.measureItems.where((e) => e.meta.name == record.name);
     if (matchs.isEmpty) return false;
-    final count = matchs.length;
-    for (var i = count - 1; i >= 0; i--) {
-      final item = matchs.elementAt(i);
+
+    final item = matchs.last;
+    if (item is ITopMeasureItem) {
+      _application.measureItems.remove(item);
+    } else {
       if (item.feature != null) {
         item.cancelOnce();
       } else if (item.measuredFeatures.isNotEmpty) {
         item.measuredFeatures.removeLast();
-        // item.calculator?.outputs.removeLast();
       }
-      return true;
+      if (item.measuredFeatures.isEmpty) {
+        _application.measureItems.remove(item);
+      }
     }
-
-    return false;
+    return true;
   }
 
   bool _undoOnceAnnotation(_AnnotationModel record) {