DAQ/GUI: added jfjoch_status to daq for progress bar in GUI
This commit is contained in:
@@ -714,6 +714,7 @@ class DAQStatusModel(BaseModel):
|
||||
sample: SampleShortInfo | None = None
|
||||
session: SessionStatus
|
||||
box: BoundingBoxModel | None = None
|
||||
jfjoch_status: BrokerStatus | None = None
|
||||
last_best_res: float | None = None
|
||||
last_best_b_factor: float | None = None
|
||||
crystal_size: CrystalSize = CrystalSize(x=0,y=0,z=0)
|
||||
|
||||
@@ -1298,6 +1298,7 @@ class AareDAQ:
|
||||
spreadsheet_params, file_prefix = self.spreadsheet_params()
|
||||
logger.debug(f"spreadsheet_params: {spreadsheet_params}")
|
||||
smart_params = self.__cfg.auto_params
|
||||
logger.debug(f"smart_params: {smart_params}")
|
||||
default_params = SimpleScanParameters(exp_time_s=0.04, dtz=110, incr_omega_deg=0.2)
|
||||
#if file_prefix is not None:
|
||||
# default_params.file_prefix = file_prefix
|
||||
@@ -1540,7 +1541,7 @@ class AareDAQ:
|
||||
|
||||
@property
|
||||
def status(self) -> DAQStatusModel:
|
||||
# session should be set by FastAPI server
|
||||
# session is initialised here and set by FastAPI server
|
||||
return DAQStatusModel(
|
||||
state=self.state,
|
||||
busy=self.busy,
|
||||
@@ -1550,6 +1551,7 @@ class AareDAQ:
|
||||
session=SessionStatus(),
|
||||
diffraction=self.diffraction_geometry,
|
||||
box=self.__saved_box,
|
||||
jfjoch_status = self.__jfjoch.status(),
|
||||
last_best_res = self.__cfg.last_best_res,
|
||||
last_best_b_factor = self.__cfg.last_best_b_factor,
|
||||
crystal_size = self.__cfg.crystal_size
|
||||
|
||||
@@ -146,6 +146,10 @@ class JFJochWrapper:
|
||||
self.__api.wait_till_done_post_with_http_info(timeout=math.ceil(timeout))
|
||||
return self.__api.result_scan_get()
|
||||
|
||||
def status(self) -> jfjoch_client.models.BrokerStatus:
|
||||
l = self.__api.status_get()
|
||||
return l
|
||||
|
||||
def detector(self) -> jfjoch_client.models.DetectorListElement:
|
||||
l = self.__api.config_select_detector_get()
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ from PySide6.QtWidgets import (
|
||||
QGridLayout,
|
||||
QPushButton,
|
||||
QWidget,
|
||||
QProgressBar, QMessageBox,
|
||||
)
|
||||
|
||||
from aaredaqlib.diffraction_geometry import DiffractionGeometry
|
||||
@@ -21,6 +22,9 @@ from aaregui.panels.smart_rotation_panel import SimpleRotationSettingsPanel
|
||||
from aaregui.scan_logic.raster_grid_manager import RasterGridManager
|
||||
from aaregui.widgets.title_label import TitleLabel
|
||||
|
||||
from aaredaqlib.logger_config import setup_logger
|
||||
|
||||
logger = setup_logger("aareGUI")
|
||||
|
||||
class DataCollectionSettings(QFrame):
|
||||
cancel = Signal()
|
||||
@@ -57,6 +61,11 @@ class DataCollectionSettings(QFrame):
|
||||
v_layout.addWidget(self.__tab_widget)
|
||||
v_layout.addStretch()
|
||||
|
||||
self.progress_bar = QProgressBar(self)
|
||||
self.progress_bar.setRange(0, 100)
|
||||
self.progress_bar.setStyleSheet("background-color: rgb(255, 255, 255);")
|
||||
v_layout.addWidget(self.progress_bar)
|
||||
|
||||
abort_button = QPushButton("Abort measurement", parent=self)
|
||||
abort_button.setStyleSheet("color: rgb(164, 0, 0);")
|
||||
abort_button.clicked.connect(self.cancel_button_clicked)
|
||||
@@ -74,8 +83,6 @@ class DataCollectionSettings(QFrame):
|
||||
|
||||
self.__tab_widget.currentChanged.connect(self._on_tab_changed)
|
||||
|
||||
# ... existing code ...
|
||||
|
||||
@Slot()
|
||||
def switch_to_raster(self):
|
||||
self.__tab_widget.setCurrentIndex(0)
|
||||
@@ -93,6 +100,28 @@ class DataCollectionSettings(QFrame):
|
||||
self.__sample_id = s.sample.db_id
|
||||
self.__tab_widget.setCurrentIndex(0)
|
||||
|
||||
jfjoch_status = s.jfjoch_status
|
||||
progress = getattr(jfjoch_status, "progress", None)
|
||||
|
||||
if progress:
|
||||
if not self.progress_bar.isVisible():
|
||||
self.progress_bar.setVisible(True)
|
||||
try:
|
||||
p = int(max(0, min(100, round(100*progress, 2))))
|
||||
self.progress_bar.setValue(p)
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to update progress bar: {e}")
|
||||
else:
|
||||
self.progress_bar.setVisible(False)
|
||||
|
||||
#states are Enum: "Idle" "Waiting" "Busy" "Error" "Not connected"
|
||||
#message serverity is Enum: "success" "info" "warning" "error"
|
||||
#messagge is string
|
||||
#progress is float from 0 to 1
|
||||
if jfjoch_status.state == "Error":
|
||||
QMessageBox.critical(self, "Error", jfjoch_status.message)
|
||||
|
||||
|
||||
@Slot(int)
|
||||
def _on_tab_changed(self, idx: int):
|
||||
# 0: Raster, 1: Rotation (incl. screening), 2: Simple (rotation wrapper), 3: XRF (ignore)
|
||||
|
||||
Reference in New Issue
Block a user