added exporting a report from bad board utility

This commit is contained in:
UpstreamData
2022-04-01 15:19:12 -06:00
parent d84fcaafdf
commit 7809bfc0d1
5 changed files with 50 additions and 1 deletions

Binary file not shown.

View File

@@ -9,6 +9,7 @@ def disable_buttons(func):
"select_all_ips",
"refresh_data",
"open_in_web",
"save_report_button",
]
# handle the inner function that the decorator is wrapping

View File

@@ -1,11 +1,49 @@
import ipaddress
import os
import re
import xlsxwriter
import aiofiles
from tools.bad_board_util.func.ui import update_ui_with_data
from tools.bad_board_util.layout import window
from tools.bad_board_util.func.decorators import disable_buttons
@disable_buttons
async def save_report(file_location):
data = []
workbook = xlsxwriter.Workbook(file_location)
sheet = workbook.add_worksheet()
for line in window["ip_table"].Values:
data.append([line[0], line[1], line[2], line[3], line[5], line[7]])
data = sorted(data, reverse=True, key=lambda x: x[2])
headers = [
"IP",
"Miner Model",
"Total Chip Count",
"Left Board Chips",
"Center Board Chips",
"Right Board Chips",
]
print(data)
row = 0
col = 0
for item in headers:
sheet.write(row, col, item)
col += 1
row = 1
for line in data:
col = 0
for point in line:
sheet.write(row, col, point)
col += 1
row += 1
workbook.close()
async def import_iplist(file_location):

View File

@@ -29,6 +29,12 @@ layout = [
sg.Button("ALL", key="select_all_ips"),
sg.Button("REFRESH DATA", key="refresh_data"),
sg.Button("OPEN IN WEB", key="open_in_web"),
sg.Input(key="save_report", visible=False, enable_events=True),
sg.SaveAs(
"SAVE REPORT",
key="save_report_button",
file_types=(("Excel Files", "*.xlsx"),),
),
],
[
sg.Table(

View File

@@ -1,10 +1,11 @@
import asyncio
import sys
import PySimpleGUI as sg
import xlsxwriter
from tools.bad_board_util.layout import window
from tools.bad_board_util.func.miners import refresh_data, scan_and_get_data
from tools.bad_board_util.func.files import import_iplist, export_iplist
from tools.bad_board_util.func.files import import_iplist, export_iplist, save_report
from tools.bad_board_util.func.ui import sort_data, copy_from_table, table_select_all
from network import MinerNetwork
@@ -36,6 +37,9 @@ async def ui():
else:
miner_network = MinerNetwork(value["miner_network"])
asyncio.create_task(scan_and_get_data(miner_network))
if event == "save_report":
if not value["save_report"] == "":
asyncio.create_task(save_report(value["save_report"]))
if event == "select_all_ips":
if len(value["ip_table"]) == len(window["ip_table"].Values):
window["ip_table"].update(select_rows=())