comapct automation panel updates

This commit is contained in:
appleb_m committed 2026-06-09 11:59:51 +02:00
1 parent 46d76a5e0e
commit 87c4f5b241
5 files changed
+342 -99

No files matched your search

+40 -16
View File
@@ -4,31 +4,44 @@ from PySide6.QtGui import QBrush, QColor
from aare.common.models import SampleShortInfo, SampleShortInfoList
def get_entry(sample: SampleShortInfo, column: int):
if column == 0:
return sample.user
elif column == 1:
return sample.puck_name
elif column == 2:
return sample.sample_name
def get_entry(sample: SampleShortInfo, column: int, *, show_user: bool = False):
if show_user:
if column == 0:
return sample.user
elif column == 1:
return sample.dewar_name
elif column == 2:
return sample.puck_name
elif column == 3:
return sample.sample_name
else:
if column == 0:
return sample.dewar_name
elif column == 1:
return sample.puck_name
elif column == 2:
return sample.sample_name
return ""
class SampleQueueSpreadsheet(QAbstractTableModel):
def __init__(
self,
parent=None,
samples: list[SampleShortInfo] | None = None
samples: list[SampleShortInfo] | None = None,
show_user: bool = False,
):
super().__init__(parent)
if samples is None:
samples = []
self.__running = False
self._show_user = bool(show_user)
self.samples: list[SampleShortInfo] = samples
self.header = [
"User",
"Puck",
"Sample",
]
self.header = (
["User", "Dewar", "Puck", "Sample"]
if self._show_user
else ["Dewar", "Puck", "Sample"]
)
def flags(self, index):
default_flags = super().flags(index)
@@ -42,7 +55,7 @@ class SampleQueueSpreadsheet(QAbstractTableModel):
def data(self, index, role=None):
if role == Qt.ItemDataRole.DisplayRole:
return get_entry(self.samples[index.row()], index.column())
return get_entry(self.samples[index.row()], index.column(), show_user=self._show_user)
elif role == Qt.ItemDataRole.TextAlignmentRole:
return Qt.AlignmentFlag.AlignCenter
elif role == Qt.ItemDataRole.BackgroundRole:
@@ -119,16 +132,27 @@ class SampleQueueSpreadsheet(QAbstractTableModel):
self.samples = []
self.endResetModel()
def annotate_sample(self, db_id: int, comment: str) -> None:
self.beginResetModel()
updated_samples: list[SampleShortInfo] = []
for sample in self.samples:
if sample.db_id == db_id:
updated_samples.append(sample.model_copy(update={"comment": comment}))
else:
updated_samples.append(sample)
self.samples = updated_samples
self.endResetModel()
def to_state(self) -> dict:
return {
"samples": [s.to_dict() for s in self.samples],
"samples": [s.model_dump() for s in self.samples],
}
def from_state(self, state: dict):
self.beginResetModel()
self.samples = [
SampleShortInfo.from_dict(d)
SampleShortInfo.model_validate(d)
for d in state.get("samples", [])
]