lwh_straightline.dart 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. import 'dart:ui';
  2. import 'package:fis_measure/interfaces/process/items/item.dart';
  3. import 'package:fis_measure/interfaces/process/items/item_metas.dart';
  4. import 'package:fis_measure/interfaces/process/items/terms.dart';
  5. import 'package:fis_measure/interfaces/process/items/types.dart';
  6. import 'package:fis_measure/interfaces/process/workspace/point_info.dart';
  7. import 'package:fis_measure/process/calcuators/three_distance.dart';
  8. import 'package:fis_measure/process/items/item.dart';
  9. import 'package:fis_measure/process/items/item_feature.dart';
  10. import 'package:fis_measure/process/items/top_item.dart';
  11. import 'package:fis_measure/process/items/top_item_feature.dart';
  12. import 'package:fis_measure/process/primitives/straightline.dart';
  13. import 'three_children.dart';
  14. class LWHStraightLine extends ThreeChildrenAbstract<LWHStraightlineFeature> {
  15. static const String _lineLKey = "L";
  16. static const String _lineWKey = "W";
  17. static const String _lineHKey = "H";
  18. late final StraightLine l;
  19. late final StraightLine w;
  20. late final StraightLine h;
  21. final bool ifVertical;
  22. final bool ifTimeSpan;
  23. LWHStraightLine(ItemMeta meta,
  24. {this.ifVertical = false, this.ifTimeSpan = false})
  25. : super(meta) {
  26. final metaL = meta.getChildByName(_lineLKey)!;
  27. final metaH = meta.getChildByName(_lineHKey)!;
  28. final metaW = meta.getChildByName(_lineWKey)!;
  29. if (ifVertical) {
  30. l = StraightLine.createVerticalDistance(metaL, this);
  31. w = StraightLine.createVerticalDistance(metaW, this);
  32. h = StraightLine.createVerticalDistance(metaH, this);
  33. } else if (ifTimeSpan) {
  34. l = StraightLine.createTimeSpan(metaL, this);
  35. w = StraightLine.createTimeSpan(metaW, this);
  36. h = StraightLine.createTimeSpan(metaH, this);
  37. } else {
  38. l = StraightLine.createDistance(metaL, this);
  39. w = StraightLine.createDistance(metaW, this);
  40. h = StraightLine.createDistance(metaH, this);
  41. }
  42. childItems.add(l);
  43. childItems.add(w);
  44. childItems.add(h);
  45. }
  46. @override
  47. bool get finishAfterUnactive => true;
  48. @override
  49. MeasureItem<MeasureItemFeature> get child1 => l;
  50. @override
  51. MeasureItem<MeasureItemFeature> get child2 => w;
  52. @override
  53. MeasureItem<MeasureItemFeature> get child3 => h;
  54. @override
  55. LWHStraightlineFeature buildFeature() => LWHStraightlineFeature(this);
  56. @override
  57. void onCancelingOnce() {}
  58. //ThreeDistMeanCalculator
  59. static LWHStraightLine createVolume(ItemMeta meta, [IMeasureItem? parent]) {
  60. if (meta.measureType != MeasureTypes.VolumeThreeDistance) {
  61. throw ArgumentError();
  62. }
  63. var lwh = LWHStraightLine(meta);
  64. lwh.calculator = VolumeThreeDistanceCal(lwh);
  65. return lwh;
  66. }
  67. static LWHStraightLine createMean(ItemMeta meta, [IMeasureItem? parent]) {
  68. if (meta.measureType != MeasureTypes.ThreeDistanceMean) {
  69. throw ArgumentError();
  70. }
  71. var lwh = LWHStraightLine(meta);
  72. lwh.calculator = ThreeDistMeanCalculator(lwh);
  73. return lwh;
  74. }
  75. static LWHStraightLine createMax(ItemMeta meta, [IMeasureItem? parent]) {
  76. var lwh = LWHStraightLine(meta);
  77. lwh.calculator = ThreeDistMaxCalculator(lwh);
  78. return lwh;
  79. }
  80. static LWHStraightLine createThreeVerticalDistance(ItemMeta meta,
  81. [IMeasureItem? parent]) {
  82. if (meta.measureType != MeasureTypes.ThreeVerticalDistance) {
  83. throw ArgumentError();
  84. }
  85. var lwh = LWHStraightLine(meta);
  86. if (meta.name == MeasureTerms.PercentMAM) {
  87. lwh.calculator = PercentMAMCalculator(lwh);
  88. }
  89. return lwh;
  90. }
  91. }
  92. class LWHStraightlineFeature extends TopMeasureItemFeature {
  93. LWHStraightlineFeature(
  94. ITopMeasureItem refItem,
  95. ) : super(refItem);
  96. }