/** * 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; }
protected function createComponentWorks($name) { //url as link, //title, $grid = new DataGrid(); $grid->bindDataTable(dibi::getConnection()->dataSource('SELECT url as link, authorUrl, title, award, year,', Model::sqlWorkClassName() . 'as workClass,', 'type, pages, [read] FROM [works] JOIN [authors] on author = authorId WHERE authorUrl=%s', $this->id)); $grid->addColumn('title', 'Název')->addDefaultSorting('asc')->getCellPrototype()->addClass('first'); $grid->addNumericColumn('year', 'Rok')->getCellPrototype()->style('text-align: center;'); $grid->addColumn('workClass', 'Třída')->getCellPrototype()->style('text-align: center;'); $grid->addColumn('award', 'Ocenění'); $grid->addColumn('type', 'Typ'); $grid->addNumericColumn('pages', 'Stran')->getCellPrototype()->style('text-align: right'); $grid->addColumn('read', 'Čtenost')->getCellPrototype()->style('text-align: right;'); /* $grid->addActionColumn('Akce'); $grid['title']->addFilter(); $grid['authorName']->addFilter(); $grid['year']->addSelectboxFilter(); $grid['award']->addSelectboxFilter(); $grid['type']->addSelectboxFilter(); $grid['pages']->addSelectboxFilter(); */ $grid->itemsPerPage = 0; $grid->multiOrder = FALSE; $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, 'gridOnCellRendered'); //$grid->rememberState = TRUE; return $grid; //$this->addComponent($grid, $name); }
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); }
public function createComponentStudentsGrid($name) { $grid = new DataGrid($this, $name); $examStudentList = ExamStudentListManager::getList($this->exam_id); $grid->bindDataTable($examStudentList->dataSource); $grid->addNumericColumn('id', 'Num'); $pos = 0; $grid['id']->formatCallback[] = function ($value, DibiRow $data) use(&$pos) { return $pos = $pos + 1; }; $grid->addColumn('name', 'Name'); $grid['name']->formatCallback[] = function ($value, DibiRow $data) { return $data->surname . ' ' . $data->name; }; return $grid; }
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; }