mirror of
https://github.com/bec-project/bec_widgets.git
synced 2025-07-13 19:21:50 +02:00
fix(scan_control): scan parameters fetched from the scan_history, fix #707
This commit is contained in:
@ -206,26 +206,23 @@ class ScanControl(BECWidget, QWidget):
|
|||||||
enabled = self.toggle.checked
|
enabled = self.toggle.checked
|
||||||
current_scan = self.comboBox_scan_selection.currentText()
|
current_scan = self.comboBox_scan_selection.currentText()
|
||||||
if enabled:
|
if enabled:
|
||||||
history = self.client.connector.lrange(MessageEndpoints.scan_queue_history(), 0, -1)
|
history = self.client.connector.xread(MessageEndpoints.scan_history(), from_start=True)
|
||||||
|
|
||||||
for scan in history:
|
for scan in history:
|
||||||
scan_name = scan.content["info"]["request_blocks"][-1]["msg"].content["scan_type"]
|
scan_data = scan.get("data")
|
||||||
|
if scan_data is None:
|
||||||
|
continue
|
||||||
|
scan_name = scan_data.scan_name
|
||||||
if scan_name == current_scan:
|
if scan_name == current_scan:
|
||||||
args_dict = scan.content["info"]["request_blocks"][-1]["msg"].content[
|
args_list = scan_data.request_inputs.get("arg_bundle", [])
|
||||||
"parameter"
|
|
||||||
]["args"]
|
|
||||||
args_list = []
|
|
||||||
for key, value in args_dict.items():
|
|
||||||
args_list.append(key)
|
|
||||||
args_list.extend(value)
|
|
||||||
if len(args_list) > 1 and self.arg_box is not None:
|
if len(args_list) > 1 and self.arg_box is not None:
|
||||||
self.arg_box.set_parameters(args_list)
|
self.arg_box.set_parameters(args_list)
|
||||||
kwargs = scan.content["info"]["request_blocks"][-1]["msg"].content["parameter"][
|
inputs = scan_data.request_inputs.get("inputs", {})
|
||||||
"kwargs"
|
kwargs = scan_data.request_inputs.get("kwargs", {})
|
||||||
]
|
kwarg_box_inputs = {**inputs, **kwargs}
|
||||||
if kwargs and self.kwarg_boxes:
|
if kwarg_box_inputs and self.kwarg_boxes:
|
||||||
for box in self.kwarg_boxes:
|
for box in self.kwarg_boxes:
|
||||||
box.set_parameters(kwargs)
|
box.set_parameters(kwarg_box_inputs)
|
||||||
self.last_scan_found = True
|
self.last_scan_found = True
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
|
@ -4,7 +4,7 @@ from unittest.mock import MagicMock, patch
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from bec_lib.endpoints import MessageEndpoints
|
from bec_lib.endpoints import MessageEndpoints
|
||||||
from bec_lib.messages import AvailableResourceMessage, ScanQueueHistoryMessage, ScanQueueMessage
|
from bec_lib.messages import AvailableResourceMessage, ScanHistoryMessage
|
||||||
from qtpy.QtCore import QModelIndex, Qt
|
from qtpy.QtCore import QModelIndex, Qt
|
||||||
|
|
||||||
from bec_widgets.utils.forms_from_types.items import StrFormItem
|
from bec_widgets.utils.forms_from_types.items import StrFormItem
|
||||||
@ -221,82 +221,36 @@ available_scans_message = AvailableResourceMessage(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
scan_history = ScanQueueHistoryMessage(
|
scan_history = ScanHistoryMessage(
|
||||||
metadata={},
|
metadata={},
|
||||||
status="COMPLETED",
|
scan_id="79cbef20-9ebe-45bb-a44c-f518be27a25c",
|
||||||
queue_id="94d7cb39-aa70-4060-92de-addcfb64e3c0",
|
scan_number=1,
|
||||||
info={
|
dataset_number=1,
|
||||||
"queue_id": "94d7cb39-aa70-4060-92de-addcfb64e3c0",
|
file_path="/somepath/scan_1.h5",
|
||||||
"scan_id": ["bc2aa11f-24f6-44d6-8717-95e97fb43015"],
|
exit_status="closed",
|
||||||
"is_scan": [True],
|
start_time=1750618470.936856,
|
||||||
"request_blocks": [
|
end_time=1750618473.668227,
|
||||||
{
|
scan_name="line_scan",
|
||||||
"msg": ScanQueueMessage(
|
num_points=100,
|
||||||
metadata={
|
request_inputs={
|
||||||
"file_suffix": None,
|
"arg_bundle": ["samx", 0.0, 2.0],
|
||||||
"file_directory": None,
|
"inputs": {},
|
||||||
"user_metadata": {},
|
"kwargs": {
|
||||||
"RID": "99321ef7-00ac-4e0c-9120-ce689bd88a4d",
|
"steps": 10,
|
||||||
},
|
"exp_time": 2,
|
||||||
scan_type="line_scan",
|
"relative": False,
|
||||||
parameter={
|
"system_config": {"file_suffix": None, "file_directory": None},
|
||||||
"args": {"samx": [0.0, 2.0]},
|
},
|
||||||
"kwargs": {
|
|
||||||
"steps": 10,
|
|
||||||
"relative": False,
|
|
||||||
"exp_time": 2.0,
|
|
||||||
"burst_at_each_point": 1,
|
|
||||||
"system_config": {"file_suffix": None, "file_directory": None},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
queue="primary",
|
|
||||||
),
|
|
||||||
"RID": "99321ef7-00ac-4e0c-9120-ce689bd88a4d",
|
|
||||||
"scan_motors": ["samx"],
|
|
||||||
"readout_priority": {
|
|
||||||
"monitored": ["samx"],
|
|
||||||
"baseline": [],
|
|
||||||
"on_request": [],
|
|
||||||
"async": [],
|
|
||||||
},
|
|
||||||
"is_scan": True,
|
|
||||||
"scan_number": 176,
|
|
||||||
"scan_id": "bc2aa11f-24f6-44d6-8717-95e97fb43015",
|
|
||||||
"metadata": {
|
|
||||||
"file_suffix": None,
|
|
||||||
"file_directory": None,
|
|
||||||
"user_metadata": {},
|
|
||||||
"RID": "99321ef7-00ac-4e0c-9120-ce689bd88a4d",
|
|
||||||
},
|
|
||||||
"content": {
|
|
||||||
"scan_type": "line_scan",
|
|
||||||
"parameter": {
|
|
||||||
"args": {"samx": [0.0, 2.0]},
|
|
||||||
"kwargs": {
|
|
||||||
"steps": 10,
|
|
||||||
"relative": False,
|
|
||||||
"exp_time": 2.0,
|
|
||||||
"burst_at_each_point": 1,
|
|
||||||
"system_config": {"file_suffix": None, "file_directory": None},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"queue": "primary",
|
|
||||||
},
|
|
||||||
"report_instructions": [{"scan_progress": 10}],
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"scan_number": [176],
|
|
||||||
"status": "COMPLETED",
|
|
||||||
"active_request_block": None,
|
|
||||||
},
|
},
|
||||||
queue="primary",
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="function")
|
@pytest.fixture(scope="function")
|
||||||
def scan_control(qtbot, mocked_client): # , mock_dev):
|
def scan_control(qtbot, mocked_client): # , mock_dev):
|
||||||
mocked_client.connector.set(MessageEndpoints.available_scans(), available_scans_message)
|
mocked_client.connector.set(MessageEndpoints.available_scans(), available_scans_message)
|
||||||
mocked_client.connector.lpush(MessageEndpoints.scan_queue_history(), scan_history)
|
mocked_client.connector.xadd(
|
||||||
|
topic=MessageEndpoints.scan_history(), msg_dict={"data": scan_history}
|
||||||
|
)
|
||||||
widget = ScanControl(client=mocked_client)
|
widget = ScanControl(client=mocked_client)
|
||||||
qtbot.addWidget(widget)
|
qtbot.addWidget(widget)
|
||||||
qtbot.waitExposed(widget)
|
qtbot.waitExposed(widget)
|
||||||
|
Reference in New Issue
Block a user