123456789101112131415161718192021222324252627282930313233343536 |
- import 'package:fis_measure/interfaces/process/items/terms.dart';
- import 'package:fis_measure/process/primitives/single_straightline.dart';
- import 'calculator.dart';
- class HeartRateCal extends Calculator<SingleStraightLine, double> {
- HeartRateCal(SingleStraightLine ref) : super(ref);
- @override
- void calculate() {
- if (ref.feature == null) return;
- if (ref.feature!.innerPoints.length < 2) return;
- final feature = ref.feature! as StraightLineHeartRateFeature;
- if (feature.startPoint == feature.endPoint) return;
- final heartCycle = feature.heartCycle;
- final viewport = feature.hostVisualArea!.viewport!;
- final p1 = feature.startPoint;
- final p2 = feature.endPoint;
- final pp1 = viewport.convert(p1);
- final pp2 = viewport.convert(p2);
- final time = (pp2.x - pp1.x).abs();
- double hr = (heartCycle / time) * 60;
- if (time == 0) hr = 0;
- for (var output in ref.meta.outputs) {
- if (output.name == MeasureTerms.HeartRate) {
- feature.updateFloatValue(output, hr, output.unit);
- } else if (output.name == "Heart Cycle") {
- feature.updateFloatValue(output, heartCycle.toDouble(), output.unit);
- } else if (output.name == MeasureTerms.Timespan) {
- feature.updateFloatValue(output, time, output.unit);
- }
- }
- }
- }
|