[ 'data' => 'unlink', 'title' => '', 'data_type' => 'unlink', 'orderable' => false, 'searchable' => false, ] ]; /** * Default delete button * @var array */ protected $btnDelete = [ 'delete' => [ 'data' => 'delete', 'title' => '', 'data_type' => 'delete', 'orderable' => false, 'searchable' => false, ] ]; /** * Default checkbox button * * @var array */ protected $btnCheck_selection = [ 'check_select' => [ 'data' => 'check_select', 'class' => 'check_select', 'title' => '', 'data_type' => 'check_select', 'orderable' => false, 'searchable' => false, ] ]; protected $excludeFromExport = [ 'quick_edit','check_select','unlink' ]; protected $excludeFromPrint = [ 'quick_edit','check_select','unlink' ]; /** * Default quick edit button * * @var array */ protected $btnQuick_edit = [ 'quick_edit' => [ 'data' => 'quick_edit', 'title' => '', 'data_type' => 'quick_edit', 'orderable' => false, 'searchable' => false, ] ]; /** * Default quick show button * @var array */ protected $btnQuick_show = [ 'quick_show' => [ 'data' => 'quick_show', 'title' => '', 'data_type' => 'quick_show', 'orderable' => false, 'searchable' => false, ] ]; /** * Setup Select Model */ public function selectMode() { $this->tableSuffix = "_Select"; } public function applyLinks(EloquentDataTable $table, $route, $prefix = null) { $rawColumns = []; foreach ($this->getColumns() as $column => $properties) { $rawColumns[] = $column; $table->editColumn($column, function ($record) use ($column,$properties,$route,$prefix) { if ($properties['data_type'] == 'custom') { return isset($properties['value']) ? $properties['value'] : ''; } if ($properties['data_type'] == 'unlink') { $recordId = $record->id; $view = view('core::crud.relation.unlink'); $view->with('entityId', $this->entityId); $view->with('relationEntityId', $recordId); $view->with('unlink_route', $this->unlinkRoute); return $view; } if ($properties['data_type'] == 'delete') { $recordId = $record->id; $view = view('core::crud.relation.delete'); $view->with('entityId', $this->entityId); $view->with('relationEntityId', $recordId); $view->with('delete_route', $this->deleteRoute); return $view; } if ($properties['data_type'] == 'quick_edit') { $recordId = $record->id; $view = view('core::crud.relation.quick_edit'); $view->with('entityId', $this->entityId); $view->with('relationEntityId', $recordId); $view->with('editRouteAdditionalParams',$this->editRouteAdditionalParams); $view->with('edit_route', $this->editRoute); return $view; } if ($properties['data_type'] == 'quick_show') { $recordId = $record->id; $view = view('core::crud.relation.quick_show'); $view->with('entityId', $this->entityId); $view->with('relationEntityId', $recordId); $view->with('show_route', $this->showRoute); return $view; } if ($properties['data_type'] == 'check_select') { $recordId = $record->id; return ''; } return DataTableHelper::renderLink($column, $record, $properties, $route); }); } $table->rawColumns($rawColumns); } /** * @param $columnNumber * @return mixed */ protected function countFilterColumn($columnNumber) { if ($this->allowSelect || $this->allowUnlink) { return $columnNumber+1; } return $columnNumber; } /** * @param $entityClass * @param $entityId * @param $route */ public function setEntityData($entityClass, $entityId, $route) { $this->entityClass = $entityClass; $this->entityId = $entityId; $this->route = $route; } /** * Table Builder - this function can be override. * @param $tableId * @return \Yajra\DataTables\Html\Builder */ public function tableBuilder($tableId = null ) { try { $reflect = new \ReflectionClass($this); $tableId = $reflect->getShortName(); } catch (\Exception $exception) { } if ($this->request()->has('action')) { //Required for fix of print,export etc on related tables in module details return $this->builder() ->setTableId($tableId . $this->tableSuffix) ->columns($this->getColumns()) ->setTableAttribute('class', 'table table-hover') ->parameters([ 'dom' => 'lBfrtip', 'responsive' => false, 'stateSave' => true, 'filterDefinitions' => $this->getFilterDefinition(), 'headerFilters' => true, "lengthMenu" => [10, 25, 50, 100, 200, 500], 'buttons' => DataTableHelper::buttons(), 'regexp' => true, ]); } else { return $this->builder() ->setTableId($tableId . $this->tableSuffix) ->columns($this->getColumns()) ->minifiedAjax(route($this->route, ['entityId' => $this->entityId])) ->setTableAttribute('class', 'table table-hover') ->parameters([ 'dom' => 'lBfrtip', 'responsive' => false, 'stateSave' => true, 'filterDefinitions' => $this->getFilterDefinition(), 'filterRules' => $this->filterRules, 'headerFilters' => true, "lengthMenu" => [10, 25, 50, 100, 200, 500], 'buttons' => DataTableHelper::buttons(), 'regexp' => true, "deferLoading" => config('bap.defer_datatable') ]); } } }