From 5f271bcd425afbd7ad04e6f5d7b268bf989e2e16 Mon Sep 17 00:00:00 2001 From: Laurier Loiselle Date: Fri, 20 Jan 2023 18:56:39 -0500 Subject: [PATCH] src: wireviz: wv_bom: limit bom table width --- src/wireviz/wv_bom.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/wireviz/wv_bom.py b/src/wireviz/wv_bom.py index 22eec8d..03f0508 100644 --- a/src/wireviz/wv_bom.py +++ b/src/wireviz/wv_bom.py @@ -10,6 +10,8 @@ from wireviz.wv_utils import html_line_breaks BOM_HASH_FIELDS = "description qty_unit amount partnumbers" +MAX_DESIGNATORS = 2 +MAX_DESCRIPTION = 40 BomEntry = namedtuple("BomEntry", "category qty designators") BomHash = namedtuple("BomHash", BOM_HASH_FIELDS) @@ -103,14 +105,23 @@ def bom_list(bom): rows.append(headers) # fill rows for hash, entry in bom.items(): + description = hash.description + if len(description) > MAX_DESCRIPTION: + description = f"{description[:MAX_DESCRIPTION]} (...)" + + all_designators = sorted(entry["designators"]) + if len(all_designators) > MAX_DESIGNATORS: + all_designators = all_designators[:MAX_DESIGNATORS] + ['...'] + + cells = [ entry["id"], entry["qty"], hash.qty_unit, - hash.description, + description, hash.amount.number if hash.amount else None, hash.amount.unit if hash.amount else None, - ", ".join(sorted(entry["designators"])), + ", ".join(all_designators), ] if hash.partnumbers: cells.extend( @@ -118,8 +129,8 @@ def bom_list(bom): hash.partnumbers.pn, hash.partnumbers.manufacturer, hash.partnumbers.mpn, - hash.partnumbers.supplier, - hash.partnumbers.spn, + None, #hash.partnumbers.supplier, + None, #hash.partnumbers.spn, ] ) else: