/
zolnikov
/
database_analyzer
Обзор
Документация
Войти
/
zolnikov
/
database_analyzer
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
window/device_window.py
179 строк
8 KB
Jaman
версия 01.06.26
01 июл 2026, 21:24
01 июл 2026, 21:24
93f1e01
Код
Авторство
О чём код?
import pandas as pd from PySide6 import QtWidgets from PySide6.QtCore import QDateTime, Qt from PySide6.QtWidgets import QHeaderView, QTableWidgetItem, QTableWidget from common import ColorMessages, TypesMessages from qt import window_detail class DeviceWindow(QtWidgets.QWidget, window_detail.Ui_Form): def __init__(self, device, **kwargs): self.device = device super(DeviceWindow, self).__init__() self.setupUi(self) self.checkBox.setMinimumWidth(125) self.checkBox_2.setMinimumWidth(125) self.checkBox_3.setMinimumWidth(125) self.checkBox_4.setMinimumWidth(125) self.setWindowTitle(device.name) self.label_7.setText(device.name) self.label_6.setText(f'{device.type_device}') self.label_4.clear() self.label_5.clear() self.label_8.clear() self.label_11.clear() self.tableWidget.horizontalHeader().setStretchLastSection(True) self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.ResizeToContents) self.tableWidget.setSelectionBehavior(QTableWidget.SelectionBehavior.SelectRows) self.tableWidget.setSortingEnabled(True) self.tableWidget.setAlternatingRowColors(True) self.tableWidget_2.horizontalHeader().setStretchLastSection(True) self.tableWidget_2.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.ResizeToContents) self.tableWidget_2.setSelectionBehavior(QTableWidget.SelectionBehavior.SelectRows) self.tableWidget_2.setSortingEnabled(True) self.tableWidget_2.setAlternatingRowColors(True) self.dateTimeEdit.setDisplayFormat('yyyy-MM-dd HH:mm:ss') self.dateTimeEdit.setCalendarPopup(True) self.dateTimeEdit_2.setDisplayFormat('yyyy-MM-dd HH:mm:ss') self.dateTimeEdit_2.setCalendarPopup(True) self.groupBox_9.setMaximumHeight(209) self.tableWidget.cellClicked.connect(self.select_row_table) self.tableWidget.cellDoubleClicked.connect(self.click_show_events_around) self.pushButton.clicked.connect(self.push_show_btn) self.pushButton_2.clicked.connect(self.push_show_graph) def set_time_interval(self, start_time, end_time): start_time = QDateTime.fromString(start_time, format=Qt.DateFormat.ISODate) end_time = QDateTime.fromString(end_time, format=Qt.DateFormat.ISODate) self.dateTimeEdit.setDateTimeRange(start_time, end_time) self.dateTimeEdit.setDateTime(start_time) self.dateTimeEdit_2.setDateTimeRange(start_time, end_time) self.dateTimeEdit_2.setDateTime(end_time) def set_type_msg(self, types_msg: list): self.reset_select_type_msg() self.checkBox.setChecked(True) if TypesMessages.info in types_msg else self.checkBox.setChecked(False) self.checkBox_2.setChecked(True) if TypesMessages.alert in types_msg else self.checkBox_2.setChecked(False) self.checkBox_3.setChecked(True) if TypesMessages.warning in types_msg else self.checkBox_3.setChecked(False) self.checkBox_4.setChecked(True) if TypesMessages.error in types_msg else self.checkBox_4.setChecked(False) def set_data_in_table(self, df: pd.DataFrame): self.clear_main_table() self.tableWidget.setUpdatesEnabled(False) self.tableWidget.setRowCount(df.shape[0]) for row in range(df.shape[0]): item = self.create_table_widget(str(df.iloc[row].name), str(df.iloc[row, 2])) self.tableWidget.setItem(row, 0, item) item = self.create_table_widget(str(df.iloc[row, 0]), str(df.iloc[row, 2])) self.tableWidget.setItem(row, 1, item) item = self.create_table_widget(str(df.iloc[row, 1]), str(df.iloc[row, 2])) self.tableWidget.setItem(row, 2, item) item = self.create_table_widget(str(df.iloc[row, 2]), str(df.iloc[row, 2])) self.tableWidget.setItem(row, 3, item) item = self.create_table_widget(str(df.iloc[row, 3]), str(df.iloc[row, 2])) self.tableWidget.setItem(row, 4, item) self.tableWidget.setUpdatesEnabled(True) def set_data_to_summary_table(self, df: pd.DataFrame): self.clear_summary_table() self.tableWidget_2.setUpdatesEnabled(False) self.tableWidget_2.setRowCount(df.shape[0]) for row in range(df.shape[0]): item = self.create_table_widget(str(df.iloc[row, 0]), str(df.iloc[row, 2])) self.tableWidget_2.setItem(row, 0, item) item = self.create_table_widget(str(df.iloc[row, 1]), str(df.iloc[row, 2])) self.tableWidget_2.setItem(row, 1, item) item = self.create_table_widget(str(df.iloc[row, 2]), str(df.iloc[row, 2])) self.tableWidget_2.setItem(row, 2, item) item = self.create_table_widget(str(df.iloc[row, 3]), str(df.iloc[row, 2])) self.tableWidget_2.setItem(row, 3, item) self.tableWidget_2.setUpdatesEnabled(True) def create_table_widget(self, text, type_msg=None): item = QTableWidgetItem(f'{text}') item.setTextAlignment(Qt.AlignmentFlag.AlignHCenter | Qt.AlignmentFlag.AlignVCenter) item.setFlags(Qt.ItemFlag.ItemIsSelectable | Qt.ItemFlag.ItemIsEnabled | ~Qt.ItemFlag.ItemIsEditable) color = ColorMessages.get_color(type_msg) if color: item.setBackground(ColorMessages.get_color(type_msg)) return item def clear_table(self): self.clear_main_table() self.clear_summary_table() def clear_main_table(self): self.tableWidget.setSortingEnabled(False) self.tableWidget.clearContents() self.tableWidget.setRowCount(0) self.tableWidget.setSortingEnabled(True) def clear_summary_table(self): self.tableWidget_2.setSortingEnabled(False) self.tableWidget_2.clearContents() self.tableWidget_2.setRowCount(0) self.tableWidget_2.setSortingEnabled(True) def reset_select_type_msg(self): self.checkBox.setChecked(False) self.checkBox_2.setChecked(False) self.checkBox_3.setChecked(False) self.checkBox_4.setChecked(False) def select_row_table(self, row, column): select_index_df = int(self.tableWidget.item(row, 0).text()) self.device.select_row(select_index_df) def add_prev_next_event(self, prev_event, next_event, prev_event_time, next_event_time, current_event_time): self.clear_prev_next_event() self.label_8.setText(f'-{prev_event}-\n{prev_event_time}') self.label_11.setText(f'-{next_event}-\n{next_event_time}') self.label_4.setText(f'{current_event_time}') self.label_5.setText(f'{next_event_time}') def clear_prev_next_event(self): self.label_4.clear() self.label_5.clear() self.label_8.clear() self.label_11.clear() def push_show_btn(self): self.clear_table() self.clear_prev_next_event() types_msg = [] if self.checkBox.isChecked(): types_msg.append(TypesMessages.info) if self.checkBox_2.isChecked(): types_msg.append(TypesMessages.alert) if self.checkBox_3.isChecked(): types_msg.append(TypesMessages.warning) if self.checkBox_4.isChecked(): types_msg.append(TypesMessages.error) self.device.select(types_msg, self.start_time, self.end_time) def push_show_graph(self): self.device.open_graph() def closeEvent(self, event, /): self.reset_select_type_msg() self.clear_prev_next_event() self.clear_table() event.accept() def click_show_events_around(self, row, column): target_time = self.tableWidget.item(row, 4).text() self.device.show_events_around(target_time) @property def start_time(self): return self.dateTimeEdit.dateTime().toString('yyyy-MM-dd hh:mm:ss') @ property def end_time(self): return self.dateTimeEdit_2.dateTime().toString('yyyy-MM-dd hh:mm:ss')