Files
Submissions-App/src/submissions/frontend/widgets/concentrations.py
2025-04-11 14:35:00 -05:00

55 lines
2.1 KiB
Python

"""
Pane showing BC control concentrations summary.
"""
from PyQt6.QtWidgets import QWidget, QPushButton, QLabel
from .info_tab import InfoPane
from backend.excel.reports import ConcentrationMaker
from frontend.visualizations.concentrations_chart import ConcentrationsChart
import logging
logger = logging.getLogger(f"submissions.{__name__}")
class Concentrations(InfoPane):
def __init__(self, parent: QWidget):
from .. import CheckableComboBox
super().__init__(parent)
self.save_button = QPushButton("Save Chart", parent=self)
self.save_button.pressed.connect(self.save_png)
self.layout.addWidget(self.save_button, 0, 2, 1, 1)
self.export_button = QPushButton("Save Data", parent=self)
self.export_button.pressed.connect(self.save_excel)
self.layout.addWidget(self.export_button, 0, 3, 1, 1)
self.pos_neg = CheckableComboBox(parent=self)
self.pos_neg.model().itemChanged.connect(self.update_data)
self.pos_neg.setEditable(False)
self.pos_neg.addItem("Select", header=True)
self.pos_neg.addItem("Positive")
self.pos_neg.addItem("Negative")
self.pos_neg.addItem("Samples", start_checked=False)
self.layout.addWidget(QLabel("Control Types"), 1, 0, 1, 1)
self.layout.addWidget(self.pos_neg, 1, 1, 1, 1)
self.fig = None
self.report_object = None
self.update_data()
def update_data(self) -> None:
"""
Sets data in the info pane
Returns:
None
"""
include = self.pos_neg.get_checked()
# logger.debug(f"Include: {include}")
super().update_data()
months = self.diff_month(self.start_date, self.end_date)
# logger.debug(f"Box checked: {self.all_box.isChecked()}")
chart_settings = dict(start_date=self.start_date, end_date=self.end_date,
include=include)
self.report_obj = ConcentrationMaker(**chart_settings)
self.fig = ConcentrationsChart(df=self.report_obj.df, settings=chart_settings, modes=[], months=months)
self.webview.setHtml(self.fig.html)