From 065d94eb4aa5163b07e32ee757894081cbf36dfd Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby Date: Fri, 16 Feb 2024 15:44:26 +0100 Subject: [PATCH] Results: Add 'raw_data' tab and delete sediment tab. --- src/View/Results/Table.py | 30 +++++++- src/View/Results/Window.py | 78 ++++++++++--------- src/View/Results/translate.py | 6 ++ src/View/ui/Results.ui | 137 +++++++++++++++------------------- 4 files changed, 136 insertions(+), 115 deletions(-) diff --git a/src/View/Results/Table.py b/src/View/Results/Table.py index d6fd109a..55496c7f 100644 --- a/src/View/Results/Table.py +++ b/src/View/Results/Table.py @@ -47,10 +47,13 @@ class TableModel(PamhyrTableModel): _river = self._data.river if self._opt_data == "reach": self._lst = _river.reachs - else: + elif self._opt_data == "profile": + self._lst = _river.reach(0).profiles + elif self._opt_data == "raw_data": self._lst = _river.reach(0).profiles def __init__(self, **kwargs): + self._timestamp = 0.0 super(TableModel, self).__init__(**kwargs) def data(self, index, role=Qt.DisplayRole): @@ -64,13 +67,25 @@ class TableModel(PamhyrTableModel): if self._headers[column] == "name": v = self._lst[row].name return str(v) - else: + elif self._opt_data == "profile": if self._headers[column] == "name": v = self._lst[row].name return str(v) elif self._headers[column] == "kp": v = self._lst[row].kp return f"{v:.4f}" + elif self._opt_data == "raw_data": + p = self._lst[row] + if self._headers[column] == "name": + if p.name == "": + return f"{p.kp:.4f}" + return f"{p.name}" + elif self._headers[column] == "water_elevation": + v = self._lst[row].get_ts_key(self._timestamp, "Z") + return f"{v:.4f}" + elif self._headers[column] == "discharge": + v = self._lst[row].get_ts_key(self._timestamp, "Q") + return f"{v:.4f}" return QVariant() @@ -79,7 +94,16 @@ class TableModel(PamhyrTableModel): if self._opt_data == "reach": self._lst = _river.reachs - else: + elif self._opt_data == "profile" or self._opt_data == "raw_data": self._lst = _river.reach(reach).profiles self.layoutChanged.emit() + + @property + def timestamp(self): + return self._timestamp + + @timestamp.setter + def timestamp(self, timestamp): + self._timestamp = timestamp + self.layoutChanged.emit() diff --git a/src/View/Results/Window.py b/src/View/Results/Window.py index 5781f1bf..7b36c964 100644 --- a/src/View/Results/Window.py +++ b/src/View/Results/Window.py @@ -118,7 +118,7 @@ class ResultsWindow(PamhyrWindow): def setup_table(self): self._table = {} - for t in ["reach", "profile"]: + for t in ["reach", "profile", "raw_data"]: table = self.find(QTableView, f"tableView_{t}") self._table[t] = TableModel( table_view=table, @@ -230,44 +230,44 @@ class ResultsWindow(PamhyrWindow): ) self.plot_h.draw() - self.canvas_5 = MplCanvas(width=5, height=4, dpi=100) - self.canvas_5.setObjectName("canvas_5") - self.toolbar_5 = PamhyrPlotToolbar( - self.canvas_5, self - ) - self.plot_layout_5 = self.find(QVBoxLayout, "verticalLayout_sed_reach") - self.plot_layout_5.addWidget(self.toolbar_5) - self.plot_layout_5.addWidget(self.canvas_5) + # self.canvas_5 = MplCanvas(width=5, height=4, dpi=100) + # self.canvas_5.setObjectName("canvas_5") + # self.toolbar_5 = PamhyrPlotToolbar( + # self.canvas_5, self + # ) + # self.plot_layout_5 = self.find(QVBoxLayout, "verticalLayout_sed_reach") + # self.plot_layout_5.addWidget(self.toolbar_5) + # self.plot_layout_5.addWidget(self.canvas_5) - if self._study.river.has_sediment(): - self.plot_sed_reach = PlotSedReach( - canvas=self.canvas_5, - results=self._results, - reach_id=0, - profile_id=0, - toolbar=self.toolbar_5 - ) - self.plot_sed_reach.draw() + # if self._study.river.has_sediment(): + # self.plot_sed_reach = PlotSedReach( + # canvas=self.canvas_5, + # results=self._results, + # reach_id=0, + # profile_id=0, + # toolbar=self.toolbar_5 + # ) + # self.plot_sed_reach.draw() - self.canvas_6 = MplCanvas(width=5, height=4, dpi=100) - self.canvas_6.setObjectName("canvas_6") - self.toolbar_6 = PamhyrPlotToolbar( - self.canvas_6, self - ) - self.plot_layout_6 = self.find( - QVBoxLayout, "verticalLayout_sed_profile") - self.plot_layout_6.addWidget(self.toolbar_6) - self.plot_layout_6.addWidget(self.canvas_6) + # self.canvas_6 = MplCanvas(width=5, height=4, dpi=100) + # self.canvas_6.setObjectName("canvas_6") + # self.toolbar_6 = PamhyrPlotToolbar( + # self.canvas_6, self + # ) + # self.plot_layout_6 = self.find( + # QVBoxLayout, "verticalLayout_sed_profile") + # self.plot_layout_6.addWidget(self.toolbar_6) + # self.plot_layout_6.addWidget(self.canvas_6) - if self._study.river.has_sediment(): - self.plot_sed_profile = PlotSedProfile( - canvas=self.canvas_6, - results=self._results, - reach_id=0, - profile_id=0, - toolbar=self.toolbar_6 - ) - self.plot_sed_profile.draw() + # if self._study.river.has_sediment(): + # self.plot_sed_profile = PlotSedProfile( + # canvas=self.canvas_6, + # results=self._results, + # reach_id=0, + # profile_id=0, + # toolbar=self.toolbar_6 + # ) + # self.plot_sed_profile.draw() def closeEvent(self, event): try: @@ -335,9 +335,10 @@ class ResultsWindow(PamhyrWindow): fun = { "reach": self._set_current_reach, "profile": self._set_current_profile, + "raw_data": self._set_current_profile, } - for t in ["reach", "profile"]: + for t in ["reach", "profile", "raw_data"]: table = self.find(QTableView, f"tableView_{t}") table.selectionModel()\ @@ -371,6 +372,7 @@ class ResultsWindow(PamhyrWindow): table.scrollTo(index) self._table["profile"].update(ind) + self._table["raw_data"].update(ind) def update_table_selection_profile(self, ind): table = self.find(QTableView, f"tableView_profile") @@ -430,6 +432,8 @@ class ResultsWindow(PamhyrWindow): for plot in self._additional_plot: self._additional_plot[plot].set_timestamp(timestamp) + self._table["raw_data"].timestamp = timestamp + self.update_statusbar() def _get_current_reach(self): diff --git a/src/View/Results/translate.py b/src/View/Results/translate.py index 15c6dac0..9dffa6f0 100644 --- a/src/View/Results/translate.py +++ b/src/View/Results/translate.py @@ -46,3 +46,9 @@ class ResultsTranslate(PamhyrTranslate): "name": _translate("Results", "Name"), "kp": _translate("Results", "KP (m)"), } + + self._sub_dict["table_headers_raw_data"] = { + "name": _translate("Results", "Profile"), + "water_elevation": _translate("Results", "Water elevation (m)"), + "discharge": _translate("Results", "Discharge (m³/s)"), + } diff --git a/src/View/ui/Results.ui b/src/View/ui/Results.ui index 7ff3f594..8371b604 100644 --- a/src/View/ui/Results.ui +++ b/src/View/ui/Results.ui @@ -57,81 +57,6 @@ - - - - 0 - - - - Geometry - - - - - - - - Qt::Vertical - - - - Qt::Horizontal - - - - - - - - - - - - - - - - - - - - Hydrograph - - - - - - - - - - true - - - Sediment - - - - - - true - - - Qt::Vertical - - - - - - - - - - - - - @@ -217,6 +142,65 @@ + + + + 1 + + + + Raw data + + + + + + + + + + Water elevation + + + + + + + + Qt::Vertical + + + + Qt::Horizontal + + + + + + + + + + + + + + + + + + + + Hydrograph + + + + + + + + + @@ -235,6 +219,9 @@ + + true + toolBar