/** * Generates a widget to show a html grid * * @param \Engine\Crud\Grid $grid * @return string */ public static function _(\Engine\Crud\Grid $grid) { $code = ' <h1>' . $grid->getTitle() . '</h1> <table id="' . $grid->getId() . '" autowidth="true" class="' . $grid->getAttrib('class') . ' table table-bordered table-hover">'; return $code; }
/** * Generates grid table colums head * * @param \Engine\Crud\Grid $grid * @return string */ public static function _(Grid $grid) { $code = ' <thead> <tr>'; foreach ($grid->getFields() as $column) { if ($column instanceof Field) { $columnCode = ' <th width="' . $column->getWidth() . '">'; if ($column->isSortable()) { $columnCode .= self::sortLink($column); } elseif ($column->isHidden()) { $columnCode .= ''; } else { $columnCode .= $column->getTitle(); } } else { $columnCode = ' <th>'; } $columnCode .= ' </th>'; $code .= $columnCode; } $code .= ' </tr> </thead>'; return $code; }
/** * Generates a widget to show a dojo grid layout * * @param \Engine\Crud\Grid $grid * @return string */ public static function _(\Engine\Crud\Grid $grid) { $gridDivId = 'gridDiv_' . $grid->getId(); $code = ' <div id="' . $gridDivId . '"></div> '; return $code; }
/** * Return data array * * @return array */ public function getData($dataSource) { $limit = $this->_grid->getLimit(); //$extraLimit = $this->_grid->getExtraLimit(); $extraLimit = 100; $page = $this->_grid->getPage(); $extraPage = (int) ceil($limit * $page / $extraLimit); $paginator = $this->_getPaginator($dataSource, $extraLimit, $extraPage); $items = []; $position = $limit * ($page - 1) - $extraLimit * ($extraPage - 1); if ($paginator->total_items > 0) { for ($i = $position; $i < $position + $limit; ++$i) { if (!isset($paginator->items[$i])) { break; } $items[] = $paginator->items[$i]; } } $data = ['data' => $items, 'page' => $page, 'limit' => $limit, 'mess_now' => count($items)]; if ($this->_grid->isCountQuery()) { $data['pages'] = (int) ceil($paginator->total_items / $limit); $data['lines'] = $paginator->total_items; } return $data; }
/** * Return current grid sort direction param. * * @return string */ public function toogleSortDirection() { if ($this->isSorted()) { return $this->_grid->toogleSortDirection(); } return $this->_sortDirection; }
/** * Generates grid table rows * * @param \Engine\Crud\Grid $grid * @return string */ public static function _(Grid $grid) { $code = ' <tbody>'; $data = $grid->getDataWithRenderValues(); foreach ($data['data'] as $row) { $rowCode = ' <tr>'; foreach ($row as $value) { $rowCode .= ' <td>' . $value . '</td>'; } $rowCode .= ' </tr>'; $code .= $rowCode; } $code .= ' </tbody>'; return $code; }
/** * Generates a widget to show a dojo grid layout * * @param \Engine\Crud\Grid $grid * @return string */ public static function _(\Engine\Crud\Grid $grid) { $code = ' /*set up layout*/ var layout = [ '; $columns = []; foreach ($grid->getColumns() as $column) { $columnData = []; if ($column instanceof \Engine\Crud\Grid\Column) { $columnData['name'] = $column->getTitle(); $columnData['field'] = $column->getKey(); $columnData['width'] = $column->getWidth() . "px"; } $columns[] = $columnData; } $code .= json_encode($columns); $code .= ' ];'; return $code; }
/** * Generates a widget to show a dojo grid datastore * * @param \Engine\Crud\Grid $grid * @return string */ public static function _(\Engine\Crud\Grid $grid) { $code = ' /*set up data store*/ var data = { identifier: "id", items: [] }; var data_list = [ '; $code .= $grid->toJson(); $code .= ' ]; var rows = ' . $grid->getCountCurrentPage() . '; for (var i = 0, l = data_list.length; i < rows; i++) { data.items.push(lang.mixin({ id: i+1 }, data_list[i%l])); } var store = new ItemFileWriteStore({data: data}); '; return $code; }
/** * Generates a widget to show a html grid * * @param \Engine\Crud\Grid $grid * @return string */ public static function _(\Engine\Crud\Grid $grid) { $code = ' require([\'dojo/_base/lang\', \'dojox/grid/DataGrid\', \'dojo/data/ItemFileWriteStore\', \'dojo/dom\', \'dojo/domReady!\'], function(lang, DataGrid, ItemFileWriteStore, dom) { '; $gridDivId = 'gridDiv_' . $grid->getId(); $code .= ' /*create a new grid*/ var grid = new DataGrid({ id: \'' . $grid->getId() . '\', store: store, structure: layout, rowSelector: \'20px\' }); /*append the new grid to the div*/ grid.placeAt("' . $gridDivId . '"); /*Call startup() to render the grid*/ grid.startup(); });'; return '<script>' . $code; }
/** * Generates a widget to show a html grid * * @param \Engine\Crud\Grid $grid * @return string */ public static function _(\Engine\Crud\Grid $grid) { $filter = $grid->getFilter(); return $filter->render(); }
/** * Generates grid paginate code * * @param \Engine\Crud\Grid $grid * @return string */ public static function _(Grid $grid) { $action = $grid->getAction(); $pages = $grid->getPaginateParams(); $sortParams = $grid->getSortParams(); $sortPageParamName = $grid->getPageParamName(); if ($sortParams) { foreach ($sortParams as $param => $value) { $action = self::setUrlParam($action, $param, $value); } } $code = "\n <div class=\"pagination\">\n <ul>"; if ($pages['first']) { $link = self::setUrlParam($action, $sortPageParamName, $pages['first']); //$first = '<li><a href="'.$link.'">First</a></li>'; $first = '<li><a href="' . $link . '"><span>«</span></a></li>'; } else { //$first = '<li><img src="/img/page_arrow_first.gif"/></li>'; //$first = '<li class="disabled"><a href="#">First</a></li>'; $first = '<li class="disabled"><a href="#"><span>«</span></a></li>'; } unset($pages['first']); if ($pages['prev']) { $link = self::setUrlParam($action, $sortPageParamName, $pages['prev']); //$prev = '<li><a href="'.$link.'"><img src="/img/page_arrow_prev.gif"/></a></li>'; $prev_w = '<li><a href="' . $link . '"><span>‹</span></a></li>'; } else { //$prev = '<li><img src="/img/page_arrow_prev.gif"/></li>'; //$prev_w = '<li>Prev</li>'; $prev_w = '<li class="disabled"><a href="#"><span>‹</span></a></li>'; } unset($pages['prev']); if ($pages['next']) { $link = self::setUrlParam($action, $sortPageParamName, $pages['next']); //$next = '<li><a href="'.$link.'"><img src="/img/page_arrow_next.gif"/></a></li>'; $next_w = '<li><a href="' . $link . '"><span>›</span></a></li>'; } else { //$next = '<li><img src="/img/page_arrow_next.gif"/></li>'; $next_w = '<li class="disabled"><a href="#"><span>›</span></a></li>'; } unset($pages['next']); if ($pages['last']) { $link = self::setUrlParam($action, $sortPageParamName, $pages['last']); //$last = '<li><a href="'.$link.'"><img src="/img/page_arrow_last.gif"/></a></li>'; //$last_w = '<li><a href="'.$link.'">Last</a></li>'; $last_w = '<li><a href="' . $link . '"><span>»</span></a></li>'; } else { //$last = '<li><img src="/img/page_arrow_last.gif"/></li>'; //$last_w = '<li>Last</li>'; $last_w = '<li class="disabled"><a href="#"><span>»</span></a></li>'; } unset($pages['last']); $code .= $first . $prev_w; //$prev_w.$first.$prev; foreach ($pages as $page => $status) { if ($status == 'now') { // $code .= '<li class="page_now">'.$page.'</li>'; $code .= '<li class="active"><a href="#"><span>' . $page . '</span></a></li>'; } else { $link = self::setUrlParam($action, $sortPageParamName, $page); $code .= '<li class="page_link"><a href="' . $link . '"><span>' . $page . '</span></a></li>'; } } $code .= $next_w . $last_w; //$next.$last.$next_w; $code .= "\n </ul>\n </div>"; return $code; }