fully implemented fault light command
This commit is contained in:
@@ -4,16 +4,9 @@ from tools.cfg_util.cfg_util_qt.layout import (
|
||||
TABLE_HEADERS,
|
||||
window,
|
||||
)
|
||||
from tools.cfg_util.cfg_util_qt.imgs import TkImages, LIGHT
|
||||
from tools.cfg_util.cfg_util_qt.imgs import TkImages, LIGHT, FAULT_LIGHT
|
||||
import PySimpleGUI as sg
|
||||
|
||||
|
||||
def clear_tables():
|
||||
for table in TABLE_KEYS["table"]:
|
||||
window[table].update([])
|
||||
for tree in TABLE_KEYS["tree"]:
|
||||
window[tree].update(sg.TreeData())
|
||||
update_miner_count(0)
|
||||
import ipaddress
|
||||
|
||||
|
||||
def update_miner_count(count):
|
||||
@@ -22,8 +15,11 @@ def update_miner_count(count):
|
||||
|
||||
|
||||
def update_tables(data: list or None = None):
|
||||
table_manager = TableManager()
|
||||
table_manager.update_tables(data)
|
||||
TableManager().update_data(data)
|
||||
|
||||
|
||||
def clear_tables():
|
||||
TableManager().clear_tables()
|
||||
|
||||
|
||||
async def update_tree(data: list):
|
||||
@@ -48,20 +44,41 @@ class TableManager(metaclass=Singleton):
|
||||
|
||||
def __init__(self):
|
||||
self.images = TkImages()
|
||||
self.data = []
|
||||
self.data = {}
|
||||
self.sort_key = "IP"
|
||||
|
||||
def update_tables(self, data: list or None = None):
|
||||
if not data or data == []:
|
||||
data = self.data
|
||||
self.data = data
|
||||
def update_data(self, data: list):
|
||||
if not data:
|
||||
return
|
||||
|
||||
for line in data:
|
||||
self.update_item(line)
|
||||
|
||||
def update_item(self, data: dict):
|
||||
if not data or data == {} or not data.get("IP"):
|
||||
return
|
||||
|
||||
if not data["IP"] in self.data.keys():
|
||||
self.data[data["IP"]] = {}
|
||||
|
||||
for key in data.keys():
|
||||
self.data[data["IP"]][key] = data[key]
|
||||
|
||||
self.update_tables()
|
||||
|
||||
def update_tables(self):
|
||||
tables = {
|
||||
"SCAN": [["" for _ in TABLE_HEADERS["SCAN"]] for _ in data],
|
||||
"CMD": [["" for _ in TABLE_HEADERS["CMD"]] for _ in data],
|
||||
"POOLS": [["" for _ in TABLE_HEADERS["POOLS"]] for _ in data],
|
||||
"CONFIG": [["" for _ in TABLE_HEADERS["CONFIG"]] for _ in data],
|
||||
"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],
|
||||
"CONFIG": [["" for _ in TABLE_HEADERS["CONFIG"]] for _ in self.data],
|
||||
}
|
||||
for data_idx, item in enumerate(data):
|
||||
for data_idx, key in enumerate(
|
||||
sorted(self.data.keys(), key=lambda x: self._get_sort(x))
|
||||
):
|
||||
item = self.data[key]
|
||||
keys = item.keys()
|
||||
|
||||
if "Hashrate" in keys:
|
||||
if not isinstance(item["Hashrate"], str):
|
||||
item[
|
||||
@@ -79,11 +96,31 @@ class TableManager(metaclass=Singleton):
|
||||
|
||||
treedata = sg.TreeData()
|
||||
for idx, item in enumerate(tables["CMD"]):
|
||||
treedata.insert("", idx, "", item, icon=LIGHT)
|
||||
ico = LIGHT
|
||||
if self.data[item[0]]["Light"]:
|
||||
ico = FAULT_LIGHT
|
||||
treedata.insert("", idx, "", item, icon=ico)
|
||||
|
||||
window["cmd_table"].update(treedata)
|
||||
|
||||
update_miner_count(len(data))
|
||||
update_miner_count(len(self.data))
|
||||
|
||||
def _get_sort(self, data_key: str):
|
||||
if self.sort_key == "IP":
|
||||
return ipaddress.ip_address(self.data[data_key]["IP"])
|
||||
|
||||
if self.sort_key == "Hashrate":
|
||||
return self.data[data_key]["Hashrate"].replace(" ", "").replace("TH/s", "")
|
||||
|
||||
return self.data[data_key][self.sort_key]
|
||||
|
||||
def clear_tables(self):
|
||||
self.data = {}
|
||||
for table in TABLE_KEYS["table"]:
|
||||
window[table].update([])
|
||||
for tree in TABLE_KEYS["tree"]:
|
||||
window[tree].update(sg.TreeData())
|
||||
update_miner_count(0)
|
||||
|
||||
def update_tree_by_key(self, data: dict, key: str = "IP"):
|
||||
for idx, item in enumerate(self.data):
|
||||
|
||||
Reference in New Issue
Block a user