import 'package:fis_measure/interfaces/process/items/item.dart'; import 'package:fis_measure/interfaces/process/items/item_metas.dart'; import 'package:fis_measure/process/calcuators/urm_calcuators/urm_vel.dart'; import 'package:fis_measure/process/items/top_item_feature.dart'; import 'package:fis_measure/process/primitives/straightline.dart'; import 'package:fis_measure/process/items/item.dart'; import 'package:fis_measure/process/items/item_feature.dart'; import 'package:fis_measure/process/items/top_item.dart'; import 'package:fis_measure/process/primitives/urm_measure/urm_location_vel.dart'; class URMVel extends URMVelAbstract { static const String _area1Key = "URMLocationVel"; static const String _area2Key = "Vessel diameter"; static const String _area3Key = "Vessel distance"; late final URMLocationVelMeasure a1; late final StraightLine a2; late final StraightLine a3; URMVel(ItemMeta meta) : super(meta) { final metaA1 = meta.getChildByName(_area1Key)!; final metaA2 = meta.getChildByName(_area2Key)!; final metaA3 = meta.getChildByName(_area3Key)!; a1 = URMLocationVelMeasure.createURMLocationVelMeasure(metaA1, this); a2 = StraightLine.createDistance(metaA2, this); a3 = StraightLine.createDistance(metaA3, this); childItems.add(a1); childItems.add(a2); childItems.add(a3); } @override URMLocationVelMeasure get child1 => a1; @override StraightLine get child2 => a2; @override StraightLine get child3 => a3; @override URMVelFeature buildFeature() => URMVelFeature(this); @override void onCancelingOnce() {} static URMVel create(ItemMeta meta, [IMeasureItem? parent]) { var urmVel = URMVel(meta); urmVel.calculator = URMVelCal(urmVel); return urmVel; } } class URMVelFeature extends TopMeasureItemFeature { URMVelFeature( ITopMeasureItem refItem, ) : super(refItem); } abstract class URMVelAbstract extends TopMeasureItem { URMVelAbstract(ItemMeta meta) : super(meta); MeasureItem get child1; MeasureItem get child2; MeasureItem get child3; @override bool get finishAfterUnactive => true; }