Browse Source

update(measure): 完成【简介注释】配置项 #0009583 Review by melon

gavin.chen 2 years ago
parent
commit
d8f826d844

+ 15 - 0
lib/interfaces/process/items/item_feature.dart

@@ -14,6 +14,9 @@ abstract class IMeasureItemFeature {
   /// 是否活动
   bool get isActive;
 
+  /// 样式配置
+  FeatureStyle get featureStyle;
+
   /// 序号
   int get id;
 
@@ -26,3 +29,15 @@ abstract class IMeasureItemFeature {
   /// 绘制
   void paint(Canvas canvas, Size size);
 }
+
+/// 测试项单次快照样式配置
+class FeatureStyle {
+  FeatureStyle(
+      {this.showDepthGuideline = false, this.showBriefAnnotation = false});
+
+  /// 是否显示深度测量线
+  bool showDepthGuideline;
+
+  /// 是否显示简短描述
+  bool showBriefAnnotation;
+}

+ 26 - 2
lib/process/items/item_feature.dart

@@ -1,3 +1,4 @@
+import 'package:fis_common/logger/logger.dart';
 import 'package:fis_measure/interfaces/date_types/point.dart';
 import 'package:fis_measure/interfaces/process/calculators/values.dart';
 import 'package:fis_measure/interfaces/process/items/item.dart';
@@ -16,6 +17,7 @@ import 'item.dart';
 abstract class MeasureItemFeature implements IMeasureItemFeature {
   late IMeasureItem _refItem;
   late List<DPoint> _innerPoints;
+  late FeatureStyle _featureStyle;
   IVisualArea? _hostVisualArea;
   bool _isActive = true;
   int _id = 0;
@@ -37,9 +39,18 @@ abstract class MeasureItemFeature implements IMeasureItemFeature {
     } else {
       _id = refItem.assignId();
     }
-
     _innerPoints = [];
     _recordHistory();
+    try {
+      final measureData = Get.find<MeasureDataController>();
+      _featureStyle = FeatureStyle(
+          showDepthGuideline:
+              measureData.measureSystemSetting.showDepthGuideline,
+          showBriefAnnotation:
+              measureData.measureSystemSetting.showBriefAnnotation);
+    } catch (e) {
+      logger.e("Init meature item's feature style failed: $e");
+    }
   }
 
   int get activeIndex => _activeIndex;
@@ -49,6 +60,9 @@ abstract class MeasureItemFeature implements IMeasureItemFeature {
     }
   }
 
+  @override
+  FeatureStyle get featureStyle => _featureStyle;
+
   @override
   List<DPoint> get innerPoints => _innerPoints;
 
@@ -74,8 +88,18 @@ abstract class MeasureItemFeature implements IMeasureItemFeature {
   @override
   int get id => _id;
 
+  /// 获取画布轨迹起点的角标文案,如果测量结果显示简洁注释,则会在轨迹起点显示简洁注释
+  String get idText => _getIdText();
+  String _getIdText() {
+    if (featureStyle.showBriefAnnotation) {
+      if (refItem.briefAnnotation.isNotEmpty) {
+        return '$id.${refItem.briefAnnotation}';
+      }
+    }
+    return '$id';
+  }
+
   /// 顶点尺寸
-  /// TODO:[Gavin] from config
   double get vertexSize =>
       measureData.measureSystemSetting.shapeCursorSize * refItem.scaleRatio;
 

+ 0 - 2
lib/process/primitives/carotid_imt.dart

@@ -93,8 +93,6 @@ class CarotidIMTFeature extends MeasureItemFeature {
   @override
   void paint(Canvas canvas, Size size) {
     if (startPoint == endPoint) return;
-
-    var idText = '$id.${refItem.briefAnnotation}';
     drawId(canvas, size, idText);
 
     final startOffset = convert2ViewPoint(size, startPoint).toOffset();

+ 0 - 1
lib/process/primitives/ellipse.dart

@@ -114,7 +114,6 @@ class EllipseFeature extends AreaItemFeatureAbstract {
   void paint(Canvas canvas, Size size) {
     if (innerPoints.isEmpty) return;
 
-    var idText = '$id.${refItem.briefAnnotation}';
     drawId(canvas, size, idText);
 
     final xStartOffset = convert2ViewPoint(size, xAxisStart).toOffset();

+ 0 - 3
lib/process/primitives/single_straightline.dart

@@ -115,8 +115,6 @@ class SingleStraightLineFeature extends MeasureItemFeature {
   @override
   void paint(Canvas canvas, Size size) {
     if (startPoint == endPoint) return;
-
-    var idText = '$id.${refItem.briefAnnotation}';
     drawId(canvas, size, idText);
 
     final startOffset = convert2ViewPoint(size, startPoint).toOffset();
@@ -146,7 +144,6 @@ class StraightLineHeartRateFeature extends SingleStraightLineFeature {
   @override
   void paint(Canvas canvas, Size size) {
     if (startPoint == endPoint) return;
-    var idText = '$id';
     drawId(canvas, size, idText);
     final startOffset = convert2ViewPoint(size, startPoint).toOffset();
     final endOffset = convert2ViewPoint(size, endPoint).toOffset();

+ 0 - 4
lib/process/primitives/straightline.dart

@@ -193,7 +193,6 @@ class StraightLineFeature extends MeasureItemFeature {
   void paint(Canvas canvas, Size size) {
     if (startPoint == endPoint) return;
 
-    var idText = '$id.${refItem.briefAnnotation}';
     drawId(canvas, size, idText);
 
     final startOffset = convert2ViewPoint(size, startPoint).toOffset();
@@ -214,7 +213,6 @@ class StraightLineTimeMotionFeature extends StraightLineFeature {
   @override
   void paint(Canvas canvas, Size size) {
     if (startPoint == endPoint) return;
-    var idText = '$id';
     drawId(canvas, size, idText);
 
     final startOffset = convert2ViewPoint(size, startPoint).toOffset();
@@ -238,7 +236,6 @@ class StraightLineSlopeFeature extends StraightLineFeature {
   void paint(Canvas canvas, Size size) {
     if (startPoint == endPoint) return;
 
-    var idText = '$id';
     drawId(canvas, size, idText);
 
     final startOffset = convert2ViewPoint(size, startPoint).toOffset();
@@ -259,7 +256,6 @@ class StraightLinePhtFeature extends StraightLineFeature {
   @override
   void paint(Canvas canvas, Size size) {
     if (startPoint == endPoint) return;
-    var idText = '$id';
     drawId(canvas, size, idText);
     final distanceToCenter = (startPoint.y - regionCenter.y);
     //TODO:[Gavin] 偏移量比例系数待精确

+ 40 - 26
lib/view/measure/measure_config/widgets/measure_configuration_style.dart

@@ -1,5 +1,6 @@
 // ignore_for_file: non_constant_identifier_names
 
+import 'package:fis_common/logger/logger.dart';
 import 'package:fis_i18n/i18n.dart';
 import 'package:fis_jsonrpc/rpc.dart';
 import 'package:fis_measure/process/workspace/measure_data_controller.dart';
@@ -15,9 +16,9 @@ part './measure_configuration_style_components.dart';
 
 /// 下拉选择的类
 class MeasureSelectModel {
-  MeasureSelectModel({required this.name, required this.code});
+  MeasureSelectModel({required this.name, required this.value});
   final String name;
-  final String code;
+  final int value;
 }
 
 MeasureCursorType getMeasureSystemSettingCursorType(
@@ -153,19 +154,19 @@ class _PatternBodyState extends FState<PatternBody> {
   static final List<MeasureSelectModel> C_MEASURE_TEXT_SIZE = [
     MeasureSelectModel(
       name: '10',
-      code: '10',
+      value: 10,
     ),
     MeasureSelectModel(
       name: '18',
-      code: '18',
+      value: 18,
     ),
     MeasureSelectModel(
       name: '20',
-      code: '20',
+      value: 20,
     ),
     MeasureSelectModel(
       name: '32',
-      code: '32',
+      value: 32,
     ),
   ];
 
@@ -277,12 +278,17 @@ class _PatternBodyState extends FState<PatternBody> {
               _PatternItem(
                 title: i18nBook.measure.fontSize.t,
                 item: _PatternItemSelect(
-                  textSize: C_MEASURE_TEXT_SIZE,
+                  itemList: C_MEASURE_TEXT_SIZE,
                   value: widget.measureSystemSetting.fontSize.toString(),
                   onChanged: (value) {
-                    setState(() {
-                      measureData.measureSystemSetting.fontSize = value;
-                    });
+                    try {
+                      setState(() {
+                        measureData.measureSystemSetting.fontSize =
+                            int.parse(value);
+                      });
+                    } catch (e) {
+                      logger.e("int.parse failed", e);
+                    }
                   },
                 ),
               ),
@@ -324,7 +330,8 @@ class _PatternBodyState extends FState<PatternBody> {
                 item: _PatternItemSwitch(
                   onChanged: (value) {
                     setState(() {
-                      widget.measureSystemSetting.showDepthGuideline = value;
+                      measureData.measureSystemSetting.showDepthGuideline =
+                          value;
                     });
                   },
                   value: widget.measureSystemSetting.showDepthGuideline,
@@ -336,7 +343,8 @@ class _PatternBodyState extends FState<PatternBody> {
                 item: _PatternItemSwitch(
                   onChanged: (value) {
                     setState(() {
-                      widget.measureSystemSetting.showBriefAnnotation = value;
+                      measureData.measureSystemSetting.showBriefAnnotation =
+                          value;
                     });
                   },
                   value: widget.measureSystemSetting.showBriefAnnotation,
@@ -346,12 +354,13 @@ class _PatternBodyState extends FState<PatternBody> {
               _PatternItem(
                 title: i18nBook.measure.autoAdjustCursor.t,
                 item: _PatternItemSelect(
-                  textSize: C_MEASURE_TEXT_SIZE,
-                  value:
-                      widget.measureSystemSetting.minCursorDistance.toString(),
+                  itemList: C_MEASURE_TEXT_SIZE,
+                  value: widget.measureSystemSetting.minCursorDistance ??
+                      C_MEASURE_TEXT_SIZE[0].value.toString(),
                   onChanged: (value) {
                     setState(() {
-                      widget.measureSystemSetting.minCursorDistance = value;
+                      measureData.measureSystemSetting.minCursorDistance =
+                          value;
                     });
                   },
                 ),
@@ -360,12 +369,12 @@ class _PatternBodyState extends FState<PatternBody> {
               _PatternItem(
                 title: i18nBook.measure.autoCaptureRange.t,
                 item: _PatternItemSelect(
-                  textSize: C_MEASURE_TEXT_SIZE,
-                  value:
-                      widget.measureSystemSetting.autoSnapDistance.toString(),
+                  itemList: C_MEASURE_TEXT_SIZE,
+                  value: widget.measureSystemSetting.autoSnapDistance ??
+                      C_MEASURE_TEXT_SIZE[0].value.toString(),
                   onChanged: (value) {
                     setState(() {
-                      widget.measureSystemSetting.autoSnapDistance = value;
+                      measureData.measureSystemSetting.autoSnapDistance = value;
                     });
                   },
                 ),
@@ -374,13 +383,18 @@ class _PatternBodyState extends FState<PatternBody> {
               _PatternItem(
                 title: i18nBook.measure.annotationFontSize.t,
                 item: _PatternItemSelect(
-                  textSize: C_MEASURE_TEXT_SIZE,
+                  itemList: C_MEASURE_TEXT_SIZE,
                   value:
                       widget.measureSystemSetting.annotationFontSize.toString(),
                   onChanged: (value) {
-                    setState(() {
-                      widget.measureSystemSetting.annotationFontSize = value;
-                    });
+                    try {
+                      setState(() {
+                        measureData.measureSystemSetting.annotationFontSize =
+                            int.parse(value);
+                      });
+                    } catch (e) {
+                      logger.e("int.parse failed", e);
+                    }
                   },
                 ),
               ),
@@ -390,7 +404,7 @@ class _PatternBodyState extends FState<PatternBody> {
                 item: _PatternItemSwitch(
                   onChanged: (value) {
                     setState(() {
-                      widget.measureSystemSetting.showProtocolInWorkSheet =
+                      measureData.measureSystemSetting.showProtocolInWorkSheet =
                           value;
                     });
                   },
@@ -403,7 +417,7 @@ class _PatternBodyState extends FState<PatternBody> {
                 item: _PatternItemSwitch(
                   onChanged: (value) {
                     setState(() {
-                      widget.measureSystemSetting.showAnnotation = value;
+                      measureData.measureSystemSetting.showAnnotation = value;
                     });
                   },
                   value: widget.measureSystemSetting.showAnnotation,

+ 4 - 4
lib/view/measure/measure_config/widgets/measure_configuration_style_components.dart

@@ -181,11 +181,11 @@ class _PatternItemSelect extends StatelessWidget implements FWidget {
   const _PatternItemSelect({
     required this.onChanged,
     required this.value,
-    required this.textSize,
+    required this.itemList,
   });
   final ValueCallback onChanged;
   final String value;
-  final List<MeasureSelectModel> textSize;
+  final List<MeasureSelectModel> itemList;
   @override
   FWidget build(BuildContext context) {
     return FContainer(
@@ -194,14 +194,14 @@ class _PatternItemSelect extends StatelessWidget implements FWidget {
         horizontal: 10,
       ),
       child: FSelect<MeasureSelectModel, String>(
-        source: textSize,
+        source: itemList,
         hintText: i18nBook.measure.selectAnnotationFontSize.t,
         value: value,
         clearable: false,
         height: 36,
         width: 400,
         optionLabelExtractor: (data) => data.name,
-        optionValueExtractor: (data) => data.code,
+        optionValueExtractor: (data) => data.value.toString(),
         onSelectChanged: (value, index) => onChanged.call(value),
       ),
     );

+ 21 - 9
lib/view/result/converter.dart

@@ -1,6 +1,7 @@
 import 'package:fis_measure/interfaces/process/calculators/values.dart';
 import 'package:fis_measure/interfaces/process/items/item.dart';
 import 'package:fis_measure/interfaces/process/items/item_feature.dart';
+import 'package:fis_measure/interfaces/process/items/item_metas.dart';
 import 'package:fis_measure/process/unit/convert/convert.dart';
 import 'package:fis_measure/values/unit_desc.dart';
 import 'package:fis_measure/view/result/results_panel.dart';
@@ -54,7 +55,8 @@ class FeatureValueDescConverter {
 
   List<ResultLine> _findFeatureLines(IMeasureItemFeature feature) {
     final count = feature.values.length;
-    final itemName = feature.refItem.displayName;
+    final itemName = _findMetaDisplayName(
+        feature.refItem.meta, feature.featureStyle.showBriefAnnotation);
     if (count == 0) {
       return [ResultLine(label: '$idStr $itemName')];
     }
@@ -68,8 +70,8 @@ class FeatureValueDescConverter {
       if (i == 0) {
         arr.add(ResultLine(label: "$idStr $itemName", value: valueStr));
       } else {
-        final name =
-            _findDisplayName(meta.description, meta.briefAnnotation, false);
+        final name = _findOutputMetaDisplayName(
+            meta, feature.featureStyle.showBriefAnnotation);
         arr.add(ResultLine(label: "$idPlaceStr $name", value: valueStr));
       }
     }
@@ -94,14 +96,24 @@ class FeatureValueDescConverter {
     return '';
   }
 
-  String _findDisplayName(String description, String? briefAnnotation,
-      [bool showAnnotation = false]) {
-    if (showAnnotation) {
-      if (briefAnnotation != null && briefAnnotation.isNotEmpty) {
-        return briefAnnotation;
+  String _findMetaDisplayName(ItemMeta meta,
+      [bool showBriefAnnotation = false]) {
+    if (showBriefAnnotation) {
+      if (meta.briefAnnotation.isNotEmpty) {
+        return meta.briefAnnotation;
       }
     }
-    return description;
+    return meta.description;
+  }
+
+  String _findOutputMetaDisplayName(ItemOutputMeta meta,
+      [bool showBriefAnnotation = false]) {
+    if (showBriefAnnotation) {
+      if (meta.briefAnnotation != null && meta.briefAnnotation!.isNotEmpty) {
+        return meta.briefAnnotation!;
+      }
+    }
+    return meta.description;
   }
 
   double _roundDouble(double value, [int digits = 2]) {