Skip to content

Commit

Permalink
Display proper number of results on pagination
Browse files Browse the repository at this point in the history
  • Loading branch information
Zales0123 committed Sep 6, 2024
1 parent 41e603b commit b479741
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 1 deletion.
3 changes: 3 additions & 0 deletions src/Controller/Action/SearchAction.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
use Setono\Doctrine\ORMTrait;
use Setono\SyliusMeilisearchPlugin\Engine\SearchEngineInterface;
use Setono\SyliusMeilisearchPlugin\Form\Builder\SearchFormBuilderInterface;
use Setono\SyliusMeilisearchPlugin\Meilisearch\Provider\SearchResultDataProvider;
use Setono\SyliusMeilisearchPlugin\Model\IndexableInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
Expand Down Expand Up @@ -54,6 +55,8 @@ public function __invoke(Request $request): Response

return new Response($this->twig->render('@SetonoSyliusMeilisearchPlugin/search/index.html.twig', [
'searchResult' => $searchResult,
'pageStartHit' => SearchResultDataProvider::getPageStartHit($searchResult),
'pageEndHit' => SearchResultDataProvider::getPageEndHit($searchResult),
'searchForm' => $searchForm->createView(),
'items' => $items,
]));
Expand Down
24 changes: 24 additions & 0 deletions src/Meilisearch/Provider/SearchResultDataProvider.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?php

declare(strict_types=1);

namespace Setono\SyliusMeilisearchPlugin\Meilisearch\Provider;

use Meilisearch\Search\SearchResult;

final class SearchResultDataProvider
{
public static function getPageStartHit(SearchResult $searchResult): int
{
return (int) $searchResult->getPage() * (int) $searchResult->getHitsPerPage() - (int) $searchResult->getHitsPerPage();
}

public static function getPageEndHit(SearchResult $searchResult): int
{
$totalHits = (int) $searchResult->getTotalHits();
$page = (int) $searchResult->getPage();
$hitsPerPage = (int) $searchResult->getHitsPerPage();

return ($totalHits < $page * $hitsPerPage) ? $totalHits : $page * $hitsPerPage;
}
}
2 changes: 1 addition & 1 deletion src/Resources/views/search/index.html.twig
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
<div class="twelve wide column">
<div class="ui grid">
<div class="eight wide column">
Displaying {{ (searchResult.page * searchResult.hitsPerPage) - searchResult.hitsPerPage }} - {{ searchResult.page * searchResult.hitsPerPage }} of {{ searchResult.hitsCount }}
Displaying {{ pageStartHit }} - {{ pageEndHit }} of {{ searchResult.hitsCount }}
</div>
<div class="eight wide right aligned column">
{{ form_widget(searchForm.sort) }}
Expand Down

0 comments on commit b479741

Please sign in to comment.