Files
LibrarySystem/src/ui/reportUi.py
2025-01-20 11:13:36 +01:00

106 lines
3.6 KiB
Python

from PyQt6 import QtCore, QtWidgets, QtGui
from .sources.Ui_dialog_generateReport import Ui_Dialog
from src.utils import Icon
from src.utils.reportThread import ReportThread
from src.logic import Database
import os
class ReportUi(QtWidgets.QDialog, Ui_Dialog):
def __init__(self, parent=None):
super(ReportUi, self).__init__(parent)
self.setupUi(self)
self.setWindowIcon(Icon("report").icon)
self.setWindowTitle("Report erstellen")
self.radioButton.hide()
self.db = Database()
self.reportprogress.hide()
# variables
self.maxrecords = 0
self.days = 0
self.rthread = ReportThread()
# buttons
self.generateReport.setEnabled(False)
self.generateReport.clicked.connect(self.generate_report)
self.radio_year.clicked.connect(self.set_days_by_radio)
self.radio_month.clicked.connect(self.set_days_by_radio)
self.radio_week.clicked.connect(self.set_days_by_radio)
self.format_txt.clicked.connect(lambda: self.rthread.setFormat("txt"))
self.format_csv.clicked.connect(lambda: self.rthread.setFormat("tsv"))
self.format_csv.clicked.connect(lambda: self.generateReport.setEnabled(True))
self.format_txt.clicked.connect(lambda: self.generateReport.setEnabled(True))
# sliders
self.dayslider.valueChanged.connect(self.set_days)
self.show()
# labels
self.label_4.hide()
def set_days_by_radio(self):
if self.radio_year.isChecked():
self.set_days(365)
self.dayslider.setValue(365)
elif self.radio_month.isChecked():
self.set_days(30)
self.dayslider.setValue(30)
elif self.radio_week.isChecked():
self.set_days(7)
self.dayslider.setValue(7)
def set_days(self, value):
# if value is not 7,30,365, deactivate radio buttons
if value != 7 and value != 30 and value != 365:
self.radioButton.setChecked(True)
self.days = value
self.dayValue.setText(str(value))
def generate_report(self):
self.rthread.setDays(self.days)
self.rthread.report_signal.connect(self.report_generated)
self.rthread.report_nums_signal.connect(self.show_progress)
self.rthread.report_progress_signal.connect(self.update_progress)
self.rthread.finished.connect(self.reset)
# self.rthread.finished.connect(self.rthread.deleteLater)
self.rthread.start()
def reset(self):
self.days = 0
self.reportprogress.hide()
self.reportprogress.setValue(0)
self.label_4.setText("Fortschritt:")
self.label_4.hide()
def update_progress(self, num):
self.reportlink.clear()
self.reportprogress.setValue(num)
self.label_4.setText("Fortschritt: " + str(num) + "/" + str(self.maxrecords))
if num == self.reportprogress.maximum():
self.label_4.setText("Datei wird generiert")
def show_progress(self, num):
self.reportprogress.show()
self.label_4.show()
self.maxrecords = num
self.reportprogress.setMaximum(self.maxrecords)
def report_generated(self):
self.reportlink.setOpenExternalLinks(True)
fileformat = self.rthread.format
# print(fileformat)
self.reportlink.setText(
f'<a href="file:///{os.getcwd()}/report.{fileformat}">Report</a>'
)
self.reportprogress.hide()
def launch():
import sys
app = QtWidgets.QApplication(sys.argv)
window = ReportUi()
sys.exit(app.exec())