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_metas.dart'; import 'package:fis_measure/interfaces/process/items/terms.dart'; import 'package:fis_measure/process/calcuators/rvsp.dart'; import 'package:fis_measure/process/items/top_item.dart'; import 'package:fis_measure/process/items/top_item_feature.dart'; import 'package:fis_measure/process/primitives/empty.dart'; import 'package:vid/us/vid_us_unit.dart'; import 'location.dart'; class Rvsp extends TopMeasureItem { static const String tRVmaxKey = "TR Vmax"; late final Location tRVmax; late final FloatValue _rap; Rvsp(super.meta) { final tRVmaxMeta = meta.getChildByName(tRVmaxKey)!; tRVmax = Location.createVelocity(tRVmaxMeta, this); childItems.add(tRVmax); final rapOutputMeta = ItemOutputMeta(MeasureTerms.RAP, "RAP", VidUsUnit.mmHg); _rap = FloatValue(rapOutputMeta, 0.0, rapOutputMeta.unit); // final rapMeta = ItemMeta( // MeasureTerms.RAP, // measureType: MeasureTerms.Placeholder, // description: "RAP", // outputs: [rapOutputMeta], // ); // final rapPlaceholder = Empty.createEmpty(rapMeta, this); // childItems.add(rapPlaceholder); } FloatValue get rap => _rap; @override bool get repeatableEditable => false; @override bool get finishAfterUnactive => true; @override RvspFeature buildFeature() => RvspFeature(this); void updateRap(double val) { _rap.value = val; calculator?.calculate(); update(); } static Rvsp createRvsp( ItemMeta meta, [ IMeasureItem? parent, ]) { Rvsp ins = Rvsp(meta); ins.calculator = RvspCal(ins); return ins; } } class RvspFeature extends TopMeasureItemFeature { RvspFeature( ITopMeasureItem refItem, ) : super(refItem); }