Move calculation of qty_multiplier into wv_helper
This commit is contained in:
parent
7c67a9e004
commit
abcccbd360
@ -9,7 +9,8 @@ from wireviz.wv_helper import awg_equiv, mm2_equiv, tuplelist2tsv, \
|
|||||||
nested_html_table, flatten2d, index_if_list, html_line_breaks, \
|
nested_html_table, flatten2d, index_if_list, html_line_breaks, \
|
||||||
graphviz_line_breaks, remove_line_breaks, open_file_read, open_file_write, \
|
graphviz_line_breaks, remove_line_breaks, open_file_read, open_file_write, \
|
||||||
html_colorbar, html_image, html_caption, manufacturer_info_field, \
|
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 collections import Counter
|
||||||
from typing import List
|
from typing import List
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
@ -107,13 +108,7 @@ class Harness:
|
|||||||
rows.append(["Additional components"])
|
rows.append(["Additional components"])
|
||||||
for extra in connector.additional_components:
|
for extra in connector.additional_components:
|
||||||
qty = extra.qty
|
qty = extra.qty
|
||||||
if extra.qty_multiplier:
|
qty *= calculate_qty_multiplier_connector(extra.qty_multiplier, connector)
|
||||||
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"]}')
|
|
||||||
if(self.mini_bom_mode):
|
if(self.mini_bom_mode):
|
||||||
id = self.get_bom_index(extra.long_name(), extra.unit, extra.manufacturer, extra.mpn, extra.pn)
|
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)))
|
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"])
|
rows.append(["Additional components"])
|
||||||
for extra in cable.additional_components:
|
for extra in cable.additional_components:
|
||||||
qty = extra.qty
|
qty = extra.qty
|
||||||
if extra.qty_multiplier:
|
qty *= calculate_qty_multiplier_cable(extra.qty_multiplier, cable)
|
||||||
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"]}')
|
|
||||||
if(self.mini_bom_mode):
|
if(self.mini_bom_mode):
|
||||||
id = self.get_bom_index(extra.long_name(), extra.unit, extra.manufacturer, extra.mpn, extra.pn)
|
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)))
|
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:
|
for part in connector.additional_components:
|
||||||
qty = part.qty
|
qty = part.qty
|
||||||
if part.qty_multiplier:
|
qty *= calculate_qty_multiplier_connector(part.qty_multiplier, connector)
|
||||||
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}')
|
|
||||||
bom_items.append(
|
bom_items.append(
|
||||||
{
|
{
|
||||||
'item': part.long_name(),
|
'item': part.long_name(),
|
||||||
@ -434,17 +413,7 @@ class Harness:
|
|||||||
|
|
||||||
for part in cable.additional_components:
|
for part in cable.additional_components:
|
||||||
qty = part.qty
|
qty = part.qty
|
||||||
if part.qty_multiplier:
|
qty *= calculate_qty_multiplier_cable(part.qty_multiplier, cable)
|
||||||
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}')
|
|
||||||
bom_items.append(
|
bom_items.append(
|
||||||
{
|
{
|
||||||
'item': part.long_name(),
|
'item': part.long_name(),
|
||||||
|
|||||||
@ -198,5 +198,32 @@ def component_table_entry(type, qty, unit=None, pn=None, manufacturer=None, mpn=
|
|||||||
if manufacturer_str:
|
if manufacturer_str:
|
||||||
output += manufacturer_str
|
output += manufacturer_str
|
||||||
# format the above output as left aligned text in a single visable cell
|
# 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 f'<table border="0" cellspacing="0" cellpadding="3" cellborder="1"><tr><td align="left" balign="left">{output}</td></tr></table>'
|
||||||
return 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}')
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user