From 1f8d92f6bb6de586482b0d01089e99a0cffc1aec Mon Sep 17 00:00:00 2001 From: UpstreamData Date: Mon, 9 May 2022 09:59:48 -0600 Subject: [PATCH] fixed some bugs with sorting --- miners/__init__.py | 2 +- miners/bmminer.py | 2 +- miners/bosminer.py | 4 +- miners/btminer.py | 2 +- miners/cgminer.py | 2 +- tools/cfg_util/layout.py | 122 +++++++++++++++++++++++++++++++-------- tools/cfg_util/tables.py | 28 +++++++-- 7 files changed, 126 insertions(+), 36 deletions(-) diff --git a/miners/__init__.py b/miners/__init__.py index 333c06de..88b8f2ae 100644 --- a/miners/__init__.py +++ b/miners/__init__.py @@ -98,7 +98,7 @@ class BaseMiner: "Temperature": 0, "Pool User": "Unknown", "Wattage": 0, - "Split": 0, + "Split": "0", "Pool 1": "Unknown", "Pool 1 User": "Unknown", "Pool 2": "", diff --git a/miners/bmminer.py b/miners/bmminer.py index f2020821..c809e964 100644 --- a/miners/bmminer.py +++ b/miners/bmminer.py @@ -226,6 +226,6 @@ class BMMiner(BaseMiner): data["Pool 2 User"] = pool_2_user if quota: - data["Split"] = quota + data["Split"] = str(quota) return data diff --git a/miners/bosminer.py b/miners/bosminer.py index 12184b23..827a9bb9 100644 --- a/miners/bosminer.py +++ b/miners/bosminer.py @@ -249,7 +249,7 @@ class BOSMiner(BaseMiner): "Temperature": 0, "Pool User": "Unknown", "Wattage": 0, - "Split": 0, + "Split": "0", "Pool 1": "Unknown", "Pool 1 User": "Unknown", "Pool 2": "", @@ -337,7 +337,7 @@ class BOSMiner(BaseMiner): data["Pool 2 User"] = pool_2_user if quota: - data["Split"] = quota + data["Split"] = str(quota) if tunerstatus: tuner = tunerstatus.get("TUNERSTATUS") diff --git a/miners/btminer.py b/miners/btminer.py index a35e412f..c3e25613 100644 --- a/miners/btminer.py +++ b/miners/btminer.py @@ -180,6 +180,6 @@ class BTMiner(BaseMiner): data["Pool 2 User"] = pool_2_user if quota: - data["Split"] = quota + data["Split"] = str(quota) return data diff --git a/miners/cgminer.py b/miners/cgminer.py index de0e4faa..d36f909d 100644 --- a/miners/cgminer.py +++ b/miners/cgminer.py @@ -205,6 +205,6 @@ class CGMiner(BaseMiner): data["Pool 2 User"] = pool_2_user if quota: - data["Split"] = quota + data["Split"] = str(quota) return data diff --git a/tools/cfg_util/layout.py b/tools/cfg_util/layout.py index 6c322611..a3f3f89b 100644 --- a/tools/cfg_util/layout.py +++ b/tools/cfg_util/layout.py @@ -15,11 +15,21 @@ TABLE_HEADERS = { "Wattage", ], "CMD": ["IP", "Model", "Command Output"], - "POOLS": [ + "POOLS_ALL": [ + "IP", + "Split", + "Pool 1 User", + "Pool 2 User", + ], + "POOLS_1": [ "IP", "Split", "Pool 1", "Pool 1 User", + ], + "POOLS_2": [ + "IP", + "Split", "Pool 2", "Pool 2 User", ], @@ -188,17 +198,18 @@ def get_command_layout(): def get_pools_layout(): - pool_col_width = int((TABLE_TOTAL_WIDTH - (IP_COL_WIDTH + SPLIT_COL_WIDTH)) / 4) + pool_col_width = int((TABLE_TOTAL_WIDTH - (IP_COL_WIDTH + SPLIT_COL_WIDTH)) / 2) col_widths = [ IP_COL_WIDTH, SPLIT_COL_WIDTH, - pool_col_width + 5, - pool_col_width - 5, - pool_col_width + 5, - pool_col_width - 5, + pool_col_width, + pool_col_width, ] pools_layout = [ [ + sg.Button("ALL", key="pools_all"), + sg.Button("REFRESH DATA", key="pools_refresh"), + sg.Button("OPEN IN WEB", key="pools_web"), sg.Push(), sg.Button( "Miners: 0", @@ -209,24 +220,87 @@ def get_pools_layout(): ), ], [ - sg.Button("ALL", key="pools_all"), - sg.Button("REFRESH DATA", key="pools_refresh"), - sg.Button("OPEN IN WEB", key="pools_web"), - ], - [ - sg.Table( - values=[], - headings=[heading for heading in TABLE_HEADERS["POOLS"]], - auto_size_columns=False, - max_col_width=15, - justification="center", - key="pools_table", - background_color="white", - text_color="black", - col_widths=col_widths, - size=(0, TABLE_HEIGHT), - expand_x=True, - enable_click_events=True, + sg.TabGroup( + [ + [ + sg.Tab( + "All", + [ + [ + sg.Table( + values=[], + headings=[ + heading + for heading in TABLE_HEADERS["POOLS_ALL"] + ], + auto_size_columns=False, + max_col_width=15, + justification="center", + key="pools_table", + background_color="white", + text_color="black", + col_widths=col_widths, + size=(0, TABLE_HEIGHT), + expand_x=True, + enable_click_events=True, + ) + ] + ], + ) + ], + [ + sg.Tab( + "Pool 1", + [ + [ + sg.Table( + values=[], + headings=[ + heading + for heading in TABLE_HEADERS["POOLS_1"] + ], + auto_size_columns=False, + max_col_width=15, + justification="center", + key="pools_1_table", + background_color="white", + text_color="black", + col_widths=col_widths, + size=(0, TABLE_HEIGHT), + expand_x=True, + enable_click_events=True, + ) + ] + ], + ) + ], + [ + sg.Tab( + "Pool 2", + [ + [ + sg.Table( + values=[], + headings=[ + heading + for heading in TABLE_HEADERS["POOLS_2"] + ], + auto_size_columns=False, + max_col_width=15, + justification="center", + key="pools_2_table", + background_color="white", + text_color="black", + col_widths=col_widths, + size=(0, TABLE_HEIGHT), + expand_x=True, + enable_click_events=True, + ) + ] + ], + ) + ], + ] ) ], ] diff --git a/tools/cfg_util/tables.py b/tools/cfg_util/tables.py index ede2ef8c..dfbad699 100644 --- a/tools/cfg_util/tables.py +++ b/tools/cfg_util/tables.py @@ -80,7 +80,9 @@ class TableManager(metaclass=Singleton): tables = { "SCAN": [["" for _ in TABLE_HEADERS["SCAN"]] for _ in self.data], "CMD": [["" for _ in TABLE_HEADERS["CMD"]] for _ in self.data], - "POOLS": [["" for _ in TABLE_HEADERS["POOLS"]] for _ in self.data], + "POOLS_ALL": [["" for _ in TABLE_HEADERS["POOLS_ALL"]] for _ in self.data], + "POOLS_1": [["" for _ in TABLE_HEADERS["POOLS_1"]] for _ in self.data], + "POOLS_2": [["" for _ in TABLE_HEADERS["POOLS_2"]] for _ in self.data], "CONFIG": [["" for _ in TABLE_HEADERS["CONFIG"]] for _ in self.data], } @@ -105,7 +107,9 @@ class TableManager(metaclass=Singleton): tables[table][data_idx][idx] = item[key] window["scan_table"].update(tables["SCAN"]) - window["pools_table"].update(tables["POOLS"]) + window["pools_table"].update(tables["POOLS_ALL"]) + window["pools_1_table"].update(tables["POOLS_1"]) + window["pools_2_table"].update(tables["POOLS_2"]) window["cfg_table"].update(tables["CONFIG"]) treedata = sg.TreeData() @@ -124,16 +128,28 @@ class TableManager(metaclass=Singleton): return ipaddress.ip_address(self.data[data_key]["IP"]) if self.sort_key == "Hashrate": + if self.data[data_key]["Hashrate"] == "": + return -1 + if not isinstance(self.data[data_key]["Hashrate"], str): + return self.data[data_key]["Hashrate"] return float( self.data[data_key]["Hashrate"].replace(" ", "").replace("TH/s", "") ) if self.sort_key in ["Wattage", "Temperature"]: if isinstance(self.data[data_key][self.sort_key], str): - if self.sort_reverse: - return -100000000 # large negative number to place it at the bottom - else: - return 1000000000 # large number to place it at the bottom + return -300 + + if self.sort_key == "Split": + if self.data[data_key][self.sort_key] == "": + return -1 + if "/" not in self.data[data_key][self.sort_key]: + return 0 + + if not self.sort_reverse: + return int(self.data[data_key][self.sort_key].split("/")[0]) + else: + return int(self.data[data_key][self.sort_key].split("/")[1]) return self.data[data_key][self.sort_key]