/** * Component factory. * @see Nette/ComponentContainer#createComponent() */ protected function createComponentDataGrid($name) { $grid = new DataGrid(); $grid->bindDataTable(dibi::getConnection()->dataSource('SELECT authorId as id, name, surname, class,', Model::sqlClassName(Model::getSchoolYear()) . 'as classMark, (SELECT COUNT(workId) FROM [works] WHERE author=authorId) as sum FROM [authors] ')); $grid->addColumn('name', 'Jméno'); $grid->addColumn('surname', 'Příjmení')->addDefaultSorting('asc'); $grid->addColumn('class', 'Maturita')->getCellPrototype()->style('text-align: center;'); $grid->addColumn('classMark', 'Třída')->getCellPrototype()->style('text-align: right;'); $grid->addColumn('sum', 'Počet prací')->getCellPrototype()->style('text-align: right;')->class('pages'); $grid->addActionColumn('Akce'); $grid->keyName = 'id'; $grid->addAction('Smazat', 'delete!', NULL, FALSE, DataGridAction::WITH_KEY); $grid['name']->addFilter(); $grid['surname']->addFilter(); $grid['class']->addSelectboxFilter(); $grid['classMark']->addSelectboxFilter(); $grid['sum']->addSelectboxFilter(); $grid->multiOrder = FALSE; $grid->itemsPerPage = $this->getCookiesItemsCount(15); $renderer = $grid->getRenderer(); $renderer->paginatorFormat = '%label% %input% z %count%'; $renderer->infoFormat = 'Autoři %from%. - %to%. z %count% | Zobrazit: %selectbox% | %reset%'; $renderer->onRowRender[] = array($this, 'OnRowRendered'); //$grid->rememberState = TRUE; $this->addComponent($grid, $name); return; }
protected function createComponentUsers() { $grid = new DataGrid(); $grid->bindDataTable(UsersModel::getUsers()); $grid->addColumn('userName', 'Uživatelské jméno')->addFilter(); $grid->addColumn('firstName', 'Jméno')->addFilter(); $grid->addColumn('surname', 'Přijmení')->addFilter(); $grid->addColumn('email', 'E-mail')->addFilter(); $grid->addColumn('icq', 'ICQ')->addFilter(); $grid->addColumn('mobile', 'Mobilní telefon')->addFilter(); $grid->addColumn('active', 'Aktivní')->addSelectboxFilter(array(1 => 'Yes', 0 => 'No')); $grid->addColumn('holiday', 'Dovolená')->addSelectboxFilter(array(1 => 'Yes', 0 => 'No')); $grid->multiOrder = FALSE; // order by one column only $grid['holiday']->replacement['1'] = 'Ano'; $grid['holiday']->replacement['0'] = 'Ne'; $grid['active']->replacement['1'] = 'Ano'; $grid['active']->replacement['0'] = 'Ne'; $grid->displayedItems = array(10, 20, 50, 75, 100, 500, 1000); // roletka pro výběr počtu řádků na stránku $grid->addActionColumn('Actions'); $grid->keyName = 'id'; $grid->addAction('Aktivovat/Deaktivovat', 'userActivateChange!', Html::el('span')->setText('Aktivace/Deaktivace'), $useAjax = TRUE); $grid->addAction('Dovolená', 'userHolidayChange!', Html::el('span')->setText('Dovolená'), $useAjax = TRUE); $grid->addAction('Editovat', 'userChangeRedirect', Html::el('span')->setText('Editovat'), $useAjax = FALSE); $grid->addAction('Změnit heslo', 'userPasswordChangeRedirect', Html::el('span')->setText('Změnit heslo'), $useAjax = FALSE); $grid->addAction('Smazat', 'confirmForm:confirmUserDelete!', Html::el('span')->setText('Smazat'), $useAjax = TRUE); return $grid; }
/** * Component factory. * @see Nette/ComponentContainer#createComponent() */ protected function createComponentDataGrid($name) { $grid = new DataGrid(); $grid->bindDataTable(dibi::getConnection()->dataSource('SELECT workId as id, title, CONCAT_WS(" ", name, surname) as authorName, award, year, type, pages, added, edited FROM [works] join [authors] on author = authorId', 'WHERE %and', $this->where)); $grid->addActionColumn('Akce'); $grid->addColumn('title', 'Název', 50)->addDefaultSorting('asc'); if (!isset($this->where['authorId'])) { $grid->addColumn('authorName', 'Autor'); } $grid->addNumericColumn('year', 'Ročník')->getCellPrototype()->style('min-width: 75px;'); $grid->addDateColumn('added', 'Vytvořena', '%d.%m.%Y'); $grid->addDateColumn('edited', 'Upravena', '%H:%M:%S %d.%m.%Y')->getCellPrototype()->style('white-space: nowrap;'); $grid->addColumn('award', 'Cena'); $grid->addColumn('type', 'Typ'); $grid->addNumericColumn('pages', 'Stran')->getCellPrototype()->style('text-align: right;')->class = 'pages'; $grid->keyName = 'id'; $grid->addAction('Smazat', 'delete!', NULL, FALSE, DataGridAction::WITH_KEY); if ($this->advanced) { $grid['title']->addFilter(); $grid['authorName']->addFilter(); $grid['year']->addSelectboxFilter(); $grid['award']->addSelectboxFilter(); $grid['type']->addSelectboxFilter(); $grid['type']->addSelectboxFilter(); $grid['added']->addDateFilter(); $grid['edited']->addDateFilter(); if (isset($grid['pages'])) { $grid['pages']->addSelectboxFilter(); } } //$grid->itemsPerPage = ; $grid->multiOrder = FALSE; $grid->itemsPerPage = $this->getCookiesItemsCount(15); $renderer = $grid->getRenderer(); $renderer->paginatorFormat = '%label% %input% z %count%'; $renderer->infoFormat = 'Práce %from% - %to% z %count% | Zobrazit: %selectbox% | %reset%'; $renderer->onRowRender[] = array($this, 'worksOnRowRendered'); if (!$grid->paginator->itemCount) { $renderer->wrappers['form']['.class'] .= " hidden"; } //$grid->rememberState = TRUE; $this->addComponent($grid, $name); return; }
public function createComponentCategoriesGrid($name) { $grid = new DataGrid($this, $name); $ds = $this->model('categories')->getDs(); $grid->bindDataTable($ds); $grid->keyName = 'id'; $grid->addColumn('title', 'Title')->addFilter(); $grid->addActionColumn('Actions'); $grid->addAction('Edit', 'editCategory!', Html::el('span')->class('icon icon-edit'), $useAjax = TRUE); $grid->addAction('Delete', 'confirmForm:confirmDelete!', Html::el('span')->class('icon icon-delete'), $useAjax = TRUE); return $grid; }
public function createComponentGrid() { $grid = new DataGrid(); $ds = $this->model('tables')->getTableDS($this->table); $grid->bindDataTable($ds); $grid->keyName = 'id'; // přidáme sloupec pro akce $grid->addActionColumn('Actions'); // a naplníme datagrid akcemi pomocí továrničky $grid->addAction('Edit', 'editEntry', null, $useAjax = TRUE); $grid->addAction('Delete', 'deleteEntry', null, $useAjax = TRUE); return $grid; }
public function createComponentGrid($name) { $grid = new DataGrid($this, $name); $ds = $this->model('menu')->getDs(); $grid->bindDataTable($ds); $grid->keyName = 'id'; $grid->addColumn('name', 'Name')->addTextFilter(); $grid['name']->formatCallback[] = array($this, 'createNameLink'); // přidáme sloupec pro akce $grid->addActionColumn('Actions'); // a naplníme datagrid akcemi pomocí továrničky $grid->addAction('Items', 'MenuItems:default', Html::el('span')->class('icon icon-items'), $useAjax = true); $grid->addAction('Edit', 'editMenu!', Html::el('span')->class('icon icon-edit'), $useAjax = true); $grid->addAction('Delete', 'confirmForm:confirmDelete!', Html::el('span')->class('icon icon-delete'), $useAjax = true); return $grid; }
public function createComponentModulesGrid($name, $page) { $grid = new DataGrid($page, $name); $grid->rememberState = TRUE; // povolí ukládání stavů komponenty do session $grid->timeout = '+ 7 days'; $ds = $this->model('Modules')->getDs(); $grid->bindDataTable($ds); $grid->keyName = 'module_name'; $grid->addColumn('module_name', 'Name')->addFilter(); $grid->addColumn('status', 'Status')->addSelectboxFilter(array('enabled' => "Enabled", 'disabled' => "Disabled"), TRUE); $grid->addActionColumn('Actions'); $grid->addAction('StatusToggle', 'changeStatus!', null, $useAjax = TRUE); $grid->addAction('Delete', 'confirmForm:confirmDelete!', Html::el('span')->class('icon icon-explode'), $useAjax = TRUE); $renderer = $grid->getRenderer(); $renderer->paginatorFormat = '%input%'; $renderer->onActionRender[] = array($this, 'formatActions'); $grid->setRenderer($renderer); return $grid; }
public function createComponentPagesGrid($name) { $grid = new DataGrid($this, $name); $grid->rememberState = TRUE; // povolí ukládání stavů komponenty do session $grid->timeout = '+ 7 days'; $ds = $this->model('Pages')->getDs(); $grid->bindDataTable($ds); $grid->keyName = 'title'; $grid->addColumn('homepage', ''); $grid['homepage']->getHeaderPrototype()->class('homepage-column'); $grid['homepage']->getCellPrototype()->class('homepage-column'); $grid['homepage']->formatCallback[] = array($this, 'homepageCallback'); //$grid['creditLimit']->getCellPrototype()->style('text-align: center'); $grid->addColumn('title', 'Title')->addFilter(); $categories = $this->model('categories')->getPairs(); $grid->addColumn('category', 'Category')->addSelectboxFilter($categories); $this->categories = array('0' => 'none') + $categories; $grid['category']->formatCallback[] = array($this, 'gridCategoryCallback'); $grid['title']->formatCallback[] = array($this, 'createLink'); $grid->addColumn('template', 'Template')->addSelectboxFilter(); $grid['template']->getCellPrototype()->style('text-align: center'); $grid['template']->formatCallback[] = array($this, 'templateFormatCallback'); $grid->addColumn('published', 'Published')->addSelectboxFilter(array('0' => "No", '1' => "Yes"), TRUE); $grid['published']->getCellPrototype()->style('text-align: center'); $grid['published']->formatCallback[] = array($this, 'publishFormatCallback'); $grid->addDateColumn('publish_time', 'Publish time', '%d.%m.%Y %H:%M:%S'); $grid['publish_time']->getHeaderPrototype()->style('text-align: center'); $grid['publish_time']->getCellPrototype()->style('text-align: center'); $grid->addActionColumn('Actions'); $grid->addAction('Edit', 'editPage!', Html::el('span')->class('icon icon-edit'), $useAjax = TRUE); $grid->addAction('Delete', 'confirmForm:confirmDelete!', Html::el('span')->class('icon icon-delete'), $useAjax = TRUE); $renderer = $grid->getRenderer(); $renderer->paginatorFormat = '%input%'; $grid->setRenderer($renderer); return $grid; }
protected function createComponentWorks($name) { //url as link, //title, $grid = new DataGrid(); $search = NULL; if (isset($this->searchFull)) { $search = ""; foreach ($this->search as $one) { $search .= "title RLIKE '(^| )" . $one . "' OR "; } foreach ($this->searchFull as $one) { $search .= "title RLIKE '(^| )" . $one . " ' OR "; } $search = substr($search, 0, -3); } $grid->bindDataTable(dibi::getConnection()->dataSource('SELECT url as link, title, class,', Model::sqlCategory() . ' as category,', Model::sqlWorkClassName() . 'as grade,', 'CONCAT_WS(" ", name, surname) as authorName,', $this->formColumns(array('year', 'award', 'type')), 'pages, [read] FROM [works] join [authors] on author = authorId', '%if', isset($this->palice), 'AND class < [year] + 4', '%end', '%if', isset($this->palicka), 'AND class=[year]+' . (7 - $this->palicka), '%end', '%if', isset($this->celaPalicka), 'AND class >= [year] + 4', '%end', '%if', isset($this->grade), 'AND class=[year]+' . (3 - $this->grade), '%end', 'WHERE %and', $this->where, '%if', isset($search), 'AND %sql', $search, '%end', '%if', isset($this->searchFulltext), 'AND MATCH(text) AGAINST(%s)', $this->searchFulltext, '%end', '%if', count($this->order) > 0, 'ORDER BY %by', $this->order, '%end')); $grid->addColumn('title', 'Název')->getCellPrototype()->addClass('first'); if (count($this->order) == 0) { $grid['title']->addDefaultSorting(); } $grid->addColumn('authorName', 'Autor'); if ($this->notCol('year') && !isset($this->order['read'])) { $grid->addNumericColumn('year', 'Rok')->getCellPrototype()->style('text-align: center;'); } //if(!isset($this->palicka) && !isset($this->palice) ) $grid->addColumn('category', 'Kategorie'); $grid->addColumn('grade', 'Třída'); if ($this->notCol('award')) { $grid->addColumn('award', 'Ocenění'); } if ($this->notCol('type')) { $grid->addColumn('type', 'Typ'); } $grid->addNumericColumn('pages', 'Stran')->getCellPrototype()->style('text-align: right; padding-left: 0px; padding-right: 5px'); if (isset($this->order['read'])) { $grid->addColumn('read', 'Čtenost')->getCellPrototype()->style('text-align: right;'); } //if($this->advanced){ $grid->addActionColumn('Akce'); $grid['title']->addFilter(); $grid['authorName']->addFilter(); if (isset($grid['year'])) { $grid['year']->addSelectboxFilter(); } if (isset($grid['award'])) { $grid['award']->addSelectboxFilter(); } if (isset($grid['category'])) { $grid['category']->addSelectboxFilter(); } if (isset($grid['type'])) { $grid['type']->addSelectboxFilter(); } if (isset($grid['pages'])) { $grid['pages']->addSelectboxFilter(); } //} //$grid->itemsPerPage = 1; $grid->multiOrder = FALSE; $grid->displayedItems = array('vše', 5, 8, 10, 20, 50, 100); $grid->itemsPerPage = $this->getCookiesItemsCount(8); $grid->nothingMessage = "Žádná práce nebyla nalezena."; $grid->hiddenFiltering = TRUE; $renderer = $grid->getRenderer(); $renderer->paginatorFormat = '%label% %input% z %count%'; $renderer->infoFormat = 'Práce %from% - %to% z %count% | Zobrazit: %selectbox% | %reset%'; $renderer->onRowRender[] = array($this, 'worksOnRowRendered'); $renderer->onCellRender[] = array($this, 'worksOnCellRendered'); //$grid->rememberState = TRUE; return $grid; //$this->addComponent($grid, $name); }
protected function createComponentOrdersGrid() { $model = new DatagridModel(); $grid = new DataGrid(); $translator = new GettextTranslator(Environment::expand('%templatesDir%/customersGrid.cs.mo')); $grid->setTranslator($translator); $renderer = new DataGridRenderer(); $renderer->paginatorFormat = '%input%'; // customize format of paginator $renderer->onCellRender[] = array($this, 'ordersGridOnCellRendered'); $grid->setRenderer($renderer); $grid->itemsPerPage = 10; // display 10 rows per page $grid->displayedItems = array('all', 10, 20, 50); // items per page selectbox items $grid->rememberState = TRUE; $grid->timeout = '+ 7 days'; // change session expiration after 7 days $grid->bindDataTable($model->getOrdersInfo()); $grid->multiOrder = FALSE; // order by one column only $operations = array('delete' => 'delete', 'deal' => 'deal', 'print' => 'print', 'forward' => 'forward'); // define operations // in czech for example: $operations = array('delete' => 'smazat', 'deal' => 'vyřídit', 'print' => 'tisk', 'forward' => 'předat'); // or you can left translate values by translator adapter $callback = array($this, 'gridOperationHandler'); $grid->allowOperations($operations, $callback, 'orderNumber'); // allows checkboxes to do operations with more rows /**** add some columns ****/ $grid->addColumn('customerName', 'Customer'); $grid->addColumn('addressLine1', 'Address')->getHeaderPrototype()->addStyle('width: 180px'); $grid->addColumn('city', 'City'); $grid->addColumn('country', 'Country'); $caption = Html::el('span')->setText('P')->title('Number of products on order')->class('link'); $grid->addNumericColumn('productsCount', $caption)->getCellPrototype()->addStyle('text-align: center'); $grid->addDateColumn('orderDate', 'Date', '%m/%d/%Y'); // czech format: '%d.%m.%Y' $grid->addColumn('status', 'Status'); $grid->addColumn('creditLimit', 'Credit')->getCellPrototype()->addStyle('text-align: center'); /**** add some filters ****/ $grid['customerName']->addFilter(); $grid['addressLine1']->addFilter(); $grid['city']->addSelectboxFilter()->translateItems(FALSE); $grid['country']->addSelectboxFilter()->translateItems(FALSE); $grid['productsCount']->addFilter(); $grid['orderDate']->addDateFilter(); $grid['status']->addSelectboxFilter(); $grid['creditLimit']->addFilter(); /**** default sorting and filtering ****/ $grid['orderDate']->addDefaultSorting('desc'); $grid['productsCount']->addDefaultFiltering('>2'); /**** column content affecting ****/ // by css styling $grid['orderDate']->getCellPrototype()->addStyle('text-align: center'); $grid['status']->getHeaderPrototype()->addStyle('width: 60px'); $grid['addressLine1']->getHeaderPrototype()->addStyle('width: 150px'); $grid['city']->getHeaderPrototype()->addStyle('width: 90px'); // by replacement of given pattern $el = Html::el('span')->addStyle('margin: 0 auto'); $grid['status']->replacement['Shipped'] = clone $el->class("icon icon-shipped")->title("Shipped"); $grid['status']->replacement['Resolved'] = clone $el->class("icon icon-resolved")->title("Resolved"); $grid['status']->replacement['Cancelled'] = clone $el->class("icon icon-cancelled")->title("Cancelled"); $grid['status']->replacement['On Hold'] = clone $el->class("icon icon-hold")->title("On Hold"); $grid['status']->replacement['In Process'] = clone $el->class("icon icon-process")->title("In Process"); $grid['status']->replacement['Disputed'] = clone $el->class("icon icon-disputed")->title("Disputed"); $grid['status']->replacement[''] = clone $el->class("icon icon-no-orders")->title("Without orders"); // by callback(s) $grid['creditLimit']->formatCallback[] = 'Helpers::currency'; /**** add some actions ****/ $grid->addActionColumn('Actions')->getHeaderPrototype()->addStyle('width: 98px'); $icon = Html::el('span'); $grid->addAction('Copy', 'Customer:copy', clone $icon->class('icon icon-copy')); $grid->addAction('Detail', 'Customer:detail', clone $icon->class('icon icon-detail')); $grid->addAction('Edit', 'Customer:edit', clone $icon->class('icon icon-edit')); $grid->addAction('Delete', 'Customer:delete', clone $icon->class('icon icon-del')); return $grid; }
public function createComponentDatagridRoles($name) { $grid = new DataGrid($this, $name); $model = new UsersModuleModel(); $grid->bindDataTable($model->getRolesDs()); $grid->keyName = 'id'; $grid->addColumn('name', 'Name')->addFilter(); $grid->addActionColumn('Actions'); $grid->addAction('Permissions', 'editPermissions!', Html::el('span')->class('icon icon-edit'), $useAjax = TRUE); $grid->addAction('Delete', 'confirmForm:confirmDelete!', Html::el('span')->class('icon icon-delete'), $useAjax = TRUE); return $grid; }
protected function createComponentClosedTickets() { $grid = new DataGrid(); $grid->bindDataTable(TicketsModel::getClosedTickets(UsersModel::getDepartment($this->user->getIdentity()->id))); $grid->addColumn('ticketId', 'Tiket')->addFilter(); $grid->addColumn('priority', 'Priorita')->addFilter(); $grid->addColumn('subject', 'Předmět')->addFilter(); $grid->addColumn('name', 'Autor')->addFilter(); $grid->addColumn('status', 'Status')->addSelectboxFilter(array('Uzavřený' => 'Uzavřený', 'Otevřený' => 'Otevřený')); $grid->addColumn('updated', 'Časová značka')->addFilter(); $grid->addActionColumn('Akce'); $grid->addAction('Zobrazit', 'showTicket', Html::el('span')->setText('Zobrazit'), $useAjax = FALSE); $grid->multiOrder = FALSE; // order by one column only $grid->displayedItems = array(10, 20, 50, 75, 100, 500, 1000); // roletka pro výběr počtu řádků na stránku $grid->keyName = 'id'; $grid['updated']->formatCallback[] = array($this, 'updatedFormat'); return $grid; }