mirror of
https://github.com/RolandWH/SIPPCompare.git
synced 2025-05-10 00:31:49 +01:00
88 lines
3.3 KiB
Python
88 lines
3.3 KiB
Python
import datetime
|
|
import os
|
|
|
|
from PyQt6 import uic
|
|
from PyQt6.QtGui import QIcon
|
|
from PyQt6.QtWidgets import QWidget
|
|
|
|
import resource_finder
|
|
|
|
|
|
class OutputWindow(QWidget):
|
|
def __init__(self):
|
|
super().__init__()
|
|
# Import Qt Designer UI XML file
|
|
uic.loadUi(resource_finder.get_res_path("gui/output_window.ui"), self)
|
|
self.setWindowIcon(QIcon(resource_finder.get_res_path("icon2.ico")))
|
|
|
|
"""
|
|
# Initialise class variables
|
|
self.results_str = ""
|
|
self.platform_name = ""
|
|
|
|
# Handle events
|
|
self.res_save_but.clicked.connect(self.save_results)
|
|
|
|
def save_results(self):
|
|
# Use datatime for txt filename
|
|
cur_time = datetime.datetime.now()
|
|
if not os.path.exists("output"):
|
|
os.makedirs("output")
|
|
filename_str = f"output/"
|
|
if self.platform_name is not None:
|
|
filename_str += f"{self.platform_name}"
|
|
else:
|
|
filename_str += "Unnamed"
|
|
filename_str += f"-{cur_time.year}.{cur_time.month}.{cur_time.day}.txt"
|
|
output_file = open(filename_str, "wt", encoding = "utf-8")
|
|
output_file.write(self.results_str)
|
|
|
|
# Display fees in output window as plaintext readout
|
|
def display_output(self, fund_plat_fees: float, fund_deal_fees: float,
|
|
share_plat_fees: float, share_deal_fees: float, plat_name: str):
|
|
self.platform_name = plat_name
|
|
if self.platform_name is not None:
|
|
self.results_str = f"Fees breakdown (Platform \"{self.platform_name}\"):"
|
|
else:
|
|
self.results_str = f"Fees breakdown:"
|
|
|
|
self.results_str += "\n\nPlatform fees:"
|
|
# :.2f is used in order to display 2 decimal places (currency form)
|
|
self.results_str += f"\n\tFund platform fees: £{round(fund_plat_fees, 2):.2f}"
|
|
self.results_str += f"\n\tShare platform fees: £{round(share_plat_fees, 2):.2f}"
|
|
total_plat_fees = fund_plat_fees + share_plat_fees
|
|
self.results_str += f"\n\tTotal platform fees: £{round(total_plat_fees, 2):.2f}"
|
|
|
|
self.results_str += "\n\nDealing fees:"
|
|
self.results_str += f"\n\tFund dealing fees: £{round(fund_deal_fees, 2):.2f}"
|
|
self.results_str += f"\n\tShare dealing fees: £{round(share_deal_fees, 2):.2f}"
|
|
total_deal_fees = fund_deal_fees + share_deal_fees
|
|
self.results_str += f"\n\tTotal dealing fees: £{round(total_deal_fees, 2):.2f}"
|
|
|
|
total_fees = total_plat_fees + total_deal_fees
|
|
self.results_str += f"\n\nTotal fees: £{round(total_fees, 2):.2f}"
|
|
|
|
self.output.setText(self.results_str)
|
|
"""
|
|
|
|
def display_output(self, results: list):
|
|
self.graphWidget.canvas.axes.clear()
|
|
self.graphWidget.canvas.axes.cla()
|
|
self.graphWidget.canvas.draw_idle()
|
|
ax = self.graphWidget.canvas.axes
|
|
#self.graphWidget.clf()
|
|
names = []
|
|
values = []
|
|
for result in results:
|
|
names.append(result[4])
|
|
values.append(sum(result[:4]))
|
|
h_bars = ax.barh(names, values)
|
|
#labels = []
|
|
#for value in values:
|
|
# labels.append(f"£{str(value)}")
|
|
|
|
ax.bar_label(h_bars, label_type='center', labels=[f"£{x:,.2f}" for x in h_bars.datavalues])
|
|
#ax.draw()
|
|
#self.graphWidget.draw()
|
|
|