From 065d94eb4aa5163b07e32ee757894081cbf36dfd Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr> 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 | 84 +++++++++++---------- src/View/Results/translate.py | 6 ++ src/View/ui/Results.ui | 137 +++++++++++++++------------------- 4 files changed, 139 insertions(+), 118 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) - - 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) - - 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() + # 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() + + # 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() 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 @@ </widget> <widget class="QWidget" name="layoutWidget"> <layout class="QGridLayout" name="gridLayout_2"> - <item row="0" column="0"> - <widget class="QTabWidget" name="tabWidget"> - <property name="currentIndex"> - <number>0</number> - </property> - <widget class="QWidget" name="tab"> - <attribute name="title"> - <string>Geometry</string> - </attribute> - <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> - <layout class="QVBoxLayout" name="verticalLayout_4"> - <item> - <widget class="QSplitter" name="splitter_2"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <widget class="QSplitter" name="splitter"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <widget class="QWidget" name="verticalLayoutWidget"> - <layout class="QVBoxLayout" name="verticalLayout"/> - </widget> - <widget class="QWidget" name="verticalLayoutWidget_2"> - <layout class="QVBoxLayout" name="verticalLayout_2"/> - </widget> - </widget> - <widget class="QWidget" name="verticalLayoutWidget_3"> - <layout class="QVBoxLayout" name="verticalLayout_3"/> - </widget> - </widget> - </item> - </layout> - </item> - </layout> - </widget> - <widget class="QWidget" name="tab_2"> - <attribute name="title"> - <string>Hydrograph</string> - </attribute> - <layout class="QGridLayout" name="gridLayout_4"> - <item row="0" column="0"> - <layout class="QVBoxLayout" name="verticalLayout_hydrograph"/> - </item> - </layout> - </widget> - <widget class="QWidget" name="tab_3"> - <property name="enabled"> - <bool>true</bool> - </property> - <attribute name="title"> - <string>Sediment</string> - </attribute> - <layout class="QGridLayout" name="gridLayout_5"> - <item row="0" column="0"> - <widget class="QSplitter" name="splitter_5"> - <property name="enabled"> - <bool>true</bool> - </property> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <widget class="QWidget" name="verticalLayoutWidget_4"> - <layout class="QVBoxLayout" name="verticalLayout_sed_reach"/> - </widget> - <widget class="QWidget" name="verticalLayoutWidget_5"> - <layout class="QVBoxLayout" name="verticalLayout_sed_profile"/> - </widget> - </widget> - </item> - </layout> - </widget> - </widget> - </item> <item row="1" column="0"> <layout class="QHBoxLayout" name="horizontalLayout_2"> <item> @@ -217,6 +142,65 @@ </item> </layout> </item> + <item row="0" column="0"> + <widget class="QTabWidget" name="tabWidget"> + <property name="currentIndex"> + <number>1</number> + </property> + <widget class="QWidget" name="tab_4"> + <attribute name="title"> + <string>Raw data</string> + </attribute> + <layout class="QGridLayout" name="gridLayout_5"> + <item row="0" column="0"> + <widget class="QTableView" name="tableView_raw_data"/> + </item> + </layout> + </widget> + <widget class="QWidget" name="tab"> + <attribute name="title"> + <string>Water elevation</string> + </attribute> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <layout class="QVBoxLayout" name="verticalLayout_4"> + <item> + <widget class="QSplitter" name="splitter_2"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <widget class="QSplitter" name="splitter"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <widget class="QWidget" name="verticalLayoutWidget"> + <layout class="QVBoxLayout" name="verticalLayout"/> + </widget> + <widget class="QWidget" name="verticalLayoutWidget_2"> + <layout class="QVBoxLayout" name="verticalLayout_2"/> + </widget> + </widget> + <widget class="QWidget" name="verticalLayoutWidget_3"> + <layout class="QVBoxLayout" name="verticalLayout_3"/> + </widget> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <widget class="QWidget" name="tab_2"> + <attribute name="title"> + <string>Hydrograph</string> + </attribute> + <layout class="QGridLayout" name="gridLayout_4"> + <item row="0" column="0"> + <layout class="QVBoxLayout" name="verticalLayout_hydrograph"/> + </item> + </layout> + </widget> + </widget> + </item> </layout> </widget> </widget> @@ -235,6 +219,9 @@ </widget> <widget class="QStatusBar" name="statusbar"/> <widget class="QToolBar" name="toolBar"> + <property name="enabled"> + <bool>true</bool> + </property> <property name="windowTitle"> <string>toolBar</string> </property> -- GitLab