Added the very basic foundations for a filter system

This commit is contained in:
Jan Böhmer 2022-08-15 01:01:27 +02:00
parent ef389dcc15
commit f9d945c4c7
15 changed files with 460 additions and 5 deletions

View file

@ -48,6 +48,7 @@ use App\DataTables\Column\LocaleDateTimeColumn;
use App\DataTables\Column\MarkdownColumn;
use App\DataTables\Column\PartAttachmentsColumn;
use App\DataTables\Column\TagsColumn;
use App\DataTables\Filters\PartFilter;
use App\Entity\Parts\Category;
use App\Entity\Parts\Footprint;
use App\Entity\Parts\Manufacturer;
@ -108,6 +109,7 @@ final class PartsDataTable implements DataTableTypeInterface
'supplier' => null,
'tag' => null,
'search' => null,
'filter' => null
]);
$optionsResolver->setAllowedTypes('category', ['null', Category::class]);
@ -351,6 +353,13 @@ final class PartsDataTable implements DataTableTypeInterface
private function buildCriteria(QueryBuilder $builder, array $options): void
{
if (isset($options['filter']) && $options['filter'] instanceof PartFilter) {
$filter = $options['filter'];
$filter->apply($builder);
}
if (isset($options['category'])) {
$category = $options['category'];
$list = $this->treeBuilder->typeToNodesList(Category::class, $category);