diff --git a/common/src/aaredaqlib/raster_grid.py b/common/src/aaredaqlib/raster_grid.py index 0aaad8fa..993fa1e5 100644 --- a/common/src/aaredaqlib/raster_grid.py +++ b/common/src/aaredaqlib/raster_grid.py @@ -1,4 +1,4 @@ -from typing import Annotated +from typing import Annotated, List from jfjoch_client.models.scan_result import ScanResult from pydantic import Field, AfterValidator, BaseModel @@ -37,6 +37,9 @@ class RasterGridRequest(BaseModel): def start_pxl(self, geom: SampleGeometryModel) -> Coordinate: return geom.smargon_to_beamline(self.smargon.sh_mm) -class CompletedRasterGrid(BaseModel): +class CompletedRasterGridElem(BaseModel): request: RasterGridRequest result: ScanResult + +class CompletedRasterGrid(BaseModel): + r: List[CompletedRasterGridElem] diff --git a/daq/src/aaredaq/daq.py b/daq/src/aaredaq/daq.py index 18aac8c4..a03aa5f7 100644 --- a/daq/src/aaredaq/daq.py +++ b/daq/src/aaredaq/daq.py @@ -22,7 +22,7 @@ from aaredaqlib.models import ( PuckLoadedInfo, SampleShortInfoList, DAQStatusModel, BeamlineStatus, SessionStatus, SampleCameraSettings, AutofocusSettings, BoundingBoxModel, ) -from aaredaqlib.raster_grid import RasterGridRequest, CompletedRasterGrid +from aaredaqlib.raster_grid import RasterGridRequest, CompletedRasterGrid, CompletedRasterGridElem from aaredaqlib.rotation_scan import RotationScanRequest, CompletedRotationScan from aaredaqlib.sample_geometry import SampleGeometryModel from mxlibs3.jfjoch import JFJochWrapper @@ -399,7 +399,7 @@ class AareDAQ: else: print("Auto finding optimal image failed due to no images found. Using previous position.") self.__devs.smargon.target = save_smargon_position - return CompletedRasterGrid(request=copy.deepcopy(r), result=result) + return CompletedRasterGrid(r=[CompletedRasterGridElem(request=copy.deepcopy(r), result=result)]) def measure_raster(self, r: RasterGridRequest, auto: bool) -> CompletedRasterGrid: self.__cfg.try_set_busy(timeout=ceil(360)) diff --git a/gui/src/aaregui/scan_logic/raster_grid_manager.py b/gui/src/aaregui/scan_logic/raster_grid_manager.py index caa8ff0b..0d63be90 100644 --- a/gui/src/aaregui/scan_logic/raster_grid_manager.py +++ b/gui/src/aaregui/scan_logic/raster_grid_manager.py @@ -9,7 +9,7 @@ from typing import List, Tuple from aaredaqlib.coordinate import Coordinate, SmargonCoordinate from aaredaqlib.models import DAQStatusModel -from aaredaqlib.raster_grid import RasterGridRequest, CompletedRasterGrid +from aaredaqlib.raster_grid import RasterGridRequest, CompletedRasterGrid, CompletedRasterGridElem from aaredaqlib.sample_geometry import SampleGeometryModel @@ -111,7 +111,7 @@ class RasterGridManager(QObject): transmission=1.0, dtz=120.0 ) - self.__completed_grids : List[CompletedRasterGrid] = [] + self.__completed_grids : List[CompletedRasterGridElem] = [] @property def active_grid(self) -> RasterGridRequest: @@ -411,12 +411,15 @@ class RasterGridManager(QObject): self.completed_grid_updated.emit() @Slot(CompletedRasterGrid) - def grid_scan_completed(self, r: CompletedRasterGrid): - self.__completed_grids.append(r) + def grid_scan_completed(self, raster_list: CompletedRasterGrid): + last_raster = None + for raster in raster_list.r: + self.__completed_grids.append(raster) + last_raster = raster self.__active_grid.n_x = 0 self.__active_grid.n_y = 0 - if r.result.file_prefix is not None: - self.file_ready.emit(r.result.file_prefix) + if last_raster is not None and last_raster.result.file_prefix is not None: + self.file_ready.emit(last_raster.result.file_prefix) self.completed_grid_updated.emit() @Slot(int, bool) @@ -459,5 +462,5 @@ class RasterGridManager(QObject): self.__active_grid.grid_size_mm.y) self.completed_grid_updated.emit() - def get_completed_grids(self) -> List[CompletedRasterGrid]: + def get_completed_grids(self) -> List[CompletedRasterGridElem]: return self.__completed_grids \ No newline at end of file