diff --git a/assets/controllers/download_button_controller.js b/assets/controllers/download_button_controller.js index 8b0a612..75cd145 100644 --- a/assets/controllers/download_button_controller.js +++ b/assets/controllers/download_button_controller.js @@ -15,7 +15,7 @@ export default class extends Controller { } download() { - fetch('/download', { + fetch('/api/download', { method: 'POST', headers: { 'Content-Type': 'application/json', diff --git a/config/routes.yaml b/config/routes.yaml index 7fe8633..5b63236 100644 --- a/config/routes.yaml +++ b/config/routes.yaml @@ -14,6 +14,14 @@ controllersUser: defaults: schemes: ['https'] +controllersDownload: + resource: + path: ../src/Download/Framework/Controller + namespace: App\Download\Framework\Controller + type: attribute + defaults: + schemes: [ 'https' ] + controllersMonitor: resource: path: ../src/Monitor/Framework/Controller diff --git a/src/Controller/DownloadController.php b/src/Download/Framework/Controller/ApiController.php similarity index 92% rename from src/Controller/DownloadController.php rename to src/Download/Framework/Controller/ApiController.php index b83ba9a..d3dee6b 100644 --- a/src/Controller/DownloadController.php +++ b/src/Download/Framework/Controller/ApiController.php @@ -1,6 +1,6 @@ json(['status' => 200, 'message' => 'Added to Queue']); } -} +} \ No newline at end of file diff --git a/src/Download/Framework/Controller/WebController.php b/src/Download/Framework/Controller/WebController.php new file mode 100644 index 0000000..9e78fb6 --- /dev/null +++ b/src/Download/Framework/Controller/WebController.php @@ -0,0 +1,27 @@ +render('downloads/index.html.twig'); + } +} diff --git a/src/Twig/Components/DownloadList.php b/src/Twig/Components/DownloadList.php index 3bf6eed..a9c2cd1 100644 --- a/src/Twig/Components/DownloadList.php +++ b/src/Twig/Components/DownloadList.php @@ -6,6 +6,7 @@ use App\Download\Framework\Repository\DownloadRepository; use App\Util\Paginator; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\UX\LiveComponent\Attribute\AsLiveComponent; +use Symfony\UX\LiveComponent\Attribute\LiveProp; use Symfony\UX\LiveComponent\DefaultActionTrait; #[AsLiveComponent] @@ -15,6 +16,13 @@ final class DownloadList extends AbstractController public string $type; + #[LiveProp(writable: true)] + public int $pageNumber = 1; + + #[LiveProp(writable: true)] + public int $perPage = 5; + + #[LiveProp(writable: true)] public bool $isWidget = true; public function __construct( @@ -24,9 +32,9 @@ final class DownloadList extends AbstractController public function getDownloads() { if ($this->type === "active") { - return $this->downloadRepository->getActivePaginated($this->getUser()); + return $this->downloadRepository->getActivePaginated($this->getUser(), $this->pageNumber, $this->perPage); } elseif ($this->type === "complete") { - return $this->downloadRepository->getCompletePaginated($this->getUser()); + return $this->downloadRepository->getCompletePaginated($this->getUser(), $this->pageNumber, $this->perPage); } return []; diff --git a/templates/base.html.twig b/templates/base.html.twig index 1eca04a..918fe56 100644 --- a/templates/base.html.twig +++ b/templates/base.html.twig @@ -19,7 +19,7 @@
-

{% block h2 %}{% endblock %}

+

{% block h2 %}{% endblock %}

{% block body %}{% endblock %}
diff --git a/templates/components/DownloadList.html.twig b/templates/components/DownloadList.html.twig index 4ae8507..c245e9e 100644 --- a/templates/components/DownloadList.html.twig +++ b/templates/components/DownloadList.html.twig @@ -1,12 +1,24 @@ {% set table_body_id = (type == "complete") ? "complete_downloads" : "active_downloads" %} - +
+ + {% if this.isWidget == false %} + + + {% endif %} + - + + {% if this.isWidget == false %} + + + {% endif %} + {% endfor %} - {% if this.downloads.items|length > 5 %} - - + {% endif %} {% else %} - diff --git a/templates/components/NavBar.html.twig b/templates/components/NavBar.html.twig index 89160a9..23782ba 100644 --- a/templates/components/NavBar.html.twig +++ b/templates/components/NavBar.html.twig @@ -39,7 +39,7 @@
  • - Complete diff --git a/templates/downloads/index.html.twig b/templates/downloads/index.html.twig new file mode 100644 index 0000000..3ee99f3 --- /dev/null +++ b/templates/downloads/index.html.twig @@ -0,0 +1,18 @@ +{% extends 'base.html.twig' %} + +{% block title %}Downloads — Torsearch{% endblock %} +{% block h2 %}Downloads{% endblock %} + +{% block body %} +
    + + + +
    + +
    + + + +
    +{% endblock %} diff --git a/templates/partial/paginator.html.twig b/templates/partial/paginator.html.twig index 9820788..3159619 100644 --- a/templates/partial/paginator.html.twig +++ b/templates/partial/paginator.html.twig @@ -2,6 +2,9 @@ {% set _currentRoute = app.request.attributes.get('_route') %} {% set _lastPage = paginator.lastPage %} {% set _currentParams = app.request.query.all|merge(app.request.attributes.get('_route_params')) %} +{% set _showingPerPage = (_currentPage == _lastPage) ? paginator.total - (this.perPage * (_lastPage - 1)) : paginator.items.query.maxResults %} + +

    Showing {{ _showingPerPage }} of {{ paginator.total }} results

    {% if paginator.lastPage > 1 %}
  • + class="px-6 py-3 text-start text-xs font-medium text-stone-500 uppercase dark:text-stone-800 {% if this.isWidget == true %}min-w-[45ch] max-w-[45ch]{% endif %} truncate"> Title + Filename + + Media type + Progress @@ -17,9 +29,19 @@ {% if this.downloads.items|length > 0 %} {% for download in this.downloads.items %}
    + {{ download.title }} + {{ download.filename }} + + {{ download.mediaType }} + {% if download.progress < 100 %}
    @@ -31,16 +53,16 @@
    - View All Monitors + {% if this.isWidget == true and this.downloads.items|length > this.perPage %} +
    + View All Downloads
    + No downloads