Implement additional parameter table

as proposed in #222
This commit is contained in:
Daniel Rojas 2021-03-23 15:57:38 +01:00
parent 1f86c97c67
commit b4a0ae50b8
3 changed files with 21 additions and 3 deletions

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from typing import Optional, List, Tuple, Union from typing import Optional, List, Dict, Tuple, Union
from dataclasses import dataclass, field, InitVar from dataclasses import dataclass, field, InitVar
from pathlib import Path from pathlib import Path
@ -94,6 +94,7 @@ class Connector:
type: Optional[MultilineHypertext] = None type: Optional[MultilineHypertext] = None
subtype: Optional[MultilineHypertext] = None subtype: Optional[MultilineHypertext] = None
pincount: Optional[int] = None pincount: Optional[int] = None
additional_parameters: Optional[Dict] = None
image: Optional[Image] = None image: Optional[Image] = None
notes: Optional[MultilineHypertext] = None notes: Optional[MultilineHypertext] = None
pinlabels: List[Pin] = field(default_factory=list) pinlabels: List[Pin] = field(default_factory=list)
@ -182,6 +183,7 @@ class Cable:
color: Optional[Color] = None color: Optional[Color] = None
wirecount: Optional[int] = None wirecount: Optional[int] = None
shield: Union[bool, Color] = False shield: Union[bool, Color] = False
additional_parameters: Optional[Dict] = None
image: Optional[Image] = None image: Optional[Image] = None
notes: Optional[MultilineHypertext] = None notes: Optional[MultilineHypertext] = None
colors: List[Colors] = field(default_factory=list) colors: List[Colors] = field(default_factory=list)

View File

@ -12,7 +12,7 @@ from wireviz import wv_colors, __version__, APP_NAME, APP_URL
from wireviz.DataClasses import Connector, Cable from wireviz.DataClasses import Connector, Cable
from wireviz.wv_colors import get_color_hex from wireviz.wv_colors import get_color_hex
from wireviz.wv_gv_html import nested_html_table, html_colorbar, html_image, \ from wireviz.wv_gv_html import nested_html_table, html_colorbar, html_image, \
html_caption, remove_links, html_line_breaks, bom_bubble html_caption, remove_links, html_line_breaks, bom_bubble, nested_html_table_dict
from wireviz.wv_bom import manufacturer_info_field, \ from wireviz.wv_bom import manufacturer_info_field, \
get_additional_component_table, bom_list, generate_bom get_additional_component_table, bom_list, generate_bom
from wireviz.wv_html import generate_html_output from wireviz.wv_html import generate_html_output
@ -122,11 +122,13 @@ class Harness:
connector.color, html_colorbar(connector.color)], connector.color, html_colorbar(connector.color)],
[f'P/N: {remove_links(connector.pn)}' if connector.pn else None, [f'P/N: {remove_links(connector.pn)}' if connector.pn else None,
html_line_breaks(manufacturer_info_field(connector.manufacturer, connector.mpn))] if self.show_part_numbers else None, html_line_breaks(manufacturer_info_field(connector.manufacturer, connector.mpn))] if self.show_part_numbers else None,
nested_html_table_dict(connector.additional_parameters),
'<!-- connector table -->' if connector.style != 'simple' else None, '<!-- connector table -->' if connector.style != 'simple' else None,
[html_image(connector.image)], [html_image(connector.image)],
[html_caption(connector.image)]] [html_caption(connector.image)]]
rows.append(get_additional_component_table(self, connector)) rows.append(get_additional_component_table(self, connector))
rows.append([html_line_breaks(connector.notes)]) rows.append([html_line_breaks(connector.notes)])
html.extend(nested_html_table(rows)) html.extend(nested_html_table(rows))
if connector.style != 'simple': if connector.style != 'simple':
@ -208,6 +210,7 @@ class Harness:
html_line_breaks(manufacturer_info_field( html_line_breaks(manufacturer_info_field(
cable.manufacturer if not isinstance(cable.manufacturer, list) else None, cable.manufacturer if not isinstance(cable.manufacturer, list) else None,
cable.mpn if not isinstance(cable.mpn, list) else None))], cable.mpn if not isinstance(cable.mpn, list) else None))],
nested_html_table_dict(cable.additional_parameters),
'<!-- wire table -->', '<!-- wire table -->',
[html_image(cable.image)], [html_image(cable.image)],
[html_caption(cable.image)]] [html_caption(cable.image)]]

View File

@ -1,12 +1,25 @@
#!/usr/bin/env python #!/usr/bin/env python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from typing import List, Union from typing import List, Dict, Union
import re import re
from wireviz.wv_colors import translate_color from wireviz.wv_colors import translate_color
from wireviz.wv_helper import remove_links from wireviz.wv_helper import remove_links
def nested_html_table_dict(rows):
if isinstance(rows, Dict):
html = []
html.append('<table border="0" cellspacing="0" cellpadding="3" cellborder="1">')
for (key, value) in rows.items():
html.append(f' <tr><td align="left" balign="left">{key}</td>')
html.append(f' <td align="left" balign="left">{value}</td></tr>')
html.append(' </table>')
out = '\n'.join(html)
else:
out = None
return out
def nested_html_table(rows): def nested_html_table(rows):
# input: list, each item may be scalar or list # input: list, each item may be scalar or list
# output: a parent table with one child table per parent item that is list, and one cell per parent item that is scalar # output: a parent table with one child table per parent item that is list, and one cell per parent item that is scalar