feat: add usage, activation to line, persistent alias, auto-updating data based on time

This commit is contained in:
WorldTeacher
2024-10-22 15:20:39 +02:00
parent 8a1676f318
commit 3977f2e9c1
3 changed files with 54 additions and 16 deletions

View File

@@ -23,9 +23,12 @@ class Application(QtWidgets.QMainWindow, MainWindow):
self.data_source.setAcceptDrops(True)
self.data_source.dropEvent = self.dropEvent
self.data_source.dragEnterEvent = self.dragEnterEvent
self.start_date.dateChanged.connect(self.load_data_clicked)
self.end_Date.dateChanged.connect(self.load_data_clicked)
self.widgetCount = 2
if self.widgetCount == 2:
self.removeLastGraph.setEnabled(False)
self.sensor_data = None # activations and usage data for legend of graph
def dragEnterEvent(self, event):
if event.mimeData().hasUrls():
@@ -61,7 +64,7 @@ class Application(QtWidgets.QMainWindow, MainWindow):
else:
print("Data source:", source)
if self.useSensorTimeData.isChecked():
data = (
data, sensor_data = (
Transform(source)
.load_data()
.transform_data(addMissing=self.addMissingDays.isChecked())
@@ -69,8 +72,7 @@ class Application(QtWidgets.QMainWindow, MainWindow):
else:
start_date = self.start_date.text().replace(".", "-")
end_date = self.end_Date.text().replace(".", "-")
print("Start date:", start_date, type(start_date))
data = (
data,sensor_data = (
Transform(source)
.load_data()
.transform_data(
@@ -80,13 +82,21 @@ class Application(QtWidgets.QMainWindow, MainWindow):
split=True,
)
)
print("Data:", data)
# add data to table
self.dataTable.setRowCount(0)
self.sensor_data = sensor_data
self.insertIntoTable(data)
def insertIntoTable(self, data):
#check if rows have set aliases
sensor_alias = {}
for row in range(self.dataTable.rowCount()):
if self.dataTable.item(row, 1):
sensor_alias[self.dataTable.item(row, 0).text()] = self.dataTable.item(
row, 1
).text()
self.dataTable.setRowCount(0)
for sensor in data:
self.dataTable.insertRow(self.dataTable.rowCount())
self.dataTable.setItem(
self.dataTable.rowCount() - 1, 0, QtWidgets.QTableWidgetItem(sensor)
@@ -96,9 +106,16 @@ class Application(QtWidgets.QMainWindow, MainWindow):
2,
QtWidgets.QTableWidgetItem(str((data[sensor]))),
)
if sensor in sensor_alias:
self.dataTable.setItem(
self.dataTable.rowCount() - 1,
1,
QtWidgets.QTableWidgetItem(sensor_alias[sensor]),
)
def create_diagram(self):
selectedRowCount = len(self.dataTable.selectionModel().selectedRows())
labels = {}
if selectedRowCount == 0:
# Show error message in dialog
msg = QtWidgets.QMessageBox()
@@ -117,6 +134,7 @@ class Application(QtWidgets.QMainWindow, MainWindow):
data = self.dataTable.item(self.dataTable.currentRow(), 2).text()
# convert data to dict
data = ast.literal_eval(data)
labels[sensor] = alias
graph_data = {
alias if alias else sensor: {"x": data["x"], "y": data["y"]}
}
@@ -140,8 +158,14 @@ class Application(QtWidgets.QMainWindow, MainWindow):
row_data = {
alias if alias else sensor: {"x": data["x"], "y": data["y"]}
}
labels[sensor] = alias
graph_data.append(row_data)
graph = Graph(graph_data)
#replace the keys from self.sensor_data with the alias from labels
print(labels)
for key in labels:
if key in self.sensor_data:
self.sensor_data[labels[key]] = self.sensor_data.pop(key)
graph = Graph(graph_data, labels,self.sensor_data, )
self.centralWidget().layout().addWidget(graph.graph)
self.widgetCount += 1
self.check_widget_count()