fix: adds 'view all ...' button to dashboard widgets

This commit is contained in:
2025-05-13 09:07:20 -05:00
parent 217a667df2
commit 8967d407cb
8 changed files with 71 additions and 45 deletions

View File

@@ -3,41 +3,34 @@
namespace App\Monitor\Framework\Repository;
use App\Monitor\Framework\Entity\Monitor;
use App\Util\Paginator;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Component\Security\Core\User\UserInterface;
/**
* @extends ServiceEntityRepository<Monitor>
*/
class MonitorRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
private Paginator $paginator;
public function __construct(ManagerRegistry $registry, Paginator $paginator)
{
parent::__construct($registry, Monitor::class);
$this->paginator = $paginator;
}
// /**
// * @return MovieMonitor[] Returns an array of MovieMonitor objects
// */
// public function findByExampleField($value): array
// {
// return $this->createQueryBuilder('m')
// ->andWhere('m.exampleField = :val')
// ->setParameter('val', $value)
// ->orderBy('m.id', 'ASC')
// ->setMaxResults(10)
// ->getQuery()
// ->getResult()
// ;
// }
public function getUserMonitorsPaginated(UserInterface $user, int $page, int $perPage)
{
$query = $this->createQueryBuilder('m')
->andWhere('m.status IN (:statuses)')
->andWhere('m.user = :user')
->orderBy('m.id', 'ASC')
->setParameter('statuses', ['Active', 'New', 'In Progress', 'Complete'])
->setParameter('user', $user)
->getQuery();
// public function findOneBySomeField($value): ?MovieMonitor
// {
// return $this->createQueryBuilder('m')
// ->andWhere('m.exampleField = :val')
// ->setParameter('val', $value)
// ->getQuery()
// ->getOneOrNullResult()
// ;
// }
return $this->paginator->paginate($query, $page, $perPage);
}
}

View File

@@ -15,6 +15,8 @@ final class DownloadList extends AbstractController
public string $type;
public bool $isWidget = true;
public function __construct(
private readonly DownloadRepository $downloadRepository,
) {}

View File

@@ -4,17 +4,22 @@ namespace App\Twig\Components;
use App\Monitor\Framework\Repository\MonitorRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\UX\LiveComponent\Attribute\LiveAction;
use Symfony\UX\LiveComponent\Attribute\LiveArg;
use Symfony\UX\TwigComponent\Attribute\AsTwigComponent;
#[AsTwigComponent]
final class MonitorList extends AbstractController
{
public bool $isWidget = true;
public function __construct(
private MonitorRepository $monitorRepository,
private readonly MonitorRepository $monitorRepository,
) {}
public function getUserMonitors()
#[LiveAction]
public function getUserMonitors(#[LiveArg] int $page = 1, #[LiveArg] int $perPage = 5)
{
return $this->getUser()->getMonitors();
return $this->monitorRepository->getUserMonitorsPaginated($this->getUser(), $page, $perPage);
}
}

View File

@@ -26,7 +26,7 @@ class Paginator
* @param int $limit
* @return Paginator
*/
public function paginate($query, int $page = 1, int $limit = 10): Paginator
public function paginate($query, int $page = 1, int $limit = 5): Paginator
{
$paginator = new OrmPaginator($query);