. */ 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 { /** * @var float */ protected $queryTimeStart; /** * @var ThemeIcons */ protected $icons; /** * @var Acl */ protected $acl; /** * Actualizar los datos del paginador * * @param DataGridInterface $dataGrid * @param ItemSearchData $itemSearchData * * @return DataGridInterface */ public function updatePager(DataGridInterface $dataGrid, ItemSearchData $itemSearchData) { $dataGrid->getPager() ->setLimitStart($itemSearchData->getLimitStart()) ->setLimitCount($itemSearchData->getLimitCount()) ->setFilterOn($itemSearchData->getSeachString() !== ''); $dataGrid->updatePager(); return $dataGrid; } /** * Devolver el paginador por defecto * * @param DataGridActionSearch $sourceAction * * @return DataGridPager */ final protected function getPager(DataGridActionSearch $sourceAction) { $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() { $this->queryTimeStart = microtime(true); $this->acl = $this->dic->get(Acl::class); $this->icons = $this->view->getTheme()->getIcons(); } /** * @return DataGridInterface */ protected abstract function getGridLayout(): DataGridInterface; /** * @return DataGridHeader */ protected abstract function getHeader(): DataGridHeader; /** * @return DataGridData */ protected abstract function getData(): DataGridData; }