App\services\DatatableService::createDatatable PHP Method

createDatatable() public method

public createDatatable ( EntityDatatable $datatable, $query ) : Illuminate\Http\JsonResponse
$datatable App\Ninja\Datatables\EntityDatatable
$query
return Illuminate\Http\JsonResponse
    public function createDatatable(EntityDatatable $datatable, $query)
    {
        $table = Datatable::query($query);
        if ($datatable->isBulkEdit) {
            $table->addColumn('checkbox', function ($model) {
                $can_edit = Auth::user()->hasPermission('edit_all') || isset($model->user_id) && Auth::user()->id == $model->user_id;
                return !$can_edit ? '' : '<input type="checkbox" name="ids[]" value="' . $model->public_id . '" ' . Utils::getEntityRowClass($model) . '>';
            });
        }
        foreach ($datatable->columns() as $column) {
            // set visible to true by default
            if (count($column) == 2) {
                $column[] = true;
            }
            list($field, $value, $visible) = $column;
            if ($visible) {
                $table->addColumn($field, $value);
                $orderColumns[] = $field;
            }
        }
        if (count($datatable->actions())) {
            $this->createDropdown($datatable, $table);
        }
        return $table->orderColumns($orderColumns)->make();
    }

Usage Example

 /**
  * @param $clientPublicId
  * @param $search
  * @return \Illuminate\Http\JsonResponse
  */
 public function getDatatable($search)
 {
     // we don't support bulk edit and hide the client on the individual client page
     $datatable = new ExpenseCategoryDatatable();
     $query = $this->categoryRepo->find($search);
     return $this->datatableService->createDatatable($datatable, $query);
 }
All Usage Examples Of App\services\DatatableService::createDatatable