Disable profiles: results only take into account enabled profiles to display results for Mage

mesh_tab
Dylan Jeannin 2026-08-24 14:17:39 +02:00
parent 824fbe506e
commit f08d4b1a37
4 changed files with 62 additions and 22 deletions

View File

@ -375,6 +375,28 @@ class Reach(SQLSubModel):
)
)
def get_z_min_enabled_profiles(self):
return list(
map(
lambda profile: profile.z_min(),
filter(
lambda profile: len(profile) > 0 and profile.is_enabled,
self.profiles
)
)
)
def get_z_max_enabled_profiles(self):
return list(
map(
lambda profile: profile.z_max(),
filter(
lambda profile: len(profile) > 0 and profile.is_enabled,
self.profiles
)
)
)
def get_rk(self):
"""List of profiles rk
@ -383,6 +405,17 @@ class Reach(SQLSubModel):
"""
return [profile.rk for profile in self.profiles]
def get_rk_enabled_profiles(self):
return list(
map(
lambda profile: profile.rk,
filter(
lambda profile: len(profile) > 0 and profile.is_enabled,
self.profiles
)
)
)
def get_rk_complete_profiles(self):
return list(
map(

View File

@ -527,7 +527,7 @@ class Results(SQLSubModel):
i = 0
for reach in new_results._river.reachs:
nb = len(reach.profiles)
reach.set_global_index(range(i, i + nb + 1))
reach.set_global_index(range(i, i + nb))
i += nb
if "Z" in table_data:

View File

@ -154,6 +154,7 @@ class Profile(SQLSubModel):
"len_data, data, scenario " +
"FROM results_data " +
f"WHERE scenario = {scenario.id} " +
f"AND result = {data['result_pid']} " +
f"AND reach = {reach.pamhyr_id} " +
f"AND section = {profile.pamhyr_id}"
)

View File

@ -62,6 +62,8 @@ class PlotRKC(PamhyrPlot):
self._auto_relim_update = True
self._autoscale_update = False
self.profile = None
@property
def results(self):
return self.data
@ -71,9 +73,19 @@ class PlotRKC(PamhyrPlot):
self.data = results
self._current_timestamp = max(self._timestamps)
@staticmethod
def reach_geometry(reach):
"""Return geometry values for profiles present in the results."""
return (
reach.geometry.get_rk_enabled_profiles(),
reach.geometry.get_z_min_enabled_profiles(),
reach.geometry.get_z_max_enabled_profiles()
)
@timer
def draw(self, highlight=None):
self.init_axes()
self.profile = None
if self.results is None:
return
@ -104,7 +116,7 @@ class PlotRKC(PamhyrPlot):
def draw_bottom_with_bedload(self, reach):
results = self.results[self._current_res_id]
rk = reach.geometry.get_rk()
rk, _, _ = self.reach_geometry(reach)
table = results.get("table")["zfd"]
ts = results.get_timestamp_id(self._current_timestamp)
@ -136,8 +148,7 @@ class PlotRKC(PamhyrPlot):
for hs in lhs:
x = hs.input_section.rk
z_min = reach.geometry.get_z_min()
z_max = reach.geometry.get_z_max()
_, z_min, z_max = self.reach_geometry(reach)
self.canvas.axes.plot(
[x, x],
@ -157,9 +168,7 @@ class PlotRKC(PamhyrPlot):
)
def draw_bottom_geometry(self, reach):
rk = reach.geometry.get_rk()
z_min = reach.geometry.get_z_min()
z_max = reach.geometry.get_z_max()
rk, z_min, _ = self.reach_geometry(reach)
self.line_rk_zmin = self.canvas.axes.plot(
rk, z_min,
@ -170,10 +179,9 @@ class PlotRKC(PamhyrPlot):
self._river_bottom = z_min
def draw_water_elevation(self, reach):
if len(reach.geometry.profiles) != 0:
if len(reach.profiles) != 0:
result = self.results[self._current_res_id]
rk = reach.geometry.get_rk()
z_min = reach.geometry.get_z_min()
rk, _, _ = self.reach_geometry(reach)
table = result.get("table")["Z"]
ts = result.get_timestamp_id(self._current_timestamp)
@ -201,10 +209,9 @@ class PlotRKC(PamhyrPlot):
)
def draw_water_elevation_max(self, reach):
if len(reach.geometry.profiles) != 0:
if len(reach.profiles) != 0:
result = self.results[self._current_res_id]
rk = reach.geometry.get_rk()
z_min = reach.geometry.get_z_min()
rk, _, _ = self.reach_geometry(reach)
table = result.get("table")["Z"]
ts = result.get_timestamp_id(self._current_timestamp)
@ -250,9 +257,7 @@ class PlotRKC(PamhyrPlot):
self.canvas.draw_idle()
def draw_current(self, reach):
rk = reach.geometry.get_rk()
z_min = reach.geometry.get_z_min()
z_max = reach.geometry.get_z_max()
rk, z_min, z_max = self.reach_geometry(reach)
self.profile, = self.canvas.axes.plot(
[
@ -349,8 +354,7 @@ class PlotRKC(PamhyrPlot):
def update_water_elevation(self):
result = self.results[self._current_res_id]
reach = result.river.reach(self._current_reach_id)
rk = reach.geometry.get_rk()
z_min = reach.geometry.get_z_min()
rk, _, _ = self.reach_geometry(reach)
table = result.get("table")["Z"]
ts = result.get_timestamp_id(self._current_timestamp)
@ -380,11 +384,13 @@ class PlotRKC(PamhyrPlot):
self.update_idle()
def update_current(self):
if not self._init or self.profile is None:
self.draw()
return
results = self.results[self._current_res_id]
reach = results.river.reach(self._current_reach_id)
rk = reach.geometry.get_rk()
z_min = reach.geometry.get_z_min()
z_max = reach.geometry.get_z_max()
rk, z_min, z_max = self.reach_geometry(reach)
cid = self._current_profile_id
self.profile.set_data(
@ -396,7 +402,7 @@ class PlotRKC(PamhyrPlot):
def update_bottom_with_bedload(self):
results = self.results[self._current_res_id]
reach = results.river.reach(self._current_reach_id)
rk = reach.geometry.get_rk()
rk, _, _ = self.reach_geometry(reach)
# z = self.sl_compute_current_z(reach)
table = results.get("table")["zfd"]