From dcc97b9ac254eb8ce9eeabf40919dfa32e8b3e72 Mon Sep 17 00:00:00 2001 From: Laurier Loiselle Date: Wed, 25 Jan 2023 16:40:52 -0500 Subject: [PATCH] wv_output: use bom template --- src/wireviz/wv_output.py | 75 ++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 49 deletions(-) diff --git a/src/wireviz/wv_output.py b/src/wireviz/wv_output.py index b938cbc..16967d0 100644 --- a/src/wireviz/wv_output.py +++ b/src/wireviz/wv_output.py @@ -8,7 +8,6 @@ from typing import List, Union import jinja2 import wireviz # for doing wireviz.__file__ -from wireviz import APP_NAME, APP_URL, __version__ from wireviz.wv_dataclasses import Metadata, Options mime_subtype_replacements = {"jpg": "jpeg", "tif": "tiff"} @@ -87,31 +86,14 @@ def generate_html_output( # generate BOM table # generate BOM header (may be at the top or bottom of the table) - bom_header_html = " \n" - for item in bom[0]: - th_class = f"bom_col_{item.lower()}" - bom_header_html = f'{bom_header_html} {item}\n' - bom_header_html = f"{bom_header_html} \n" - - # generate BOM contents - bom_contents = [] - for row in bom[1:]: - row_html = " \n" - for i, item in enumerate(row): - td_class = f"bom_col_{bom[0][i].lower()}" - row_html = f'{row_html} {item if item is not None else ""}\n' - row_html = f"{row_html} \n" - bom_contents.append(row_html) - - bom_html = ( - '\n' + bom_header_html + "".join(bom_contents) + "
\n" - ) - bom_html_reversed = ( - '\n' - + "".join(list(reversed(bom_contents))) - + bom_header_html - + "
\n" - ) + bom_reversed = False if template_name == "simple" else True + bom_header = bom[0] + bom_columns = [ + "bom_col_{}".format("id" if c == "#" else c.lower()) for c in bom_header + ] + bom_content = bom[1:] + if bom_reversed: + bom_content.reverse() if metadata: sheet_current = metadata["sheet_current"] @@ -121,21 +103,23 @@ def generate_html_output( sheet_total = 1 replacements = { - "generator": f"{APP_NAME} {__version__} - {APP_URL}", + "generator": f"{wireviz.APP_NAME} {wireviz.__version__} - {wireviz.APP_URL}", "fontname": options.fontname, "bgcolor": options.bgcolor.html, "diagram": svgdata, - "bom": bom_html, - "bom_reversed": bom_html_reversed, "sheet_current": sheet_current, "sheet_total": sheet_total, - "titleblock_rows": 9, + "bom_reversed": bom_reversed, + "bom_header": bom_header, + "bom_content": bom_content, + "bom_columns": bom_columns, } # prepare metadata replacements added_metadata = { "revisions": [], "authors": [], + "sheetsize": "sheetsize_default", } if metadata: for item, contents in metadata.items(): @@ -143,32 +127,25 @@ def generate_html_output( added_metadata["revisions"] = [ {"rev": rev, **v} for rev, v in contents.items() ] - continue - if item == "authors": + elif item == "authors": added_metadata["authors"] = [ {"row": row, **v} for row, v in contents.items() ] - continue - if item == "pn": + elif item == "pn": added_metadata[item] = f'{contents}-{metadata.get("sheet_name")}' - continue + elif item == "template": + added_metadata["sheetsize"] = contents.get( + "sheetsize", "sheetsize_default" + ) + else: + added_metadata[item] = contents - added_metadata[item] = contents - - replacements[ - "sheetsize_default" - ] = f'{metadata.get("template", {}).get("sheetsize", "sheetsize_default")}' - # include quotes so no replacement happens within