Skip to content

Commit 0e8a397

Browse files
committed
Add package type filter
1 parent 0eb6d1b commit 0e8a397

2 files changed

Lines changed: 37 additions & 7 deletions

File tree

src/Controller/Dashboard/DashboardPackagesController.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,16 +65,31 @@ public function list(Request $request, RegistryRepository $registryRepository):
6565
}
6666
}
6767

68+
if ($request->query->has('type')) {
69+
$filtersActive = true;
70+
$selectedType = $request->query->get('type');
71+
72+
$queryBuilder->andWhere($queryBuilder->expr()->eq('package.type', ':type'));
73+
$queryBuilder->setParameter('type', $selectedType);
74+
}
75+
6876
$paginator = PackagePaginator::fromRequest($request, $queryBuilder, $this->container->get('router'));
6977

7078
$registries = $this->entityManager->getRepository(Registry::class)->findAll();
79+
$types = $this->packageRepository->createQueryBuilder('package')
80+
->select('DISTINCT package.type')
81+
->andWhere('package.type IS NOT NULL')
82+
->getQuery()
83+
->getSingleColumnResult();
7184

7285
return $this->render('dashboard/packages/list.html.twig', [
7386
'filtersActive' => $filtersActive,
7487
'paginator' => $paginator,
7588
'registries' => $registries,
7689
'searchQuery' => $searchQuery ?? null,
7790
'selectedRegistry' => $selectedRegistry ?? null,
91+
'selectedType' => $selectedType ?? null,
92+
'types' => $types,
7893
]);
7994
}
8095

templates/dashboard/packages/list.html.twig

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,28 @@
3131
<div>
3232
<div class="dropdown">
3333
<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
34-
{{ selectedRegistry ? (selectedRegistry == 'local' ? ('Local'|trans) : selectedRegistry.name) : ('All registries'|trans) }}
34+
{{ selectedRegistry ? (selectedRegistry == 'local' ? 'Local'|trans : selectedRegistry.name) : 'All registries'|trans }}
3535
</button>
3636
<ul class="dropdown-menu">
37-
{{ _self.registryFilterItem(selectedRegistry, null, 'All registries'|trans) }}
38-
{{ _self.registryFilterItem(selectedRegistry, 0, 'Local'|trans) }}
37+
{{ _self.dropdownItem(selectedRegistry, null, 'registry', 'All registries'|trans) }}
38+
{{ _self.dropdownItem(selectedRegistry, 0, 'registry', 'Local'|trans) }}
3939
{% for registry in registries %}
40-
{{ _self.registryFilterItem(selectedRegistry, registry.id, registry.name) }}
40+
{{ _self.dropdownItem(selectedRegistry, registry.id, 'registry', registry.name) }}
41+
{% endfor %}
42+
</ul>
43+
</div>
44+
</div>
45+
{% endif %}
46+
{% if types|length %}
47+
<div>
48+
<div class="dropdown">
49+
<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
50+
{{ selectedType ? selectedType : ('All types'|trans) }}
51+
</button>
52+
<ul class="dropdown-menu">
53+
{{ _self.dropdownItem(selectedType, null, 'type', 'All tyoes'|trans) }}
54+
{% for type in types %}
55+
{{ _self.dropdownItem(selectedType, type, 'type', type) }}
4156
{% endfor %}
4257
</ul>
4358
</div>
@@ -53,10 +68,10 @@
5368
{{ include('dashboard/packages/_package_list.html.twig', {paginator: paginator}, with_context: false) }}
5469
{% endblock %}
5570

56-
{% macro registryFilterItem(selectedRegistry, registry, label) %}
57-
{% if registry is same as(selectedRegistry) %}
71+
{% macro dropdownItem(selected, value, key, label) %}
72+
{% if value is same as(selected) %}
5873
<li><span class="dropdown-item active">{{ label }}</span></li>
5974
{% else %}
60-
<li><a class="dropdown-item" href="{{ packageFilterUrl('registry', registry) }}">{{ label }}</a></li>
75+
<li><a class="dropdown-item" href="{{ packageFilterUrl(key, value) }}">{{ label }}</a></li>
6176
{% endif %}
6277
{% endmacro %}

0 commit comments

Comments
 (0)