コード例 #1
0
 /**
  * @param Paginator $value
  *
  * @return array
  */
 protected function serializeEloquentPaginatedResource(Paginator $value)
 {
     $items = [];
     foreach ($value->items() as $v) {
         $items[] = $this->serializeObject($v);
     }
     return [self::MAP_TYPE => 'array', self::SCALAR_VALUE => $items];
 }
コード例 #2
0
 /**
  * @param Paginator $paginator
  * @return array
  */
 private static function createPaginationMeta(Paginator $paginator)
 {
     $meta = ['page' => $paginator->currentPage(), 'per_page' => $paginator->perPage(), 'count' => count($paginator->items())];
     if ($paginator instanceof LengthAwarePaginator) {
         $meta['total'] = $paginator->total();
         $meta['pages'] = $paginator->lastPage() ?: 1;
     }
     return $meta;
 }
コード例 #3
0
 /**
  * Respond with a pagination response.
  *
  * @param \Illuminate\Pagination\Paginator $paginator
  * @param \Illuminate\Http\Request         $request
  *
  * @return \Illuminate\Http\JsonResponse
  */
 protected function paginator(Paginator $paginator, Request $request)
 {
     foreach ($request->query as $key => $value) {
         if ($key != 'page') {
             $paginator->addQuery($key, $value);
         }
     }
     $pagination = ['pagination' => ['total' => (int) $paginator->total(), 'count' => count($paginator->items()), 'per_page' => (int) $paginator->perPage(), 'current_page' => (int) $paginator->currentPage(), 'total_pages' => (int) $paginator->lastPage(), 'links' => ['next_page' => $paginator->nextPageUrl(), 'previous_page' => $paginator->previousPageUrl()]]];
     $items = $paginator->getCollection();
     if ($sortBy = $request->get('sort')) {
         $direction = $request->has('order') && $request->get('order') == 'desc';
         $items = $items->sortBy($sortBy, SORT_REGULAR, $direction);
     }
     return $this->setMetaData($pagination)->setData(AutoPresenter::decorate($items->values()))->respond();
 }
コード例 #4
0
ファイル: DouyasiPresenter.php プロジェクト: ycms/framework
 /**
  * 是否需要分页
  *
  * @return bool
  */
 public function hasPages()
 {
     return $this->paginator->hasPages() && count($this->paginator->items()) > 0;
 }
コード例 #5
0
 /**
  * Render a table showing jobs.
  *
  * @param Paginator $jobs
  *
  * @return mixed
  */
 protected function renderJobsTable(Paginator $jobs)
 {
     return Std::firstBias(count($jobs->items()) > 0, function () use($jobs) {
         return new SimpleTable(['ID', 'Task', 'State', 'Runs', 'Created At', 'Duration'], Std::map(function (Job $job) {
             return [$job->id, $job->state, $job->task, $job->attempts, $job->created_at->toDayDateTimeString(), $job->getExecutionTime()];
         }, $jobs->items()));
     }, function () {
         return new CardBlock(['class' => 'card-block text-center'], [new Paragraph([], [new Italic(['class' => 'fa fa-4x fa-search text-light'])]), 'No jobs found matching the specified criteria.']);
     });
 }
コード例 #6
0
 /**
  * Respond with a pagination response.
  *
  * @param \Illuminate\Pagination\Paginator $paginator
  * @param \Illuminate\Http\Request         $request
  *
  * @return \Illuminate\Http\JsonResponse
  */
 protected function paginator(Paginator $paginator, Request $request)
 {
     foreach ($request->query as $key => $value) {
         if ($key != 'page') {
             $paginator->addQuery($key, $value);
         }
     }
     $pagination = ['pagination' => ['total' => $paginator->total(), 'count' => count($paginator->items()), 'per_page' => $paginator->perPage(), 'current_page' => $paginator->currentPage(), 'total_pages' => $paginator->lastPage(), 'links' => ['next_page' => $paginator->nextPageUrl(), 'previous_page' => $paginator->previousPageUrl()]]];
     return $this->setMetaData($pagination)->setData(AutoPresenter::decorate($paginator->getCollection()))->respond();
 }