123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- import 'package:fis_common/index.dart';
- import 'package:fis_measure/interfaces/process/calculators/output.dart';
- import 'package:fis_measure/interfaces/process/calculators/values.dart';
- import 'package:fis_measure/interfaces/process/items/item_metas.dart';
- import 'package:fis_measure/process/calcuators/formulas/general.dart';
- import 'package:fis_measure/process/items/item.dart';
- import 'package:fis_measure/process/primitives/combos/sv.dart';
- import 'package:fis_measure/process/primitives/combos/two_area.dart';
- import 'package:fis_measure/process/primitives/combos/two_length.dart';
- import 'package:fis_measure/process/primitives/trace.dart';
- import 'calculator.dart';
- class ABRatioCal extends Calculator<TwoLengthAbstract, double> {
- ABRatioCal(TwoLengthAbstract ref) : super(ref);
- @override
- void calculate() {
- if (ref.feature == null) return;
- final a1 = _pickChildValue(ref.child1);
- final a2 = _pickChildValue(ref.child2);
- final feature = ref.feature!;
- final viewport = feature.hostVisualArea!.viewport!;
- if (a1 != null && a2 != null) {
- final value = ratioCal(
- a1,
- a2,
- );
- updateFloatValue(value);
- }
- }
- static double ratioCal(double d1, double d2) {
- return d1 / d2;
- }
- double? _pickChildValue(MeasureItem item) {
- if (item.calculator == null) return null;
- ValueBase? value;
- if (item.measuredFeatures.isNotEmpty) {
- value = item.measuredFeatures.first.value;
- } else if (item.feature != null) {
- value = item.feature!.value;
- }
- if (value != null) {
- if (value is FloatValue) {
- return value.value ?? 0;
- }
- }
- return null;
- }
- }
- class QpQsCal extends ABRatioCal {
- QpQsCal(super.ref);
- @override
- void calculate() {
- final mianVal = _getQpQsValue();
- if (mianVal == null) {
- updateStringValue("");
- }
- super.calculate();
- if (ref.feature == null) return;
- final feature = ref.feature!;
- final qp = ref.child1 as Sv;
- final qs = ref.child2 as Sv;
- final qpValues = qp.feature?.values;
- final qsValues = qs.feature?.values;
- if (qpValues != null) {
- for (var val in qpValues) {
- if (val.name != qp.meta.name) {
- if (val is FloatValue) {
- final meta = val.meta;
- final output = ItemOutputMeta(
- "${meta.name}(ROVT)", meta.description, meta.unit);
- feature.updateFloatValue(output, val.value!, val.unit);
- }
- }
- }
- }
- if (qsValues != null) {
- for (var val in qsValues) {
- if (val.name != qs.meta.name) {
- if (val is FloatValue) {
- final meta = val.meta;
- final output = ItemOutputMeta(
- "${meta.name}(LOVT)", meta.description, meta.unit);
- feature.updateFloatValue(output, val.value!, val.unit);
- }
- }
- }
- }
- }
- ValueBase? _getQpQsValue() {
- final values = ref.feature?.values;
- if (values == null || values.isEmpty) {
- return null;
- }
- final matchValue =
- values.firstWhereNullable((e) => e.name == ref.meta.name);
- if (matchValue != null && matchValue is FloatValue) {
- return matchValue;
- }
- return null;
- }
- }
|