From 5cc92eb8aebb2011756a4e91e0355fd1c83605ee Mon Sep 17 00:00:00 2001 From: doryan <sagiev2015@yandex.ru> Date: Sat, 17 Aug 2024 00:01:26 +0400 Subject: [PATCH] refactor(fabrics): one fabric is divided into several parts --- .../view_utils/signal_reduce_utils.rs | 54 ++++++++++--------- src/view/pages/signal_reducing.rs | 11 +++- 2 files changed, 38 insertions(+), 27 deletions(-) diff --git a/src/controller/view_utils/signal_reduce_utils.rs b/src/controller/view_utils/signal_reduce_utils.rs index aff9c8f..e7a7c34 100644 --- a/src/controller/view_utils/signal_reduce_utils.rs +++ b/src/controller/view_utils/signal_reduce_utils.rs @@ -55,12 +55,7 @@ pub fn column_view_setup_factory(_factory: &SignalListItemFactory, list_item: &O .set_child(Some(&Label::new(None))); } -pub fn column_view_bind_factory( - _factory: &SignalListItemFactory, - list_item: &Object, - values: SignalReduce, - label: &str, -) { +pub fn get_cell_data(list_item: &Object) -> (Frequency, Label) { let cell_value = list_item .downcast_ref::<ListItem>() .expect("Needs to be ListItem") @@ -75,12 +70,30 @@ pub fn column_view_bind_factory( .and_downcast::<Label>() .expect("The child has to be a `Label`."); + (cell_value, cell_label) +} + +pub fn frequency_column_fabric(list_item: &Object) { + let (cell_value, cell_label) = get_cell_data(list_item); + + cell_label.set_label(&cell_value.frequency().to_string()); +} + +pub fn reactive_resist_fabric(list_item: &Object, values: SignalReduce) { + let (cell_value, cell_label) = get_cell_data(list_item); + cell_value.set_reactive_resist(reactive_resistance_of_capacitor( values.wire_capacity * 10f64.powi(-12), values.length, cell_value.frequency() * 10f64.powi(6), )); + cell_label.set_label(format!("{0:.1$}", cell_value.reactive_resist(), 6).as_str()); +} + +pub fn signal_source_voltage_fabric(list_item: &Object, values: SignalReduce) { + let (cell_value, cell_label) = get_cell_data(list_item); + cell_value.set_full_resistance(full_resistance_of_capacitor( cell_value.reactive_resist(), values.source_resistance, @@ -96,23 +109,14 @@ pub fn column_view_bind_factory( ) * 1000.0, ); - match label { - "f, МГц" => { - cell_label.set_label(&cell_value.frequency().to_string()); - } - "Xc, Ом" => { - cell_label.set_label(format!("{0:.1$}", cell_value.reactive_resist(), 6).as_str()); - } - "Vп, мВ" => { - cell_label - .set_label(format!("{0:.1$}", cell_value.signal_source_voltage(), 6).as_str()); - } - "ζ" => { - let coef: f64 = - coef_of_signal_reduce(values.source_voltage, cell_value.signal_source_voltage()); - - cell_label.set_label(format!("{0:.1$}", coef, 6).as_str()); - } - _ => {} - } + cell_label.set_label(format!("{0:.1$}", cell_value.signal_source_voltage(), 6).as_str()); +} + +pub fn coef_fabric(list_item: &Object, values: SignalReduce) { + let (cell_value, cell_label) = get_cell_data(list_item); + + let coef: f64 = + coef_of_signal_reduce(values.source_voltage, cell_value.signal_source_voltage()); + + cell_label.set_label(format!("{0:.1$}", coef, 6).as_str()); } diff --git a/src/view/pages/signal_reducing.rs b/src/view/pages/signal_reducing.rs index 3175b7c..f09007c 100644 --- a/src/view/pages/signal_reducing.rs +++ b/src/view/pages/signal_reducing.rs @@ -94,7 +94,15 @@ pub fn signal_reducing_page(wrapper: &Box) { factory.connect_bind(clone!( #[strong] values, - move |factory, list| column_view_bind_factory(factory, list, values.get(), label) + move |_, list| { + match label { + "f, МГц" => frequency_column_fabric(list), + "Xc, Ом" => reactive_resist_fabric(list, values.get()), + "Vп, мВ" => signal_source_voltage_fabric(list, values.get()), + "ζ" => coef_fabric(list, values.get()), + _ => {} + } + } )); let column = ColumnViewColumn::builder() @@ -135,7 +143,6 @@ pub fn signal_reducing_page(wrapper: &Box) { if find_by_frequency_value(&model, &new_elem).is_none() { model.append(&new_elem); } - update_column_view(&result_table); } }