wv_output: use bom template

This commit is contained in:
Laurier Loiselle 2023-01-25 16:40:52 -05:00
parent 565391e72f
commit dcc97b9ac2
No known key found for this signature in database
GPG Key ID: 345920CC72089A3F

View File

@ -8,7 +8,6 @@ from typing import List, Union
import jinja2 import jinja2
import wireviz # for doing wireviz.__file__ import wireviz # for doing wireviz.__file__
from wireviz import APP_NAME, APP_URL, __version__
from wireviz.wv_dataclasses import Metadata, Options from wireviz.wv_dataclasses import Metadata, Options
mime_subtype_replacements = {"jpg": "jpeg", "tif": "tiff"} mime_subtype_replacements = {"jpg": "jpeg", "tif": "tiff"}
@ -87,31 +86,14 @@ def generate_html_output(
# generate BOM table # generate BOM table
# generate BOM header (may be at the top or bottom of the table) # generate BOM header (may be at the top or bottom of the table)
bom_header_html = " <tr>\n" bom_reversed = False if template_name == "simple" else True
for item in bom[0]: bom_header = bom[0]
th_class = f"bom_col_{item.lower()}" bom_columns = [
bom_header_html = f'{bom_header_html} <th class="{th_class}">{item}</th>\n' "bom_col_{}".format("id" if c == "#" else c.lower()) for c in bom_header
bom_header_html = f"{bom_header_html} </tr>\n" ]
bom_content = bom[1:]
# generate BOM contents if bom_reversed:
bom_contents = [] bom_content.reverse()
for row in bom[1:]:
row_html = " <tr>\n"
for i, item in enumerate(row):
td_class = f"bom_col_{bom[0][i].lower()}"
row_html = f'{row_html} <td class="{td_class}">{item if item is not None else ""}</td>\n'
row_html = f"{row_html} </tr>\n"
bom_contents.append(row_html)
bom_html = (
'<table class="bom">\n' + bom_header_html + "".join(bom_contents) + "</table>\n"
)
bom_html_reversed = (
'<table class="bom">\n'
+ "".join(list(reversed(bom_contents)))
+ bom_header_html
+ "</table>\n"
)
if metadata: if metadata:
sheet_current = metadata["sheet_current"] sheet_current = metadata["sheet_current"]
@ -121,21 +103,23 @@ def generate_html_output(
sheet_total = 1 sheet_total = 1
replacements = { replacements = {
"generator": f"{APP_NAME} {__version__} - {APP_URL}", "generator": f"{wireviz.APP_NAME} {wireviz.__version__} - {wireviz.APP_URL}",
"fontname": options.fontname, "fontname": options.fontname,
"bgcolor": options.bgcolor.html, "bgcolor": options.bgcolor.html,
"diagram": svgdata, "diagram": svgdata,
"bom": bom_html,
"bom_reversed": bom_html_reversed,
"sheet_current": sheet_current, "sheet_current": sheet_current,
"sheet_total": sheet_total, "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 # prepare metadata replacements
added_metadata = { added_metadata = {
"revisions": [], "revisions": [],
"authors": [], "authors": [],
"sheetsize": "sheetsize_default",
} }
if metadata: if metadata:
for item, contents in metadata.items(): for item, contents in metadata.items():
@ -143,32 +127,25 @@ def generate_html_output(
added_metadata["revisions"] = [ added_metadata["revisions"] = [
{"rev": rev, **v} for rev, v in contents.items() {"rev": rev, **v} for rev, v in contents.items()
] ]
continue elif item == "authors":
if item == "authors":
added_metadata["authors"] = [ added_metadata["authors"] = [
{"row": row, **v} for row, v in contents.items() {"row": row, **v} for row, v in contents.items()
] ]
continue elif item == "pn":
if item == "pn":
added_metadata[item] = f'{contents}-{metadata.get("sheet_name")}' 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 <style> definition
for i in range(
replacements["titleblock_rows"] - len(added_metadata["revisions"]) - 1
):
added_metadata["revisions"].append({})
added_metadata["revisions"].reverse()
for i in range(4 - len(added_metadata["authors"])):
added_metadata["authors"].append({})
replacements = {**replacements, **added_metadata} replacements = {**replacements, **added_metadata}
# prepare BOM
bom_template = get_template_html("bom")
replacements["bom"] = bom_template.render(replacements)
# prepare titleblock # prepare titleblock
titleblock_template = get_template_html("titleblock") titleblock_template = get_template_html("titleblock")
replacements["titleblock"] = titleblock_template.render(replacements) replacements["titleblock"] = titleblock_template.render(replacements)