123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- <?php
- namespace Dcat\Admin\Grid\Tools;
- use Dcat\Admin\Admin;
- use Dcat\Admin\Grid;
- use Illuminate\Contracts\Support\Renderable;
- use Illuminate\Pagination\LengthAwarePaginator;
- class Paginator implements Renderable
- {
- /**
- * @var Grid
- */
- protected $grid;
- /**
- * @var \Illuminate\Pagination\LengthAwarePaginator
- */
- protected $paginator = null;
- /**
- * Create a new Paginator instance.
- *
- * @param Grid $grid
- */
- public function __construct(Grid $grid)
- {
- $this->grid = $grid;
- $this->initPaginator();
- }
- /**
- * Initialize work for Paginator.
- *
- * @return void
- */
- protected function initPaginator()
- {
- $this->paginator = $this->grid->model()->paginator();
- if ($this->paginator instanceof LengthAwarePaginator) {
- $this->paginator->appends(request()->all());
- }
- }
- /**
- * Get Pagination links.
- *
- * @return string
- */
- protected function paginationLinks()
- {
- return $this->paginator->render('admin::grid.pagination');
- }
- /**
- * Get per-page selector.
- *
- * @return string|null
- */
- protected function perPageSelector()
- {
- if (! $this->grid->getPerPages()) {
- return;
- }
- return (new PerPageSelector($this->grid))->render();
- }
- /**
- * Get range infomation of paginator.
- *
- * @return string|\Symfony\Component\Translation\TranslatorInterface
- */
- protected function paginationRanger()
- {
- $parameters = [
- 'first' => $this->paginator->firstItem(),
- 'last' => $this->paginator->lastItem(),
- 'total' => $this->paginator->total(),
- ];
- $parameters = collect($parameters)->flatMap(function ($parameter, $key) {
- return [$key => "<b>$parameter</b>"];
- });
- $color = Admin::color()->dark80();
- return "<span class='d-none d-sm-inline' style=\"line-height:33px;color:{$color}\">".trans('admin.pagination.range', $parameters->all()).'</span>';
- }
- /**
- * Render Paginator.
- *
- * @return string
- */
- public function render()
- {
- return $this->paginationRanger().
- $this->paginationLinks().
- $this->perPageSelector();
- }
- }
|