Browse Source

Merge branch 'master' of http://git.ius.plus:88/melon.yin/fis_lib_measure

gavin.chen 2 years ago
parent
commit
6ecfd8899b

+ 9 - 2
lib/interfaces/process/items/terms.dart

@@ -5,7 +5,7 @@ class MeasureUnsupportedTerms {
     PSAD,
     AntPelvic_Rest,
     AntPelvic_Valsalva,
-    HR,
+    // HR,
     HC_AC,
     FL_AC,
     FL_HC,
@@ -15,7 +15,7 @@ class MeasureUnsupportedTerms {
   static const PSAD = "PSAD";
   static const AntPelvic_Rest = "Ant. Pelvic(Rest)";
   static const AntPelvic_Valsalva = "Ant. Pelvic(Valsalva)";
-  static const HR = "HR";
+  // static const HR = "HR";
   static const HC_AC = "HC/AC";
   static const FL_AC = "FL/AC";
   static const FL_HC = "FL/HC";
@@ -23,6 +23,13 @@ class MeasureUnsupportedTerms {
   static const Vas_Plaque = "Vas Plaque";
 }
 
+class MeasurespecialsupportedTerms {
+  static const items = [
+    HR,
+  ];
+  static const HR = "HR";
+}
+
 class MeasureTerms {
   ///////////////////////////////////////////////////////////////////////////////////////////////////////
 

+ 99 - 0
lib/view/measure/combo_widget.dart

@@ -0,0 +1,99 @@
+import 'package:fis_measure/interfaces/process/workspace/application.dart';
+import 'package:fis_measure/process/primitives/straightline.dart';
+import 'package:fis_ui/index.dart';
+import 'package:flutter/material.dart';
+import 'package:fis_theme/theme.dart';
+import 'package:get/get.dart';
+
+class SpecialCombo extends FStatefulWidget {
+  const SpecialCombo({Key? key}) : super(key: key);
+
+  @override
+  FState<SpecialCombo> createState() => _SpecialComboState();
+}
+
+class _SpecialComboState extends FState<SpecialCombo> {
+  final application = Get.find<IApplication>();
+
+  late final item = application.activeMeasureItem!;
+  late int selectedIndex = 0;
+
+  FWidget buildHRButton(int index) {
+    return FInkWell(
+      onTap: () {
+        final hRFeature = item.feature as StraightLineHeartRateFeature;
+        hRFeature.setHeartRate(index);
+        setState(() {
+          selectedIndex = index;
+        });
+      },
+      child: FContainer(
+        color: selectedIndex == index ? Colors.greenAccent : Colors.transparent,
+        margin: const EdgeInsets.symmetric(horizontal: 11),
+        padding: const EdgeInsets.all(8),
+        child: FText(
+          index.toString(),
+          style: const TextStyle(
+            color: Colors.white,
+          ),
+        ),
+      ),
+    );
+  }
+
+  @override
+  FWidget build(BuildContext context) {
+    return FColumn(
+      children: [
+        FContainer(
+          padding: const EdgeInsets.symmetric(
+            vertical: 6,
+          ),
+          decoration: BoxDecoration(
+            borderRadius: BorderRadius.circular(4),
+            color: FTheme.ins.colorScheme.primary,
+          ),
+          margin: const EdgeInsets.symmetric(
+            horizontal: 11,
+          ),
+          width: double.infinity,
+          child: const FCenter(
+            child: FText(
+              'Time',
+              style: TextStyle(
+                color: Colors.white,
+              ),
+            ),
+          ),
+        ),
+        FColumn(
+          crossAxisAlignment: CrossAxisAlignment.start,
+          children: [
+            FRow(
+              children: const [
+                FSizedBox(
+                  width: 11,
+                ),
+                FText(
+                  'Heart Cycle',
+                  textAlign: TextAlign.start,
+                  style: TextStyle(
+                    color: Colors.white,
+                  ),
+                ),
+              ],
+            ),
+            FGridView.count(
+              shrinkWrap: true,
+              crossAxisCount: 2,
+              childAspectRatio: 3,
+              children: [1, 2, 3, 4, 5].map((e) {
+                return FCenter(child: buildHRButton(e));
+              }).toList(),
+            ),
+          ],
+        ),
+      ],
+    );
+  }
+}

+ 4 - 1
lib/view/measure/measure_config/measure_configuation_page.dart

@@ -1,5 +1,6 @@
 import 'package:fis_i18n/i18n.dart';
 import 'package:fis_jsonrpc/rpc.dart';
+import 'package:fis_measure/interfaces/process/items/terms.dart';
 import 'package:fis_measure/interfaces/process/player/play_controller.dart';
 import 'package:fis_measure/interfaces/process/workspace/application.dart';
 import 'package:fis_measure/process/language/measure_language.dart';
@@ -151,7 +152,9 @@ class _MeasureConfigurationDialogState
     List<String> chooseMeasure = [];
     measureMetaController.measureConfig();
     itemMetaListGroup = measureData.itemMetaListGroup;
-    chooseMeasure = measureData.getMeasureApplicationList;
+    chooseMeasure = measureData.getMeasureApplicationList
+        .where((element) => !MeasureUnsupportedTerms.items.contains(element))
+        .toList();
     chooseMeasureList = chooseMeasure.toSet().toList();
   }
 

+ 5 - 2
lib/view/measure/measure_config/widgets/has_selected_setting_dialog.dart

@@ -1,5 +1,6 @@
 import 'package:fis_i18n/i18n.dart';
 import 'package:fis_jsonrpc/rpc.dart';
+import 'package:fis_measure/interfaces/process/items/terms.dart';
 import 'package:fis_theme/theme.dart';
 import 'package:fis_ui/index.dart';
 import 'package:flutter/material.dart';
@@ -213,9 +214,11 @@ class _HasSelectedModuleState extends FState<_HasSelectedModule> {
     super.initState();
     // multiMethodItems = controller.state.childItemMeta.multiMethodItems!;
     selectedMeasureFun = multiMethodItems
-        .firstWhere((element) => element.isWorking == true)
+        .firstWhere((element) =>
+            element.isWorking == true &&
+            !MeasureUnsupportedTerms.items.contains(element.name))
         .name!;
-    print(selectedMeasureFun);
+
     // controller.state.childItemMetaCalculator = multiMethodItems
     //     .firstWhere((element) => element.isWorking == true)
     //     .calculator!

+ 7 - 7
lib/view/measure/measure_config/widgets/measurement_tool_selection.dart

@@ -125,7 +125,7 @@ class _SelectModulePageState extends FState<SelectModulePage> {
     return FGestureDetector(
       onTap: () {
         removeChooseMeasure(
-          e.name ?? '',
+          e.description ?? '',
         );
       },
       child: FContainer(
@@ -137,14 +137,14 @@ class _SelectModulePageState extends FState<SelectModulePage> {
             mainAxisAlignment: MainAxisAlignment.center,
             children: [
               FText(
-                MeasureLanguage.t(e.name ?? ''),
+                MeasureLanguage.t(e.description ?? ''),
                 style: const TextStyle(
                   color: Colors.white,
                   fontSize: 14,
                 ),
               ),
               FText(
-                e.name ?? '',
+                e.description ?? '',
                 style: const TextStyle(
                   color: Colors.white,
                 ),
@@ -162,7 +162,7 @@ class _SelectModulePageState extends FState<SelectModulePage> {
     return FGestureDetector(
       onTap: () {
         addChooseMeasure(
-          e.name ?? '',
+          e.description ?? '',
         );
       },
       child: FContainer(
@@ -179,14 +179,14 @@ class _SelectModulePageState extends FState<SelectModulePage> {
             mainAxisAlignment: MainAxisAlignment.center,
             children: [
               FText(
-                MeasureLanguage.t(e.name ?? ''),
+                MeasureLanguage.t(e.description ?? ''),
                 style: const TextStyle(
                   color: Colors.black,
                   fontSize: 14,
                 ),
               ),
               FText(
-                e.name ?? '',
+                e.description ?? '',
                 style: const TextStyle(
                   color: Colors.black,
                 ),
@@ -210,7 +210,7 @@ class _SelectModulePageState extends FState<SelectModulePage> {
           alignment: WrapAlignment.start,
           children: e.itemMeta.map((e) {
             if (widget.chooseMeasureList.contains(
-              e.name,
+              e.description,
             )) {
               return FMouseRegion(
                 cursor: SystemMouseCursors.click,

+ 10 - 3
lib/view/measure/measure_tool.dart

@@ -2,11 +2,13 @@ import 'package:fis_common/logger/logger.dart';
 import 'package:fis_i18n/i18n.dart';
 import 'package:fis_measure/interfaces/process/items/item.dart';
 import 'package:fis_measure/interfaces/process/items/item_metas.dart';
+import 'package:fis_measure/interfaces/process/items/terms.dart';
 import 'package:fis_measure/interfaces/process/player/play_controller.dart';
 import 'package:fis_measure/interfaces/process/workspace/application.dart';
 import 'package:fis_measure/process/language/measure_language.dart';
 import 'package:fis_measure/process/workspace/measure_data_controller.dart';
 import 'package:fis_measure/process/workspace/measure_handler.dart';
+import 'package:fis_measure/view/measure/combo_widget.dart';
 import 'package:fis_measure/view/measure/measure_view_controller.dart';
 import 'package:fis_measure/view/player/controller.dart';
 import 'package:fis_ui/index.dart';
@@ -47,6 +49,9 @@ class LeftSiderSelectMeasureState extends FState<LeftSiderSelectMeasure> {
   /// 是否展开组合测量项
   bool isCombo = false;
 
+  /// 是否特殊组合测量项
+  late bool isSpecialCombo = false;
+
   late String fontFamily;
 
   void workingChildChanged(sender, int e) {
@@ -57,6 +62,7 @@ class LeftSiderSelectMeasureState extends FState<LeftSiderSelectMeasure> {
   /// 切换测量项
   void changeItem(ItemMeta itemMeta) {
     activeName = itemMeta.name;
+    isSpecialCombo = MeasurespecialsupportedTerms.items.contains(activeName);
     try {
       application.switchItem(itemMeta);
       final item = application.activeMeasureItem!;
@@ -177,7 +183,8 @@ class LeftSiderSelectMeasureState extends FState<LeftSiderSelectMeasure> {
       child: FColumn(
         children: [
           _buildFGridView(measureData.getTopItemMetaList),
-          if (isCombo) _buildCombo(),
+          if (isCombo && !isSpecialCombo) _buildCombo(),
+          if (isCombo && isSpecialCombo) const SpecialCombo(),
           _buildFGridView(measureData.getBottomItemMetaList),
         ],
       ),
@@ -226,7 +233,7 @@ class LeftSiderSelectMeasureState extends FState<LeftSiderSelectMeasure> {
           setState(() {});
         },
         child: FText(
-          itemMeta.name,
+          itemMeta.description,
           style: const TextStyle(
             color: Colors.white,
           ),
@@ -248,7 +255,7 @@ class LeftSiderSelectMeasureState extends FState<LeftSiderSelectMeasure> {
           ),
         ),
         child: FText(
-          itemMeta.name,
+          itemMeta.description,
           style: const TextStyle(
             color: Colors.white,
           ),

+ 8 - 7
lib/view/measure/measure_tools_title.dart

@@ -1,4 +1,3 @@
-import 'package:fis_measure/interfaces/process/items/item_metas.dart';
 import 'package:fis_measure/interfaces/process/visuals/visual_area.dart';
 import 'package:fis_measure/interfaces/process/workspace/application.dart';
 import 'package:fis_measure/process/workspace/measure_controller.dart';
@@ -30,12 +29,12 @@ class _LeftMeasureToolsState extends State<LeftMeasureTools> {
   /// 测量项控制器
   final measureMetaController = Get.find<MeasureMetaController>();
 
-  void changeItem(ItemMeta itemMeta) {
-    application.switchItem(itemMeta);
-    if (mounted) {
-      setState(() {});
-    }
-  }
+  // void changeItem(ItemMeta itemMeta) {
+  //   application.switchItem(itemMeta);
+  //   if (mounted) {
+  //     setState(() {});
+  //   }
+  // }
 
   void applicationModesChanged(sender, List<VidUsMode> e) {
     if (mounted) {
@@ -93,6 +92,8 @@ class _LeftMeasureToolsState extends State<LeftMeasureTools> {
                 measureMetaController.setAvailableModes(e.value.type.name);
                 measureData.getTopItemMetaList = measureData.getItemMetaList;
                 setState(() {});
+                application.switchMode(e.value.type.name);
+                // application.switchItem(measureData.getItemMetaList[0]);
               },
               child: FContainer(
                 alignment: Alignment.center,

+ 15 - 10
lib/view/measure/measure_view.dart

@@ -342,6 +342,7 @@ class _MeasureLeftBoardState extends State<_MeasureLeftBoard> {
 
   /// 测量项控制器
   final measureMetaController = Get.find<MeasureMetaController>();
+  late IApplication application = Get.find<IApplication>();
 
   bool get exist3DData => measure3DViewController.exist3DData;
   bool get isShell => measure3DViewController.isShell;
@@ -352,30 +353,31 @@ class _MeasureLeftBoardState extends State<_MeasureLeftBoard> {
   /// 是否显示测量项
   bool showMeasureItems = true;
 
-  bool get isMeasureTool => measureHandler.changedTab == TagEnum.MeasureTool;
+  bool isMeasureTool = true;
   bool get isArrowMeasureAnnotationType =>
       measureHandler.changedAnnotationType == AnnotationType.arrow;
   void onChangedTab(
     Object sender,
     TagEnum? e,
   ) {
-    // if (e == TagEnum.MeasureTool) {
-    //   measureMetaController.setAvailableModes(measureData.currentMode);
-    //   measureMetaController.comboList();
-    //   measureMetaController.changeItem(measureData.getItemMetaList[0]);
-    //   print('切换到测量工具');
-    // }
-    print(e);
     measureMetaController.setAvailableModes(measureData.currentMode);
     measureMetaController.comboList();
 
     setState(() {});
   }
 
+  void getItemMetaListChanged(sender, e) {
+    if (mounted) {
+      setState(() {});
+    }
+  }
+
   @override
   void initState() {
     measureHandler.onChangedTab.addListener(onChangedTab);
     measure3DViewController.updatePlayerMode.addListener(_onModeChanged);
+    measureData.getItemMetaListChanged.addListener(getItemMetaListChanged);
+
     super.initState();
   }
 
@@ -383,6 +385,8 @@ class _MeasureLeftBoardState extends State<_MeasureLeftBoard> {
   void dispose() {
     measureHandler.onChangedTab.removeListener(onChangedTab);
     measure3DViewController.updatePlayerMode.removeListener(_onModeChanged);
+    measureData.getItemMetaListChanged.removeListener(getItemMetaListChanged);
+
     super.dispose();
   }
 
@@ -419,7 +423,7 @@ class _MeasureLeftBoardState extends State<_MeasureLeftBoard> {
         if (showMeasureItems) ...[
           LeftSiderHold(ifHideConfig: showCarotid2DSelectMeasure)
         ],
-        if (!isMeasureTool) ...[
+        if (!(measureHandler.changedTab == TagEnum.MeasureTool)) ...[
           FContainer(
             width: 300,
             key: UniqueKey(),
@@ -466,7 +470,8 @@ class _MeasureArrow extends FStatefulWidget {
 class _MeasureArrowState extends FState<_MeasureArrow> {
   final measureHandler = Get.find<MeasureHandler>();
 
-  late final application = Get.find<IApplication>();
+  late IApplication application = Get.find<IApplication>();
+
   bool get isArrowMeasureAnnotationType =>
       measureHandler.changedAnnotationType == AnnotationType.arrow;
 

+ 3 - 1
lib/view/measure/measure_view_controller.dart

@@ -100,7 +100,9 @@ class MeasureMetaController extends GetxController {
         (groups![0].availableFolders![0].availableItems)?.toList().forEach(
           (e) {
             if (e.categories!.toList().contains(element.itemMetaGroupTitle)) {
-              itemMetaListGroupItem.add(e);
+              if (!MeasureUnsupportedTerms.items.contains(e.name)) {
+                itemMetaListGroupItem.add(e);
+              }
             }
             _group[element.itemMetaGroupTitle] = itemMetaListGroupItem;
           },

+ 35 - 60
lib/view/measure/tool_chest_title.dart

@@ -1,4 +1,6 @@
 import 'package:fis_i18n/i18n.dart';
+import 'package:fis_measure/interfaces/process/workspace/application.dart';
+import 'package:fis_measure/process/workspace/measure_data_controller.dart';
 import 'package:fis_measure/process/workspace/measure_handler.dart';
 import 'package:fis_measure/view/measure/measure_config/measure_configuation_page.dart';
 import 'package:fis_measure/view/measure/measure_config/widgets/measure_configuration_style.dart';
@@ -114,33 +116,46 @@ class _LeftSiderTabBarState extends State<_LeftSiderTabBar>
     with TickerProviderStateMixin {
   late final measureHandler = Get.find<MeasureHandler>();
   late TabController tabController;
+  late IApplication application = Get.find<IApplication>();
+  List<Center> tabs = [];
+  late final measureData = Get.find<MeasureDataController>();
 
-  /// 标签页列表
-  List<String> tabTitles = [
-    i18nBook.auth.tabOfLoginByAccountPwd.t,
-    i18nBook.auth.tabOfLoginByVerificationCode.t,
-  ];
   @override
   void initState() {
     super.initState();
-    tabController = TabController(
-      vsync: this,
-      length: tabTitles.length,
-      initialIndex: TagEnum.MeasureTool.index,
-    );
+    measureData.getItemMetaListChanged.addListener(getItemMetaListChanged);
   }
 
   @override
   void dispose() {
     super.dispose();
+    // application.visualAreaChanged.removeListener(visualAreaChanged);
+    measureData.getItemMetaListChanged.removeListener(getItemMetaListChanged);
+
     tabController.dispose();
   }
 
-  void onTabChanged(int index) {
-    print(index);
-    print(TagEnum.values[index]);
-    // measureHandler.changedTab = TagEnum.values[index];
-    // setState(() {});
+  void getItemMetaListChanged(sender, e) {
+    if (mounted) {
+      Future.delayed(const Duration(milliseconds: 300), () {
+        setState(() {
+          application = Get.find<IApplication>();
+          if (application.visuals.length > 1) {
+            tabs = [i18nBook.measure.annotationTool.t]
+                .map((e) => Center(child: Tab(text: e)))
+                .toList();
+          } else {
+            tabs = [
+              i18nBook.measure.measureTool.t,
+              i18nBook.measure.annotationTool.t
+            ].map((e) => Center(child: Tab(text: e))).toList();
+          }
+        });
+      });
+    }
+    // if (tabs.length == 1) {
+    //   measureHandler.changedTab = TagEnum.NodesTool;
+    // }
   }
 
   @override
@@ -150,10 +165,11 @@ class _LeftSiderTabBarState extends State<_LeftSiderTabBar>
 
   @override
   FWidget build(BuildContext context) {
-    final tabs = [
-      i18nBook.measure.measureTool.t,
-      i18nBook.measure.annotationTool.t
-    ].map((e) => Center(child: Tab(text: e))).toList();
+    tabController = TabController(
+      vsync: this,
+      length: tabs.length,
+      initialIndex: 0,
+    );
     final _colorScheme = FTheme.ins.colorScheme;
 
     return FTabBar(
@@ -165,8 +181,6 @@ class _LeftSiderTabBarState extends State<_LeftSiderTabBar>
       onTap: (int index) {
         try {
           measureHandler.changedTab = TagEnum.values[index];
-          // setState(() {});
-          print(index);
         } catch (e) {
           print(e);
         }
@@ -174,45 +188,6 @@ class _LeftSiderTabBarState extends State<_LeftSiderTabBar>
       tabs: tabs,
       controller: tabController,
     );
-
-    // return FRow(
-    //   mainAxisAlignment: MainAxisAlignment.spaceBetween,
-    //   children: [
-
-    //     _buildTab(
-    //       TagEnum.MeasureTool,
-    //       i18nBook.measure.measureTool.t,
-    //     ),
-    //     _buildTab(
-    //       TagEnum.NodesTool,
-    //       i18nBook.measure.annotationTool.t,
-    //     ),
-    //   ],
-    // );
-  }
-
-  FWidget _buildTab(TagEnum tag, String title) {
-    return FTextButton(
-      style: ButtonStyle(
-        padding: MaterialStateProperty.all(
-          const EdgeInsets.all(
-            6,
-          ),
-        ),
-      ),
-      onPressed: () {
-        measureHandler.changedTab = tag;
-        setState(() {});
-      },
-      child: FText(
-        title,
-        style: TextStyle(
-          color: measureHandler.changedTab == tag
-              ? FTheme.ins.colorScheme.primary
-              : Colors.white,
-        ),
-      ),
-    );
   }
 }