Beispiel #1
0
 /**
  * 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;
 }
Beispiel #2
0
 /**
  * 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;
 }
Beispiel #3
0
    /**
     * 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;
    }
Beispiel #4
0
 /**
  * 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;
 }
Beispiel #5
0
 /**
  * Return current grid sort direction param.
  *
  * @return string
  */
 public function toogleSortDirection()
 {
     if ($this->isSorted()) {
         return $this->_grid->toogleSortDirection();
     }
     return $this->_sortDirection;
 }
Beispiel #6
0
 /**
  * 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;
 }
Beispiel #7
0
 /**
  * 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;
 }
Beispiel #8
0
 /**
  * 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;
 }
Beispiel #9
0
    /**
     * 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;
    }
Beispiel #10
0
 /**
  * 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();
 }
Beispiel #11
0
 /**
  * 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>&laquo;</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>&laquo;</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>&#8249;</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>&#8249;</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>&#8250;</span></a></li>';
     } else {
         //$next   = '<li><img src="/img/page_arrow_next.gif"/></li>';
         $next_w = '<li class="disabled"><a href="#"><span>&#8250;</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>&raquo;</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>&raquo;</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;
 }