diff --git a/novem/cli/vis.py b/novem/cli/vis.py index 7c3a1d1..b9c5837 100644 --- a/novem/cli/vis.py +++ b/novem/cli/vis.py @@ -116,21 +116,36 @@ def summary_fmt(summary: Optional[str], cl: cl) -> str: return summary.replace("\n", "") + has_favs = any("*" in p.get("fav", "") for p in plist) + has_likes = any("+" in p.get("fav", "") for p in plist) + def fav_fmt(markers: str, cl: cl) -> str: - fav_str = f"{cl.WARNING}*{cl.ENDFGC}" if "*" in markers else " " - like_str = f"{cl.OKBLUE}+{cl.ENDFGC}" if "+" in markers else " " - return f" {fav_str}{like_str} " + parts = "" + if has_favs: + parts += f"{cl.WARNING}*{cl.ENDFGC}" if "*" in markers else " " + if has_likes: + parts += f"{cl.OKBLUE}+{cl.ENDFGC}" if "+" in markers else " " + return f" {parts} " if parts else "" + + fav_header_width = (1 if has_favs else 0) + (1 if has_likes else 0) + fav_header = (" " * (fav_header_width + 2)) if fav_header_width > 0 else "" ppo: List[Dict[str, Any]] = [ - { - "key": "fav", - "header": " ", - "type": "text", - "fmt": fav_fmt, - "overflow": "keep", - "no_border": True, - "no_padding": True, - }, + *( + [ + { + "key": "fav", + "header": fav_header, + "type": "text", + "fmt": fav_fmt, + "overflow": "keep", + "no_border": True, + "no_padding": True, + }, + ] + if has_favs or has_likes + else [] + ), { "key": "id", "header": f"{type} ID", @@ -744,21 +759,36 @@ def status_fmt(status: Optional[str], cl: cl) -> str: return f"{cl.WARNING}{status}{cl.ENDFGC}" return status + has_favs = any("*" in p.get("fav", "") for p in plist) + has_likes = any("+" in p.get("fav", "") for p in plist) + def fav_fmt(markers: str, cl: cl) -> str: - fav_str = f"{cl.WARNING}*{cl.ENDFGC}" if "*" in markers else " " - like_str = f"{cl.OKBLUE}+{cl.ENDFGC}" if "+" in markers else " " - return f" {fav_str}{like_str} " + parts = "" + if has_favs: + parts += f"{cl.WARNING}*{cl.ENDFGC}" if "*" in markers else " " + if has_likes: + parts += f"{cl.OKBLUE}+{cl.ENDFGC}" if "+" in markers else " " + return f" {parts} " if parts else "" + + fav_header_width = (1 if has_favs else 0) + (1 if has_likes else 0) + fav_header = (" " * (fav_header_width + 2)) if fav_header_width > 0 else "" ppo: List[Dict[str, Any]] = [ - { - "key": "fav", - "header": " ", - "type": "text", - "fmt": fav_fmt, - "overflow": "keep", - "no_border": True, - "no_padding": True, - }, + *( + [ + { + "key": "fav", + "header": fav_header, + "type": "text", + "fmt": fav_fmt, + "overflow": "keep", + "no_border": True, + "no_padding": True, + }, + ] + if has_favs or has_likes + else [] + ), { "key": "id", "header": "Job ID", @@ -1531,21 +1561,36 @@ def summary_fmt(summary: Optional[str], _cl: Any) -> str: return "" return summary.replace("\n", "") + has_favs = any("*" in p.get("fav", "") for p in plist) + has_likes = any("+" in p.get("fav", "") for p in plist) + def fav_fmt(markers: str, _cl: Any) -> str: - fav_str = f"{cl.WARNING}*{cl.ENDFGC}" if "*" in markers else " " - like_str = f"{cl.OKBLUE}+{cl.ENDFGC}" if "+" in markers else " " - return f" {fav_str}{like_str} " + parts = "" + if has_favs: + parts += f"{cl.WARNING}*{cl.ENDFGC}" if "*" in markers else " " + if has_likes: + parts += f"{cl.OKBLUE}+{cl.ENDFGC}" if "+" in markers else " " + return f" {parts} " if parts else "" + + fav_header_width = (1 if has_favs else 0) + (1 if has_likes else 0) + fav_header = (" " * (fav_header_width + 2)) if fav_header_width > 0 else "" ppo: List[Dict[str, Any]] = [ - { - "key": "fav", - "header": " ", - "type": "text", - "fmt": fav_fmt, - "overflow": "keep", - "no_border": True, - "no_padding": True, - }, + *( + [ + { + "key": "fav", + "header": fav_header, + "type": "text", + "fmt": fav_fmt, + "overflow": "keep", + "no_border": True, + "no_padding": True, + }, + ] + if has_favs or has_likes + else [] + ), { "key": "username", "header": "Username", diff --git a/tests/test_cli_grids.py b/tests/test_cli_grids.py index 5d09bfd..dcbb379 100644 --- a/tests/test_cli_grids.py +++ b/tests/test_cli_grids.py @@ -283,14 +283,13 @@ def summary_fmt(summary, cl): def fav_fmt(markers, cl): fav_str = f"{cl.WARNING}*{cl.ENDC}" if "*" in markers else " " - like_str = f"{cl.OKBLUE}+{cl.ENDC}" if "+" in markers else " " - return f" {fav_str}{like_str} " + return f" {fav_str} " # construct our pretty print list ppo = [ { "key": "fav", - "header": " ", + "header": " ", "type": "text", "fmt": fav_fmt, "overflow": "keep", diff --git a/tests/test_cli_plots.py b/tests/test_cli_plots.py index 8806c47..aa9a7cb 100644 --- a/tests/test_cli_plots.py +++ b/tests/test_cli_plots.py @@ -285,14 +285,13 @@ def summary_fmt(summary, cl): def fav_fmt(markers, cl): fav_str = f"{cl.WARNING}*{cl.ENDC}" if "*" in markers else " " - like_str = f"{cl.OKBLUE}+{cl.ENDC}" if "+" in markers else " " - return f" {fav_str}{like_str} " + return f" {fav_str} " # construct our pretty print list ppo = [ { "key": "fav", - "header": " ", + "header": " ", "type": "text", "fmt": fav_fmt, "overflow": "keep",