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/simpson.dart';
import 'package:fis_measure/process/items/item_feature.dart';
import 'package:fis_measure/process/items/item.dart';
import 'package:fis_measure/process/items/top_item.dart';
import 'package:fis_measure/process/items/top_item_feature.dart';

import '../multi_method/multi_simpson_path.dart';

class LvStudySimpson extends TopMeasureItem<LvStudySimpsonFeature> {
  static const String _lvedvKey = "LVEDV";
  static const String _lvesvKey = "LVESV";

  // late final Trace epi;
  // late final Trace endo;
  // late final StraightLine l;

  LvStudySimpson(super.meta) {
    //
  }

  @override
  LvStudySimpsonFeature buildFeature() => LvStudySimpsonFeature(this);

  static LvStudySimpson create(ItemMeta meta, [IMeasureItem? parent]) {
    final simpson = LvStudySimpson(meta);
    simpson.calculator = LvSimpsonCal(simpson);
    return simpson;
  }
}

class LvStudySingleSimpson extends TopMeasureItem<LvStudySingleSimpsonFeature> {
  static const String _lvedvKey = "LVEDV";
  static const String _lvesvKey = "LVESV";

  late final MultiSimpsonPath lvedv;
  late final MultiSimpsonPath lvesv;

  LvStudySingleSimpson(super.meta) {
    final lvedvMeta = meta.getChildByName(_lvedvKey)!;
    final lvesvMeta = meta.getChildByName(_lvesvKey)!;
    lvedv = MultiSimpsonPath.create(lvedvMeta, this);
    lvesv = MultiSimpsonPath.create(lvesvMeta, this);
    childItems.add(lvedv);
    childItems.add(lvesv);
  }

  @override
  LvStudySingleSimpsonFeature buildFeature() =>
      LvStudySingleSimpsonFeature(this);

  static LvStudySingleSimpson create(ItemMeta meta, [IMeasureItem? parent]) {
    final simpson = LvStudySingleSimpson(meta);
    simpson.calculator = LvSingleSimpsonCal(simpson);
    return simpson;
  }
}

class LvStudySimpsonFeature extends TopMeasureItemFeature {
  LvStudySimpsonFeature(
    ITopMeasureItem refItem,
  ) : super(refItem);
}

class LvStudySingleSimpsonFeature extends TopMeasureItemFeature {
  LvStudySingleSimpsonFeature(
    ITopMeasureItem refItem,
  ) : super(refItem);
}