From 19c72892a8c43df034b27efedbe0fe06d02ba691 Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby Date: Tue, 16 Jun 2026 16:13:10 +0200 Subject: [PATCH] Results: Add data: Hydrogram: Move drawing to plot. --- src/View/Results/PlotH.py | 35 ++++++++++++++++++++++++++++++++--- src/View/Results/Window.py | 11 +++-------- 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/src/View/Results/PlotH.py b/src/View/Results/PlotH.py index 77ff7193..e40c132b 100644 --- a/src/View/Results/PlotH.py +++ b/src/View/Results/PlotH.py @@ -21,7 +21,7 @@ import logging from functools import reduce from datetime import datetime -from tools import timer, trace +from tools import timer, trace, logger_exception from View.Tools.PamhyrPlot import PamhyrPlot from PyQt5.QtCore import ( @@ -68,6 +68,7 @@ class PlotH(PamhyrPlot): self._line_max = [] self._line = [] + self._add_data_lines = [] @property def results(self): @@ -117,15 +118,17 @@ class PlotH(PamhyrPlot): self.set_ticks_time_formater() + self.draw_additional_data(0) + self.enable_legend() self.canvas.draw_idle() - self.update_idle + self.update_idle() + self.draw_current() self._init = True def draw_data(self, res_id): - results = self.results[res_id] reach = results.river.reach(self._current_reach_id) for i, p in enumerate(self._current_profile_id): @@ -152,6 +155,28 @@ class PlotH(PamhyrPlot): ) self._line.append(line) + def draw_additional_data(self, res_id): + results = self.results[res_id] + + self._add_data_lines = [] + + for data in results.get("additional_data"): + data = data._data + x, y = data['x'], data['y'] + legend = data['legend'] + unit = data['unit'] + + if data['type_x'] == 'time' and data['type_y'] == 'discharge': + line, = self.canvas.axes.plot( + x, y, marker="+", + label=legend + ' ' + unit + ) + + self._add_data_lines.append(line) + + self.enable_legend() + self.canvas.draw_idle() + def draw_current(self): self._current, = self.canvas.axes.plot( [self._current_timestamp, self._current_timestamp], @@ -220,6 +245,10 @@ class PlotH(PamhyrPlot): self.update_current() self.update_idle() + def update_additional_data(self): + self.draw_additional_data(0) + self.update_idle() + def update_all(self): self._current_reach_id = self._parent._get_current_reach() self._current_profile_id = self._parent._get_current_profiles_list() diff --git a/src/View/Results/Window.py b/src/View/Results/Window.py index 868aeeb5..e46088bd 100644 --- a/src/View/Results/Window.py +++ b/src/View/Results/Window.py @@ -1323,6 +1323,8 @@ class ResultsWindow(PamhyrWindow): x, y = self.read_csv_file_data(filename) data = self.read_csv_file_format(x, y) + if data is None: + return results = self._results[self._current_results[0]] data_lst = results.get("additional_data") @@ -1414,14 +1416,7 @@ class ResultsWindow(PamhyrWindow): self.plot_rkc.update_idle() if data['type_x'] == 'time' and data['type_y'] == 'discharge': - line = self.canvas_4.axes.plot( - x, y, marker="+", - label=legend + ' ' + unit - ) - self.plot_h._line.append(line) - self.plot_h.enable_legend() - self.plot_h.canvas.draw_idle() - self.plot_h.update_idle() + self.plot_h.update_additional_data() for p in self._additional_plot: self._additional_plot[p].add_imported_plot(data)