fix: исправлено взаимодействие с новыми типами данных

This commit is contained in:
Andrew 2025-01-27 16:09:13 +03:00
parent 4dfd9a5a8f
commit b7a190ec54
5 changed files with 42 additions and 31 deletions

View File

@ -12,6 +12,13 @@ from OptAlgorithm import OptAlgorithm
from utils.qt_settings import dark_style from utils.qt_settings import dark_style
@dataclass
class PlotItems:
regions: dict
curves: dict
qt_items: dict
@dataclass @dataclass
class PointPassport: class PointPassport:
timeframe: list timeframe: list
@ -20,11 +27,18 @@ class PointPassport:
useful_data: dict useful_data: dict
@dataclass
class UsefulGraphData:
client_time: float
range_ME: float
k_hardness: float
@dataclass @dataclass
class GraphicPassport: class GraphicPassport:
dataframe: pd.DataFrame dataframe: pd.DataFrame
points_pocket: list[PointPassport] points_pocket: list[PointPassport]
useful_data: dict useful_data: UsefulGraphData
@dataclass @dataclass
@ -127,8 +141,10 @@ class BasePlotWidget:
mediator: Optional[BaseMediator] = None, mediator: Optional[BaseMediator] = None,
controller: BaseController = None): controller: BaseController = None):
super().__init__() super().__init__()
self._mediator = mediator self._mediator: BaseMediator = mediator
self._controller = controller self._controller: BaseController = controller
self._datalen: int = 0
self._datastep: int = 0
self._stage_colors = { self._stage_colors = {
"Closing": [220, 20, 60, 100], # Crimson "Closing": [220, 20, 60, 100], # Crimson

View File

@ -6,7 +6,7 @@ import numpy as np
import pandas as pd import pandas as pd
from loguru import logger from loguru import logger
from base.base import BasePointPassportFormer, BaseIdealDataBuilder, PointPassport, GraphicPassport, Settings from base.base import BasePointPassportFormer, BaseIdealDataBuilder, PointPassport, GraphicPassport, Settings, UsefulGraphData
class PassportFormer(BasePointPassportFormer): class PassportFormer(BasePointPassportFormer):
@ -115,31 +115,27 @@ class PassportFormer(BasePointPassportFormer):
key = list(self._settings.operator.keys())[0] key = list(self._settings.operator.keys())[0]
point_quantity = len(self._settings.operator[key]) point_quantity = len(self._settings.operator[key])
graphic_passport = GraphicPassport()
graphic_passport.dataframe = dataframe
graphic_passport.points_pocket = []
system_settings = {key: value[0] for key, value in self._settings.system.items()} system_settings = {key: value[0] for key, value in self._settings.system.items()}
graphic_passport.useful_data = self._form_graphic_useful_data(system_settings) graphic_passport = GraphicPassport(dataframe, [], self._form_graphic_useful_data(system_settings))
for i in range(point_quantity): for i in range(point_quantity):
point_settings = Settings() point_settings = Settings(self._get_operator_settings_part(i), system_settings)
point_settings.operator = self._get_operator_settings_part(i)
point_settings.system = system_settings
point_passport = PointPassport() timeframe, po_events = self._form_point_events(events, i)
point_passport.ideal_data = self._form_point_ideal_data(point_settings) ideal_data = self._form_point_ideal_data(point_settings)
point_passport.useful_data = self._form_point_useful_data(point_settings.operator) useful_data = self._form_point_useful_data(point_settings.operator)
point_passport.timeframe, point_passport.events = self._form_point_events(events, i) point_passport = PointPassport(timeframe, po_events, ideal_data, useful_data)
graphic_passport.points_pocket.append(point_passport) graphic_passport.points_pocket.append(point_passport)
return graphic_passport return graphic_passport
def _form_graphic_useful_data(self, system_settings:dict) -> dict: def _form_graphic_useful_data(self, system_settings:dict) -> dict:
tesla_time = sum(self._settings.operator.get("Tesla summary time", [])) tesla_time = sum(self._settings.operator.get("Tesla summary time", []))
useful_data = {"tesla_time": tesla_time, useful_data = UsefulGraphData(
"range_ME": system_settings["Range ME, mm"], tesla_time,
"k_hardness": system_settings["k_hardness_1"] system_settings["Range ME, mm"],
} system_settings["k_hardness_1"]
)
return useful_data return useful_data
def _form_point_useful_data(self, operator_settings:dict) -> dict: def _form_point_useful_data(self, operator_settings:dict) -> dict:
@ -151,7 +147,7 @@ class PassportFormer(BasePointPassportFormer):
def _form_point_ideal_data(self, point_settings:Settings) -> dict: def _form_point_ideal_data(self, point_settings:Settings) -> dict:
cache_key = self._generate_cache_key(point_settings) cache_key = self._generate_cache_key(point_settings)
ideal_data = self._ideal_data_cashe.get(cache_key, ideal_data = self._ideal_data_cashe.get(cache_key,
self._build_ideal_data(idealDataBuilder=IdealDataBuilder, params=point_settings)) self._build_ideal_data(idealDataBuilder=IdealDataBuilder, point_settings=point_settings))
self._ideal_data_cashe[cache_key] = ideal_data self._ideal_data_cashe[cache_key] = ideal_data
return ideal_data return ideal_data
@ -218,7 +214,7 @@ class IdealDataBuilder(BaseIdealDataBuilder):
] ]
return ideal_timings return ideal_timings
def _get_data(self, end_timestamp:float, func:function) -> pd.DataFrame: def _get_data(self, end_timestamp:float, func) -> pd.DataFrame:
data = [] data = []
for i in range (0, int(end_timestamp*self.mul)+1): for i in range (0, int(end_timestamp*self.mul)+1):
time = i/self.mul time = i/self.mul

View File

@ -116,10 +116,8 @@ class MainWindow(BaseMainWindow):
self.signal_mode.emit(2) self.signal_mode.emit(2)
def _transfer_settings(self) -> None: def _transfer_settings(self) -> None:
settings = Settings() settings = Settings(self.operSettings.getParams(), self.sysSettings.getParams())
settings.operator = self.operSettings.getParams() self.signal_settings.emit(settings)
settings.system = self.sysSettings.getParams()
self.signal_settings.emit(Settings)
def _upd_settings(self) -> None: def _upd_settings(self) -> None:
self._transfer_settings() self._transfer_settings()

View File

@ -12,6 +12,7 @@ from PyQt5.QtWidgets import QSizePolicy as QSP
from gui.settings_window import SystemSettings, OperatorSettings from gui.settings_window import SystemSettings, OperatorSettings
from gui.report_gui import ReportSettings from gui.report_gui import ReportSettings
from base.base import PlotItems
class StartWidget(QWidget): class StartWidget(QWidget):
@ -124,13 +125,13 @@ class CustomTabWidget(QTabWidget):
#TODO: переписать обмен данными, засунуть ссылки куда-то еще #TODO: переписать обмен данными, засунуть ссылки куда-то еще
def create_tab(self, plot_widget:QWidget) -> None: def create_tab(self, plot_widget:QWidget) -> None:
widget, reg_items, curve_items, qt_items = plot_widget plot_items:PlotItems = plot_widget.property("plot_items")
tab = QWidget() tab = QWidget()
tab.setProperty("reg_items", reg_items) tab.setProperty("reg_items", plot_items.regions)
tab.setProperty("curve_items", curve_items) tab.setProperty("curve_items", plot_items.curves)
tab.setProperty("qt_items", qt_items) tab.setProperty("qt_items", plot_items.qt_items)
grid = QGridLayout() grid = QGridLayout()
grid.addWidget(widget) grid.addWidget(plot_widget)
tab.setLayout(grid) tab.setLayout(grid)
self.addTab(tab, "SF_trace_" + dt.now().strftime('%Y_%m_%d-%H_%M_%S')) self.addTab(tab, "SF_trace_" + dt.now().strftime('%Y_%m_%d-%H_%M_%S'))
self.setCurrentWidget(tab) self.setCurrentWidget(tab)

View File

@ -9,7 +9,7 @@ from controller.mediator import Mediator
from controller.converter import DataConverter from controller.converter import DataConverter
from gui.plotter import PlotWidget from gui.plotter import PlotWidget
from controller.controller import Controller from controller.controller import Controller
from src.controller.passport_former import PassportFormer from controller.passport_former import PassportFormer
def main(): def main():