Compare commits

..

2 Commits

Author SHA1 Message Date
lwark
6f1202d3ba Sortable headers in treeview 2025-09-17 13:12:23 -05:00
lwark
656164d124 Sortable headers in treeview 2025-09-17 13:11:38 -05:00
4 changed files with 28 additions and 9 deletions

View File

@@ -1,3 +1,7 @@
# 202509.03
- Sortable headers in treeview.
# 202509.02
- First Useable updated version.

View File

@@ -655,7 +655,7 @@ class BaseClass(Base):
from backend.validators import pydant
if not pyd_model_name:
pyd_model_name = f"Pyd{self.__class__.__name__}"
logger.info(f"Looking for pydant model {pyd_model_name}")
# logger.info(f"Looking for pydant model {pyd_model_name}")
try:
pyd = getattr(pydant, pyd_model_name)
except AttributeError:

View File

@@ -978,7 +978,7 @@ class Procedure(BaseClass):
output['sample'] = active_samples + inactive_samples
output['reagent'] = [reagent.details_dict() for reagent in output['procedurereagentlotassociation']]
output['equipment'] = [equipment.details_dict() for equipment in output['procedureequipmentassociation']]
logger.debug(f"equipment: {pformat([item for item in output['equipment']])}")
# logger.debug(f"equipment: {pformat([item for item in output['equipment']])}")
output['repeat'] = self.repeat
output['run'] = self.run.name
output['excluded'] += self.get_default_info("details_ignore")
@@ -1045,7 +1045,6 @@ class Procedure(BaseClass):
return html
class ProcedureTypeReagentRoleAssociation(BaseClass):
"""
table containing reagenttype/kittype associations

View File

@@ -23,7 +23,9 @@ class SubmissionsTree(QTreeView):
self.app = get_application_from_parent(parent)
self.total_count = ClientSubmission.__database_session__.query(ClientSubmission).count()
self.setExpandsOnDoubleClick(False)
self.model = model
self.model: ClientSubmissionRunModel = model
header_labels = ["Name", "Submission Type", "Client Lab", "Submitted Date"]
self.model.setHorizontalHeaderLabels(header_labels)
self.setModel(self.model)
self.setSelectionBehavior(QAbstractItemView.selectionBehavior(self).SelectRows)
self.set_data()
@@ -48,7 +50,8 @@ class SubmissionsTree(QTreeView):
self.setAlternatingRowColors(True)
self.setIndentation(20)
self.setItemsExpandable(True)
for ii in range(2):
self.setSortingEnabled(True)
for ii, _ in enumerate(header_labels):
self.resizeColumnToContents(ii)
def expand_item(self, event: QModelIndex):
@@ -107,15 +110,19 @@ class SubmissionsTree(QTreeView):
"""
self.clear()
self.data = [item.to_dict(full_data=True) for item in
# self.data = [item.details_dict() for item in
ClientSubmission.query(chronologic=True, page=page, page_size=page_size)]
root = self.model.invisibleRootItem()
for submission in self.data:
group_str = f"{submission['submissiontype']}-{submission['submitter_plate_id']}-{submission['submitted_date']}"
submission_item = self.model.add_child(parent=root, child=dict(
submission_item: QStandardItem = self.model.add_child(parent=root, child=dict(
name=group_str,
client=submission['clientlab'],
date=submission['submitted_date'],
type=submission['submissiontype'],
query_str=submission['submitter_plate_id'],
item_type=ClientSubmission
))
), additions=True)
for run in submission['run']:
run_item = self.model.add_child(parent=submission_item, child=dict(
name=run['plate_number'],
@@ -156,10 +163,19 @@ class SubmissionsTree(QTreeView):
class ClientSubmissionRunModel(QStandardItemModel):
def add_child(self, parent: QStandardItem, child:dict):
def __init__(self, parent):
super().__init__(parent)
def add_child(self, parent: QStandardItem, child:dict, additions:bool=False) -> QStandardItem:
item = QStandardItem(child['name'])
item.setData(dict(item_type=child['item_type'], query_str=child['query_str']), 1)
parent.appendRow(item)
if additions:
item_client = QStandardItem(child['client'])
item_date = QStandardItem(child['date'])
item_type = QStandardItem(child['type'])
parent.appendRow([item, item_type, item_client, item_date])
else:
parent.appendRow([item])
item.setEditable(False)
return item