mirror of https://gitlab.com/pamhyr/pamhyr2
Results: Implement results reload (for same solver) #16.
parent
fa7490dee8
commit
1dd189cbd4
|
|
@ -26,8 +26,13 @@ logger = logging.getLogger()
|
||||||
|
|
||||||
|
|
||||||
class Results(object):
|
class Results(object):
|
||||||
def __init__(self, study=None):
|
def __init__(self, study=None, solver=None,
|
||||||
|
repertory="", name="0"):
|
||||||
self._study = study
|
self._study = study
|
||||||
|
self._solver = solver
|
||||||
|
self._repertory = repertory
|
||||||
|
self._name = name
|
||||||
|
|
||||||
self._river = River(self._study)
|
self._river = River(self._study)
|
||||||
|
|
||||||
self._meta_data = {
|
self._meta_data = {
|
||||||
|
|
@ -53,3 +58,10 @@ class Results(object):
|
||||||
|
|
||||||
def get(self, key):
|
def get(self, key):
|
||||||
return self._meta_data[key]
|
return self._meta_data[key]
|
||||||
|
|
||||||
|
def reload(self):
|
||||||
|
return self._solver.results(
|
||||||
|
self._study,
|
||||||
|
self._repertory,
|
||||||
|
qlog=None,
|
||||||
|
)
|
||||||
|
|
|
||||||
|
|
@ -438,8 +438,12 @@ class Mage(AbstractSolver):
|
||||||
|
|
||||||
@timer
|
@timer
|
||||||
def results(self, study, repertory, qlog=None, name="0"):
|
def results(self, study, repertory, qlog=None, name="0"):
|
||||||
results = Results(study=study)
|
results = Results(
|
||||||
|
study=study,
|
||||||
|
solver=self,
|
||||||
|
repertory=repertory,
|
||||||
|
name=name,
|
||||||
|
)
|
||||||
self.read_bin(study, repertory, results, qlog, name=name)
|
self.read_bin(study, repertory, results, qlog, name=name)
|
||||||
|
|
||||||
return results
|
return results
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,11 @@ class PlotAC(PamhyrPlot):
|
||||||
def results(self):
|
def results(self):
|
||||||
return self.data
|
return self.data
|
||||||
|
|
||||||
|
@results.setter
|
||||||
|
def results(self, results):
|
||||||
|
self.data = results
|
||||||
|
self._current_timestamp = max(results.get("timestamps"))
|
||||||
|
|
||||||
@timer
|
@timer
|
||||||
def draw(self, highlight=None):
|
def draw(self, highlight=None):
|
||||||
self.canvas.axes.cla()
|
self.canvas.axes.cla()
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,11 @@ class PlotH(PamhyrPlot):
|
||||||
def results(self):
|
def results(self):
|
||||||
return self.data
|
return self.data
|
||||||
|
|
||||||
|
@results.setter
|
||||||
|
def results(self, results):
|
||||||
|
self.data = results
|
||||||
|
self._current_timestamp = max(results.get("timestamps"))
|
||||||
|
|
||||||
@timer
|
@timer
|
||||||
def draw(self, highlight=None):
|
def draw(self, highlight=None):
|
||||||
self.canvas.axes.cla()
|
self.canvas.axes.cla()
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,11 @@ class PlotKPC(PamhyrPlot):
|
||||||
def results(self):
|
def results(self):
|
||||||
return self.data
|
return self.data
|
||||||
|
|
||||||
|
@results.setter
|
||||||
|
def results(self, results):
|
||||||
|
self.data = results
|
||||||
|
self._current_timestamp = max(results.get("timestamps"))
|
||||||
|
|
||||||
@timer
|
@timer
|
||||||
def draw(self, highlight=None):
|
def draw(self, highlight=None):
|
||||||
self.canvas.axes.cla()
|
self.canvas.axes.cla()
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,16 @@ class PlotSedProfile(PamhyrPlot):
|
||||||
self._current_reach_id = reach_id
|
self._current_reach_id = reach_id
|
||||||
self._current_profile_id = profile_id
|
self._current_profile_id = profile_id
|
||||||
|
|
||||||
|
@property
|
||||||
|
def results(self):
|
||||||
|
return self.data
|
||||||
|
|
||||||
|
@results.setter
|
||||||
|
def results(self, results):
|
||||||
|
self.data = results
|
||||||
|
self._results = results
|
||||||
|
self._current_timestamp = max(results.get("timestamps"))
|
||||||
|
|
||||||
def get_zsl(self, profile):
|
def get_zsl(self, profile):
|
||||||
x = profile.geometry.get_station()
|
x = profile.geometry.get_station()
|
||||||
z = profile.geometry.z()
|
z = profile.geometry.z()
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,16 @@ class PlotSedReach(PamhyrPlot):
|
||||||
self._current_reach_id = reach_id
|
self._current_reach_id = reach_id
|
||||||
self._current_profile_id = profile_id
|
self._current_profile_id = profile_id
|
||||||
|
|
||||||
|
@property
|
||||||
|
def results(self):
|
||||||
|
return self.data
|
||||||
|
|
||||||
|
@results.setter
|
||||||
|
def results(self, results):
|
||||||
|
self.data = results
|
||||||
|
self._results = results
|
||||||
|
self._current_timestamp = max(results.get("timestamps"))
|
||||||
|
|
||||||
# DEPRECATED version of sediment layser display
|
# DEPRECATED version of sediment layser display
|
||||||
# def _get_zsl(self, reach):
|
# def _get_zsl(self, reach):
|
||||||
# kp = reach.geometry.get_kp()
|
# kp = reach.geometry.get_kp()
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,11 @@ class PlotXY(PamhyrPlot):
|
||||||
def results(self):
|
def results(self):
|
||||||
return self.data
|
return self.data
|
||||||
|
|
||||||
|
@results.setter
|
||||||
|
def results(self, results):
|
||||||
|
self.data = results
|
||||||
|
self._current_timestamp = max(results.get("timestamps"))
|
||||||
|
|
||||||
@timer
|
@timer
|
||||||
def draw(self, highlight=None):
|
def draw(self, highlight=None):
|
||||||
self.canvas.axes.cla()
|
self.canvas.axes.cla()
|
||||||
|
|
|
||||||
|
|
@ -75,8 +75,7 @@ class ResultsWindow(PamhyrWindow):
|
||||||
name = (
|
name = (
|
||||||
self._pamhyr_name + " - "
|
self._pamhyr_name + " - "
|
||||||
+ study.name + " - "
|
+ study.name + " - "
|
||||||
+ self._solver.name + " - "
|
+ self._solver.name
|
||||||
+ self._results.date
|
|
||||||
)
|
)
|
||||||
|
|
||||||
super(ResultsWindow, self).__init__(
|
super(ResultsWindow, self).__init__(
|
||||||
|
|
@ -272,6 +271,16 @@ class ResultsWindow(PamhyrWindow):
|
||||||
self._status_label.setText(txt)
|
self._status_label.setText(txt)
|
||||||
|
|
||||||
def setup_connections(self):
|
def setup_connections(self):
|
||||||
|
# Action
|
||||||
|
actions = {
|
||||||
|
"action_reload": self._reload,
|
||||||
|
}
|
||||||
|
|
||||||
|
for action in actions:
|
||||||
|
self.find(QAction, action).triggered.connect(
|
||||||
|
actions[action]
|
||||||
|
)
|
||||||
|
|
||||||
fun = {
|
fun = {
|
||||||
"reach": self._set_current_reach,
|
"reach": self._set_current_reach,
|
||||||
"profile": self._set_current_profile,
|
"profile": self._set_current_profile,
|
||||||
|
|
@ -384,12 +393,43 @@ class ResultsWindow(PamhyrWindow):
|
||||||
pid = self._slider_profile.value()
|
pid = self._slider_profile.value()
|
||||||
self.update(profile_id=pid)
|
self.update(profile_id=pid)
|
||||||
|
|
||||||
return
|
|
||||||
|
|
||||||
def _set_current_timestamp(self):
|
def _set_current_timestamp(self):
|
||||||
timestamp = self._timestamps[self._slider_time.value()]
|
timestamp = self._timestamps[self._slider_time.value()]
|
||||||
self.update(timestamp=timestamp)
|
self.update(timestamp=timestamp)
|
||||||
|
|
||||||
|
def _reload_plots(self):
|
||||||
|
self.plot_xy.results = self._results
|
||||||
|
self.plot_ac.results = self._results
|
||||||
|
self.plot_kpc.results = self._results
|
||||||
|
self.plot_h.results = self._results
|
||||||
|
|
||||||
|
if self._study.river.has_sediment():
|
||||||
|
self.plot_sed_reach.results = self._results
|
||||||
|
self.plot_sed_profile.results = self._results
|
||||||
|
|
||||||
|
self.plot_xy.draw()
|
||||||
|
self.plot_ac.draw()
|
||||||
|
self.plot_kpc.draw()
|
||||||
|
self.plot_h.draw()
|
||||||
|
|
||||||
|
if self._study.river.has_sediment():
|
||||||
|
self.plot_sed_reach.draw()
|
||||||
|
self.plot_sed_profile.draw()
|
||||||
|
|
||||||
|
def _reload_slider(self):
|
||||||
|
self._slider_time = self.find(QSlider, f"horizontalSlider_time")
|
||||||
|
self._slider_time.setMaximum(len(self._timestamps) - 1)
|
||||||
|
self._slider_time.setValue(len(self._timestamps) - 1)
|
||||||
|
|
||||||
|
def _reload(self):
|
||||||
|
logger.debug("Reload results...")
|
||||||
|
self._results = self._results.reload()
|
||||||
|
|
||||||
|
self._timestamps = sorted(list(self._results.get("timestamps")))
|
||||||
|
|
||||||
|
self._reload_plots()
|
||||||
|
self._reload_slider()
|
||||||
|
|
||||||
def _copy(self):
|
def _copy(self):
|
||||||
logger.info("TODO: copy")
|
logger.info("TODO: copy")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,10 @@ class APlot(object):
|
||||||
def data(self):
|
def data(self):
|
||||||
return self._data
|
return self._data
|
||||||
|
|
||||||
|
@data.setter
|
||||||
|
def data(self, data):
|
||||||
|
self._data = data
|
||||||
|
|
||||||
def draw(self):
|
def draw(self):
|
||||||
"""Draw plot
|
"""Draw plot
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -140,6 +140,36 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QStatusBar" name="statusbar"/>
|
<widget class="QStatusBar" name="statusbar"/>
|
||||||
|
<widget class="QToolBar" name="toolBar">
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>toolBar</string>
|
||||||
|
</property>
|
||||||
|
<attribute name="toolBarArea">
|
||||||
|
<enum>TopToolBarArea</enum>
|
||||||
|
</attribute>
|
||||||
|
<attribute name="toolBarBreak">
|
||||||
|
<bool>false</bool>
|
||||||
|
</attribute>
|
||||||
|
<addaction name="action_add"/>
|
||||||
|
<addaction name="action_reload"/>
|
||||||
|
</widget>
|
||||||
|
<action name="action_add">
|
||||||
|
<property name="icon">
|
||||||
|
<iconset>
|
||||||
|
<normaloff>ressources/gtk-add.png</normaloff>ressources/gtk-add.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Add</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Add custom visualization</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="action_reload">
|
||||||
|
<property name="text">
|
||||||
|
<string>Reload</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue