mirror of
https://github.com/bec-project/bec_widgets.git
synced 2025-07-14 11:41:49 +02:00
refactor: monitor.py on_scan_segment old logic separated from on_scan_segment function
This commit is contained in:
@ -193,6 +193,7 @@ class BECMonitor(pg.GraphicsLayoutWidget):
|
|||||||
config: dict = None,
|
config: dict = None,
|
||||||
enable_crosshair: bool = True,
|
enable_crosshair: bool = True,
|
||||||
gui_id=None,
|
gui_id=None,
|
||||||
|
legacy_scan_segment: bool = True,
|
||||||
):
|
):
|
||||||
super(BECMonitor, self).__init__(parent=parent)
|
super(BECMonitor, self).__init__(parent=parent)
|
||||||
|
|
||||||
@ -217,6 +218,7 @@ class BECMonitor(pg.GraphicsLayoutWidget):
|
|||||||
|
|
||||||
# Current configuration
|
# Current configuration
|
||||||
self.config = config
|
self.config = config
|
||||||
|
self.legacy_scan_segment = legacy_scan_segment
|
||||||
|
|
||||||
# Enable crosshair
|
# Enable crosshair
|
||||||
self.enable_crosshair = enable_crosshair
|
self.enable_crosshair = enable_crosshair
|
||||||
@ -418,6 +420,12 @@ class BECMonitor(pg.GraphicsLayoutWidget):
|
|||||||
|
|
||||||
def update_plot(self) -> None:
|
def update_plot(self) -> None:
|
||||||
"""Update the plot data based on the stored data dictionary."""
|
"""Update the plot data based on the stored data dictionary."""
|
||||||
|
if self.legacy_scan_segment is True:
|
||||||
|
self.legacy_update_plot()
|
||||||
|
|
||||||
|
def legacy_update_plot(self) -> None:
|
||||||
|
"""Legacy version of how data are update from on_scan_segment.
|
||||||
|
Update the plot data based on the stored data dictionary."""
|
||||||
for plot_name, curve_list in self.curves_data.items():
|
for plot_name, curve_list in self.curves_data.items():
|
||||||
for y_name, y_entry, curve in curve_list:
|
for y_name, y_entry, curve in curve_list:
|
||||||
x_config = next(
|
x_config = next(
|
||||||
@ -523,7 +531,7 @@ class BECMonitor(pg.GraphicsLayoutWidget):
|
|||||||
self.init_curves()
|
self.init_curves()
|
||||||
|
|
||||||
@pyqtSlot(dict, dict)
|
@pyqtSlot(dict, dict)
|
||||||
def on_scan_segment(self, msg, metadata):
|
def on_scan_segment(self, msg: dict, metadata: dict):
|
||||||
"""
|
"""
|
||||||
Handle new scan segments and saves data to a dictionary. Linked through bec_dispatcher.
|
Handle new scan segments and saves data to a dictionary. Linked through bec_dispatcher.
|
||||||
|
|
||||||
@ -543,14 +551,14 @@ class BECMonitor(pg.GraphicsLayoutWidget):
|
|||||||
current_name = metadata.get("scan_name")
|
current_name = metadata.get("scan_name")
|
||||||
if current_name is None:
|
if current_name is None:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
f"Scan name not found in metadata. Please check the scan_name in the YAML"
|
"Scan name not found in metadata. Please check the scan_name in the YAML"
|
||||||
f" config or in bec configuration."
|
" config or in bec configuration."
|
||||||
)
|
)
|
||||||
self.plot_data = self.plot_data_config.get(current_name, [])
|
self.plot_data = self.plot_data_config.get(current_name, [])
|
||||||
if self.plot_data == []:
|
if self.plot_data == []:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
f"Scan name {current_name} not found in the YAML config. Please check the scan_name in the "
|
f"Scan name {current_name} not found in the YAML config. Please check the scan_name in the "
|
||||||
f"YAML config or in bec configuration."
|
"YAML config or in bec configuration."
|
||||||
)
|
)
|
||||||
|
|
||||||
# Init UI
|
# Init UI
|
||||||
@ -559,6 +567,17 @@ class BECMonitor(pg.GraphicsLayoutWidget):
|
|||||||
self.scanID = current_scanID
|
self.scanID = current_scanID
|
||||||
self.flush()
|
self.flush()
|
||||||
|
|
||||||
|
if self.legacy_scan_segment is True:
|
||||||
|
self.legacy_on_scan_segment(msg)
|
||||||
|
|
||||||
|
self.update_signal.emit()
|
||||||
|
|
||||||
|
def legacy_on_scan_segment(self, msg: dict):
|
||||||
|
"""
|
||||||
|
Legacy method to handle scan segments appending each line from scan message.
|
||||||
|
Args:
|
||||||
|
msg(dict): Message received with scan data.
|
||||||
|
"""
|
||||||
for plot_config in self.plot_data:
|
for plot_config in self.plot_data:
|
||||||
x_config = plot_config["x"]
|
x_config = plot_config["x"]
|
||||||
x_signal_config = x_config["signals"][0] # There is exactly 1 config for x signals
|
x_signal_config = x_config["signals"][0] # There is exactly 1 config for x signals
|
||||||
@ -582,8 +601,6 @@ class BECMonitor(pg.GraphicsLayoutWidget):
|
|||||||
if data_y is not None:
|
if data_y is not None:
|
||||||
self.data.setdefault(key, {}).setdefault("y", []).append(data_y)
|
self.data.setdefault(key, {}).setdefault("y", []).append(data_y)
|
||||||
|
|
||||||
self.update_signal.emit()
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__": # pragma: no cover
|
if __name__ == "__main__": # pragma: no cover
|
||||||
import argparse
|
import argparse
|
||||||
@ -605,7 +622,7 @@ if __name__ == "__main__": # pragma: no cover
|
|||||||
# Load config from file
|
# Load config from file
|
||||||
config = load_yaml(args.config_file)
|
config = load_yaml(args.config_file)
|
||||||
else:
|
else:
|
||||||
config = test_config
|
config = CONFIG_SIMPLE
|
||||||
|
|
||||||
client = bec_dispatcher.client
|
client = bec_dispatcher.client
|
||||||
client.start()
|
client.start()
|
||||||
|
Reference in New Issue
Block a user