From 86f77fde1a28a4946b7a38c0e4e7d3269660eb0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 5 Mar 2023 01:20:32 +0100 Subject: [PATCH] Improved sorting possibilities for Project info BOM view --- src/DataTables/ProjectBomEntriesDataTable.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/DataTables/ProjectBomEntriesDataTable.php b/src/DataTables/ProjectBomEntriesDataTable.php index 53b3e10d..eac5ae5a 100644 --- a/src/DataTables/ProjectBomEntriesDataTable.php +++ b/src/DataTables/ProjectBomEntriesDataTable.php @@ -78,6 +78,7 @@ class ProjectBomEntriesDataTable implements DataTableTypeInterface ->add('quantity', TextColumn::class, [ 'label' => $this->translator->trans('project.bom.quantity'), 'className' => 'text-center', + 'orderField' => 'bom_entry.quantity', 'render' => function ($value, ProjectBOMEntry $context) { //If we have a non-part entry, only show the rounded quantity if ($context->getPart() === null) { @@ -90,7 +91,7 @@ class ProjectBomEntriesDataTable implements DataTableTypeInterface ->add('name', TextColumn::class, [ 'label' => $this->translator->trans('part.table.name'), - 'orderable' => false, + 'orderField' => 'part.name', 'render' => function ($value, ProjectBOMEntry $context) { if($context->getPart() === null) { return htmlspecialchars($context->getName()); @@ -121,15 +122,18 @@ class ProjectBomEntriesDataTable implements DataTableTypeInterface ->add('category', EntityColumn::class, [ 'label' => $this->translator->trans('part.table.category'), 'property' => 'part.category', + 'orderField' => 'category.name', ]) ->add('footprint', EntityColumn::class, [ 'property' => 'part.footprint', 'label' => $this->translator->trans('part.table.footprint'), + 'orderField' => 'footprint.name', ]) ->add('manufacturer', EntityColumn::class, [ 'property' => 'part.manufacturer', 'label' => $this->translator->trans('part.table.manufacturer'), + 'orderField' => 'manufacturer.name', ]) ->add('mountnames', TextColumn::class, [ @@ -155,6 +159,8 @@ class ProjectBomEntriesDataTable implements DataTableTypeInterface ]) ; + $dataTable->addOrderBy('name', DataTable::SORT_ASCENDING); + $dataTable->createAdapter(ORMAdapter::class, [ 'entity' => Attachment::class, 'query' => function (QueryBuilder $builder) use ($options): void { @@ -175,6 +181,9 @@ class ProjectBomEntriesDataTable implements DataTableTypeInterface ->addSelect('part') ->from(ProjectBOMEntry::class, 'bom_entry') ->leftJoin('bom_entry.part', 'part') + ->leftJoin('part.category', 'category') + ->leftJoin('part.footprint', 'footprint') + ->leftJoin('part.manufacturer', 'manufacturer') ->where('bom_entry.project = :project') ->setParameter('project', $options['project']) ;