From 9bf9f8342a5ac12feb3b2b286e88dbbb527b6256 Mon Sep 17 00:00:00 2001 From: UpstreamData Date: Mon, 14 Feb 2022 10:01:43 -0700 Subject: [PATCH] added export csv button to export all data from the tool --- tools/cfg_util/cfg_util_sg/func/files.py | 21 +++++++++++++++++++++ tools/cfg_util/cfg_util_sg/layout.py | 14 ++++++++------ tools/cfg_util/cfg_util_sg/ui.py | 5 ++++- 3 files changed, 33 insertions(+), 7 deletions(-) diff --git a/tools/cfg_util/cfg_util_sg/func/files.py b/tools/cfg_util/cfg_util_sg/func/files.py index 6bc576bb..1507735a 100644 --- a/tools/cfg_util/cfg_util_sg/func/files.py +++ b/tools/cfg_util/cfg_util_sg/func/files.py @@ -30,6 +30,27 @@ async def import_iplist(file_location): await update_ui_with_data("status", "") +async def export_csv(file_location, ip_list_selected): + await update_ui_with_data("status", "Exporting") + if not os.path.exists(file_location): + return + else: + if ip_list_selected is not None and not ip_list_selected == []: + async with aiofiles.open(file_location, mode='w') as file: + for item in ip_list_selected: + await file.write(str( + ", ".join([str(part) for part in item]) + ) + "\n") + else: + async with aiofiles.open(file_location, mode='w') as file: + for item in window['ip_table'].Values: + await file.write(str( + ", ".join([str(part) for part in item]) + ) + "\n") + await update_ui_with_data("status", "") + + + async def export_iplist(file_location, ip_list_selected): await update_ui_with_data("status", "Exporting") if not os.path.exists(file_location): diff --git a/tools/cfg_util/cfg_util_sg/layout.py b/tools/cfg_util/cfg_util_sg/layout.py index 1c8f6725..36eec0dd 100644 --- a/tools/cfg_util/cfg_util_sg/layout.py +++ b/tools/cfg_util/cfg_util_sg/layout.py @@ -16,18 +16,20 @@ layout = [ sg.InputText(key='miner_network', do_not_clear=True, size=(115, 1)), sg.Button('Scan', key='scan')], - [sg.Text('IP List File:', size=(9, 1)), - sg.Input(key="file_iplist", do_not_clear=True, size=(115, 1)), - sg.FileBrowse(), - sg.Button('Import', key="import_iplist"), - sg.Button('Export', key="export_iplist")], - [sg.Text('Config File:', size=(9, 1)), sg.Input(key="file_config", do_not_clear=True, size=(115, 1)), sg.FileBrowse(), sg.Button('Import', key="import_file_config"), sg.Button('Export', key="export_file_config")], + [sg.Text('IP List File:', size=(9, 1)), + sg.Input(key="file_iplist", do_not_clear=True, size=(115, 1)), + sg.FileBrowse(), + sg.Button('Import', key="import_iplist"), + sg.Button('Export', key="export_iplist"), + sg.Button('Export CSV', key="export_csv")], + + [sg.Column([ [sg.Column([ diff --git a/tools/cfg_util/cfg_util_sg/ui.py b/tools/cfg_util/cfg_util_sg/ui.py index 8ece2d73..c881f36b 100644 --- a/tools/cfg_util/cfg_util_sg/ui.py +++ b/tools/cfg_util/cfg_util_sg/ui.py @@ -5,7 +5,8 @@ import PySimpleGUI as sg from tools.cfg_util.cfg_util_sg.layout import window, generate_config_layout from tools.cfg_util.cfg_util_sg.func.miners import send_config, miner_light, refresh_data, generate_config, import_config, \ scan_and_get_data, restart_miners_backend, reboot_miners -from tools.cfg_util.cfg_util_sg.func.files import import_iplist, import_config_file, export_iplist, export_config_file +from tools.cfg_util.cfg_util_sg.func.files import import_iplist, \ + import_config_file, export_iplist, export_config_file, export_csv from tools.cfg_util.cfg_util_sg.func.ui import sort_data, copy_from_table from network import MinerNetwork @@ -54,6 +55,8 @@ async def ui(): asyncio.create_task(import_iplist(value["file_iplist"])) if event == "export_iplist": asyncio.create_task(export_iplist(value["file_iplist"], [window['ip_table'].Values[item][0] for item in value['ip_table']])) + if event == "export_csv": + asyncio.create_task(export_csv(value["file_iplist"], [window['ip_table'].Values[item] for item in value['ip_table']])) if event == "send_config": asyncio.create_task(send_config([window['ip_table'].Values[item][0] for item in value['ip_table']], value['config'])) if event == "import_file_config":