Skip to content

Commit 1116883

Browse files
committed
Create package list filters
1 parent e4808bb commit 1116883

File tree

3 files changed

+36
-0
lines changed

3 files changed

+36
-0
lines changed

src/Controller/Dashboard/DashboardPackagesController.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
use CodedMonkey\Dirigent\Doctrine\Entity\Dependent;
77
use CodedMonkey\Dirigent\Doctrine\Entity\Package;
88
use CodedMonkey\Dirigent\Doctrine\Entity\PackageFetchStrategy;
9+
use CodedMonkey\Dirigent\Doctrine\Entity\Provider;
10+
use CodedMonkey\Dirigent\Doctrine\Entity\Registry;
911
use CodedMonkey\Dirigent\Doctrine\Entity\Suggester;
1012
use CodedMonkey\Dirigent\Doctrine\Repository\PackageRepository;
1113
use CodedMonkey\Dirigent\EasyAdmin\PackagePaginator;
@@ -48,14 +50,24 @@ public function list(Request $request): Response
4850
$queryBuilder->setParameter('query', "%{$query}%");
4951
}
5052

53+
if (null !== $registryId = $request->query->get('registry')) {
54+
$registry = $this->entityManager->getRepository(Registry::class)->find($registryId);
55+
56+
$queryBuilder->andWhere($queryBuilder->expr()->eq('package.registry', ':registry'));
57+
$queryBuilder->setParameter('registry', $registry);
58+
}
59+
5160
$paginatorDto = new PaginatorDto(20, 3, 1, true, null);
5261
$paginatorDto->setPageNumber($request->query->getInt('page', 1));
5362
$paginator = (new PackagePaginator($this->adminUrlGenerator))->paginate($paginatorDto, $queryBuilder);
5463
$packages = $paginator->getResults();
5564

65+
$registries = $this->entityManager->getRepository(Registry::class)->findAll();
66+
5667
return $this->render('dashboard/packages/list.html.twig', [
5768
'packages' => $packages,
5869
'paginator' => $paginator,
70+
'registries' => $registries,
5971
]);
6072
}
6173

@@ -77,6 +89,8 @@ public function info(string $packageName, ?string $packageVersion = null): Respo
7789
}
7890

7991
$dependentCount = $this->entityManager->getRepository(Dependent::class)->count(['dependentPackageName' => $package->getName()]);
92+
$implementationCount = $this->entityManager->getRepository(Provider::class)->count(['providedPackageName' => $package->getName() . '-implementation']);
93+
$providerCount = $this->entityManager->getRepository(Provider::class)->count(['providedPackageName' => $package->getName()]);
8094
$suggesterCount = $this->entityManager->getRepository(Suggester::class)->count(['suggestedPackageName' => $package->getName()]);
8195

8296
return $this->render('dashboard/packages/package_info.html.twig', [
@@ -85,6 +99,8 @@ public function info(string $packageName, ?string $packageVersion = null): Respo
8599
'version' => $version,
86100

87101
'dependentCount' => $dependentCount,
102+
'implementationCount' => $implementationCount,
103+
'providerCount' => $providerCount,
88104
'suggesterCount' => $suggesterCount,
89105
]);
90106
}

templates/dashboard/packages/list.html.twig

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,23 @@
2525
{% endblock %}
2626

2727
{% block page_content %}
28+
<div class="d-flex align-items-center gap-2 mb-3">
29+
<div>{{ 'Filter by'|trans }}</div>
30+
<div>
31+
<div class="dropdown">
32+
<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
33+
{{ 'Registry'|trans }}
34+
</button>
35+
<ul class="dropdown-menu">
36+
<li><a class="dropdown-item" href="#">{{ 'Local'|trans }}</a></li>
37+
{% for registry in registries %}
38+
{% set filterUrl = dashboard_path('dashboard_packages', {registry: registry.id}) %}
39+
<li><a class="dropdown-item" href="{{ filterUrl }}">{{ registry.name }}</a></li>
40+
{% endfor %}
41+
</ul>
42+
</div>
43+
</div>
44+
</div>
45+
2846
{% include 'dashboard/packages/_package_list.html.twig' %}
2947
{% endblock %}

templates/dashboard/packages/package_info.html.twig

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@
4949
<div><a href="{{ packageDependentsUrl }}">{{ 'Dependents'|trans }}</a>: {{ dependentCount }}</div>
5050
{% set packageSuggestersUrl = dashboard_path('dashboard_packages_suggesters', {packageName: package.name}) %}
5151
<div><a href="{{ packageSuggestersUrl }}">{{ 'Suggesters'|trans }}</a>: {{ suggesterCount }}</div>
52+
<div>{{ 'Providers'|trans }}: {{ providerCount }}</div>
53+
<div>{{ 'Implementations'|trans }}: {{ implementationCount }}</div>
5254
{% if version.license %}
5355
<div>License: {{ version.license|join(', ') }}</div>
5456
{% else %}

0 commit comments

Comments
 (0)