Example #1
0
 /**
  * @param null $params
  * @return array
  */
 public function tableData($params = null)
 {
     $with = $this->modelItem->getWith();
     if ($this->modelItem->isWithJoinEnabled()) {
         $baseQuery = $this->instance->newQuery()->getQuery();
         /** @var WithJoinEloquentBuilder $query */
         $query = new WithJoinEloquentBuilder($baseQuery);
         if ($this->modelItem->isAsync()) {
             $query->references($with);
         }
     } else {
         $query = $this->instance->newQuery();
     }
     $query->setModel($this->instance)->with($with);
     $query = $this->instance->applyGlobalScopes($query);
     $this->applyFilters($query);
     $totalCount = $query->count();
     if (!is_null($params)) {
         if (trim($params['search']) != '') {
             $search = '%' . $params['search'] . '%';
             $this->addSearchToQuery($query, $search);
         }
         $totalCount = $query->count();
         if ($params['limit'] != -1) {
             $query->offset($params['offset']);
             $query->limit($params['limit']);
         }
         if (!$this->instance instanceof ModelWithOrderFieldInterface) {
             $query->getQuery()->orders = null;
         }
         $query->orderBy($params['orderBy'], $params['orderDest']);
     }
     $rows = $query->get();
     return compact('rows', 'totalCount');
 }
Example #2
0
 /**
  * @return View
  */
 public function table()
 {
     if ($result = $this->checkCustomActionCall()) {
         return $result;
     }
     if (Input::get('datatable_request')) {
         return $this->asyncTable();
     }
     $this->queryState->save();
     $columns = $this->modelItem->getColumns();
     $unsortableColumns = [];
     $nameToSequanceNumber = [];
     foreach ($columns as $i => $column) {
         $nameToSequanceNumber[$column->getName()] = $i;
         if ($column->isSortable() == false) {
             $unsortableColumns[] = $i;
         }
     }
     $viewFilters = $this->modelItem->getViewFilters();
     $jsFilters = [];
     foreach ($viewFilters as $i => $filter) {
         $filterData = ['type' => $filter->getFilterType(), 'sequanceNumber' => isset($nameToSequanceNumber[$filter->getName()]) ? $nameToSequanceNumber[$filter->getName()] : null];
         if ($filter->getFilterType() == \SleepingOwl\Admin\ViewFilters\ViewFilter\Date::TYPE) {
             $filterData['rule'] = $filter->getRule();
         }
         $jsFilters[] = $filterData;
     }
     $data = ['title' => $this->modelItem->getTitle(), 'columns' => $columns, 'viewFilters' => $viewFilters, 'newEntryRoute' => $this->admin_router->routeToCreate($this->modelName, Input::query()), 'modelItem' => $this->modelItem, 'unsortableColumns' => $unsortableColumns, 'jsFilters' => $jsFilters, 'rows' => []];
     if (!$this->modelItem->isAsync()) {
         $tableData = [];
         try {
             $tableData = $this->modelRepository->tableData();
         } catch (ModelNotFoundException $e) {
             return $this->pageNotFound();
         }
         $data = array_merge($data, $tableData);
     }
     $data['subtitle'] = $this->modelRepository->getSubtitle();
     return $this->makeView('model.table', $data);
 }
Example #3
0
 /**
  * @return View
  */
 public function table()
 {
     if ($result = $this->checkCustomActionCall()) {
         return $result;
     }
     if (Input::get('datatable_request')) {
         return $this->asyncTable();
     }
     $this->queryState->save();
     $data = ['title' => $this->modelItem->getTitle(), 'columns' => $this->modelItem->getColumns(), 'newEntryRoute' => $this->admin_router->routeToCreate($this->modelName, Input::query()), 'modelItem' => $this->modelItem, 'rows' => []];
     if (!$this->modelItem->isAsync()) {
         $tableData = [];
         try {
             $tableData = $this->modelRepository->tableData();
         } catch (ModelNotFoundException $e) {
             App::abort(404);
         }
         $data = array_merge($data, $tableData);
     }
     $data['subtitle'] = $this->modelRepository->getSubtitle();
     return $this->makeView('model.table', $data);
 }