feat: adds page to list child monitors
This commit is contained in:
@@ -33,7 +33,6 @@ class Paginator
|
||||
public function paginate($query, int $page = 1, int $limit = 5): Paginator
|
||||
{
|
||||
$paginator = new OrmPaginator($query);
|
||||
|
||||
$paginator
|
||||
->getQuery()
|
||||
->setFirstResult($limit * ($page - 1))
|
||||
|
||||
@@ -7,6 +7,7 @@ use App\Monitor\Action\Handler\AddMonitorHandler;
|
||||
use App\Monitor\Action\Handler\DeleteMonitorHandler;
|
||||
use App\Monitor\Action\Input\AddMonitorInput;
|
||||
use App\Monitor\Action\Input\DeleteMonitorInput;
|
||||
use App\Monitor\Framework\Entity\Monitor;
|
||||
use App\Monitor\Framework\Repository\MonitorRepository;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Bundle\SecurityBundle\Security;
|
||||
@@ -34,4 +35,12 @@ class WebController extends AbstractController
|
||||
{
|
||||
return $this->render('monitor/upcoming-episodes.html.twig');
|
||||
}
|
||||
|
||||
#[Route('/monitors/{id}', name: 'app.monitor.view', methods: ['GET'])]
|
||||
public function viewMonitor(Monitor $monitor)
|
||||
{
|
||||
return $this->render('monitor/view.html.twig', [
|
||||
'monitor' => $monitor,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,11 +17,14 @@ final class MonitorList extends AbstractController
|
||||
|
||||
use PaginateTrait;
|
||||
|
||||
#[LiveProp(writable: true)]
|
||||
public ?int $parentMonitorId = null;
|
||||
|
||||
#[LiveProp(writable: true)]
|
||||
public string $term = "";
|
||||
|
||||
#[LiveProp(writable: true)]
|
||||
public string $type;
|
||||
public string $type = "";
|
||||
|
||||
#[LiveProp(writable: true)]
|
||||
public bool $isWidget = true;
|
||||
@@ -33,7 +36,9 @@ final class MonitorList extends AbstractController
|
||||
#[LiveAction]
|
||||
public function getMonitors()
|
||||
{
|
||||
if ($this->type === "active") {
|
||||
if (null !== $this->parentMonitorId) {
|
||||
return $this->getChildMonitorsByParentId($this->parentMonitorId);
|
||||
} elseif ($this->type === "active") {
|
||||
return $this->getActiveUserMonitors();
|
||||
} elseif ($this->type === "complete") {
|
||||
return $this->getCompleteUserMonitors();
|
||||
@@ -67,4 +72,16 @@ final class MonitorList extends AbstractController
|
||||
->getQuery()
|
||||
);
|
||||
}
|
||||
|
||||
#[LiveAction]
|
||||
public function getChildMonitorsByParentId(int $parentId)
|
||||
{
|
||||
return $this->asPaginator(
|
||||
$this->monitorRepository->createQueryBuilder('m')
|
||||
->andWhere("m.parent = :parentId")
|
||||
->setParameter('parentId', $parentId)
|
||||
->orderBy('m.id', 'DESC')
|
||||
->getQuery()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
12
templates/monitor/view.html.twig
Normal file
12
templates/monitor/view.html.twig
Normal file
@@ -0,0 +1,12 @@
|
||||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block title %}{{ monitor.title }} — Monitors — Torsearch{% endblock %}
|
||||
{% block h2 %}Monitors{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<div class="px-4 py-2">
|
||||
<twig:Card title="Viewing your monitors for {{ monitor.title }}">
|
||||
<twig:MonitorList :parentMonitorId="monitor.id" :isWidget="false" :perPage="10"></twig:MonitorList>
|
||||
</twig:Card>
|
||||
</div>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user