. */ namespace SP\Modules\Web\Controllers\Helpers\Grid; use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; use SP\Core\Acl\Acl; use SP\Core\UI\ThemeIcons; use SP\DataModel\ItemSearchData; use SP\Html\DataGrid\Action\DataGridActionSearch; use SP\Html\DataGrid\DataGridData; use SP\Html\DataGrid\DataGridInterface; use SP\Html\DataGrid\Layout\DataGridHeader; use SP\Html\DataGrid\Layout\DataGridPager; use SP\Modules\Web\Controllers\Helpers\HelperBase; /** * Class GridBase * * @package SP\Modules\Web\Controllers\Helpers\Grid */ abstract class GridBase extends HelperBase implements GridInterface { protected ?float $queryTimeStart = null; protected ?ThemeIcons $icons = null; protected ?Acl $acl = null; /** * Actualizar los datos del paginador * * @param DataGridInterface $dataGrid * @param ItemSearchData $itemSearchData * * @return DataGridInterface */ public function updatePager( DataGridInterface $dataGrid, ItemSearchData $itemSearchData ): DataGridInterface { $dataGrid->getPager() ->setLimitStart($itemSearchData->getLimitStart()) ->setLimitCount($itemSearchData->getLimitCount()) ->setFilterOn(!empty($itemSearchData->getSeachString())); $dataGrid->updatePager(); return $dataGrid; } /** * Devolver el paginador por defecto * * @param DataGridActionSearch $sourceAction * * @return DataGridPager */ final protected function getPager( DataGridActionSearch $sourceAction ): DataGridPager { $gridPager = new DataGridPager(); $gridPager->setSourceAction($sourceAction); $gridPager->setOnClickFunction('appMgmt/nav'); $gridPager->setLimitStart(0); $gridPager->setLimitCount($this->configData->getAccountCount()); $gridPager->setIconPrev($this->icons->getIconNavPrev()); $gridPager->setIconNext($this->icons->getIconNavNext()); $gridPager->setIconFirst($this->icons->getIconNavFirst()); $gridPager->setIconLast($this->icons->getIconNavLast()); return $gridPager; } /** * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ final protected function initialize(): void { $this->queryTimeStart = microtime(true); $this->acl = $this->dic->get(Acl::class); $this->icons = $this->view->getTheme()->getIcons(); } /** * @return DataGridInterface */ abstract protected function getGridLayout(): DataGridInterface; /** * @return DataGridHeader */ abstract protected function getHeader(): DataGridHeader; /** * @return DataGridData */ abstract protected function getData(): DataGridData; }