Move calculation of qty_multiplier into wv_helper

This commit is contained in:
Tyler Ward 2020-09-29 21:25:51 +01:00
parent 7c67a9e004
commit abcccbd360
2 changed files with 35 additions and 39 deletions

View File

@ -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(),

View File

@ -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'<table border="0" cellspacing="0" cellpadding="3" cellborder="1"><tr><td align="left" balign="left">{output}</td></tr></table>'
return output
return f'<table border="0" cellspacing="0" cellpadding="3" cellborder="1"><tr><td align="left" balign="left">{output}</td></tr></table>'
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}')