comapct automation panel updates
This commit is contained in:
1 parent
46d76a5e0e
commit
87c4f5b241
5 files changed
+342
-99
No files matched your search
@@ -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", [])
|
||||
]
|
||||
|
||||
|
||||
Reference in new issue
Block a user