From abcccbd360d278953e0037ea4141e37b760561fd Mon Sep 17 00:00:00 2001 From: Tyler Ward Date: Tue, 29 Sep 2020 21:25:51 +0100 Subject: [PATCH] Move calculation of qty_multiplier into wv_helper --- src/wireviz/Harness.py | 43 ++++++---------------------------------- src/wireviz/wv_helper.py | 31 +++++++++++++++++++++++++++-- 2 files changed, 35 insertions(+), 39 deletions(-) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index 18e8223..8cc9879 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -9,7 +9,8 @@ from wireviz.wv_helper import awg_equiv, mm2_equiv, tuplelist2tsv, \ nested_html_table, flatten2d, index_if_list, html_line_breaks, \ graphviz_line_breaks, remove_line_breaks, open_file_read, open_file_write, \ html_colorbar, html_image, html_caption, manufacturer_info_field, \ - component_table_entry + component_table_entry, \ + calculate_qty_multiplier_connector, calculate_qty_multiplier_cable from collections import Counter from typing import List from pathlib import Path @@ -107,13 +108,7 @@ class Harness: rows.append(["Additional components"]) for extra in connector.additional_components: qty = extra.qty - if extra.qty_multiplier: - if extra.qty_multiplier == 'pincount': - qty *= connector.pincount - elif extra.qty_multiplier == 'populated': - qty *= sum(connector.visible_pins.values()) - else: - raise ValueError(f'invalid qty multiplier parameter {extra["qty_multiplier"]}') + qty *= calculate_qty_multiplier_connector(extra.qty_multiplier, connector) if(self.mini_bom_mode): id = self.get_bom_index(extra.long_name(), extra.unit, extra.manufacturer, extra.mpn, extra.pn) rows.append(html_line_breaks(component_table_entry(f'{id} ({extra.type.capitalize()})', qty, extra.unit))) @@ -197,17 +192,7 @@ class Harness: rows.append(["Additional components"]) for extra in cable.additional_components: qty = extra.qty - if extra.qty_multiplier: - if extra.qty_multiplier == 'wirecount': - qty *= cable.wirecount - elif extra.qty_multiplier == 'terminations': - qty *= len(cable.connections) - elif extra.qty_multiplier == 'length': - qty *= cable.length - elif extra.qty_multiplier == 'total_length': - qty *= cable.length * cable.wirecount - else: - raise ValueError(f'invalid qty multiplier parameter {extra["qty_multiplier"]}') + qty *= calculate_qty_multiplier_cable(extra.qty_multiplier, cable) if(self.mini_bom_mode): id = self.get_bom_index(extra.long_name(), extra.unit, extra.manufacturer, extra.mpn, extra.pn) rows.append(html_line_breaks(component_table_entry(f'{id} ({extra.type.capitalize()})', qty, extra.unit))) @@ -389,13 +374,7 @@ class Harness: for part in connector.additional_components: qty = part.qty - if part.qty_multiplier: - if part.qty_multiplier == 'pincount': - qty = connector.pincount - elif part.qty_multiplier == 'populated': - qty = sum(connector.visible_pins.values()) - else: - raise ValueError(f'invalid qty multiplier parameter {part.qty_multiplier}') + qty *= calculate_qty_multiplier_connector(part.qty_multiplier, connector) bom_items.append( { 'item': part.long_name(), @@ -434,17 +413,7 @@ class Harness: for part in cable.additional_components: qty = part.qty - if part.qty_multiplier: - if part.qty_multiplier == 'wirecount': - qty *= cable.wirecount - elif part.qty_multiplier == 'terminations': - qty *= len(cable.connections) - elif part.qty_multiplier == 'length': - qty *= cable.length - elif part.qty_multiplier == 'total_length': - qty *= cable.length * cable.wirecount - else: - raise ValueError(f'invalid qty multiplier parameter {part.qty_multiplier}') + qty *= calculate_qty_multiplier_cable(part.qty_multiplier, cable) bom_items.append( { 'item': part.long_name(), diff --git a/src/wireviz/wv_helper.py b/src/wireviz/wv_helper.py index cf02d5a..445badf 100644 --- a/src/wireviz/wv_helper.py +++ b/src/wireviz/wv_helper.py @@ -198,5 +198,32 @@ def component_table_entry(type, qty, unit=None, pn=None, manufacturer=None, mpn= if manufacturer_str: output += manufacturer_str # format the above output as left aligned text in a single visable cell - output = f'
{output}
' - return output + return f'
{output}
' + + +def calculate_qty_multiplier_connector(qty_multiplier, connector): + if not qty_multiplier: + return 1 + + if qty_multiplier == 'pincount': + return connector.pincount + elif qty_multiplier == 'populated': + return sum(connector.visible_pins.values()) + else: + raise ValueError(f'invalid qty multiplier parameter for connector {qty_multiplier}') + + +def calculate_qty_multiplier_cable(qty_multiplier, cable): + if not qty_multiplier: + return 1 + + if qty_multiplier == 'wirecount': + return cable.wirecount + elif qty_multiplier == 'terminations': + return len(cable.connections) + elif qty_multiplier == 'length': + return cable.length + elif qty_multiplier == 'total_length': + return cable.length * cable.wirecount + else: + raise ValueError(f'invalid qty multiplier parameter for cable {qty_multiplier}')