'tr'] public $colReorder = true; public $fixedColumns = false; /** * Build DataTable class. * * @param mixed $query Results from query() method. * @return \Yajra\DataTables\DataTableAbstract */ public function dataTable($query) { return $this->modifier(datatables()->eloquent($query)); } public function modifier($datatables) { return $this->addButtons($datatables->setRowId('{{$id}}')); } /** * Add buttons DataTable class. * * @param mixed $query Results from query() method. * @return \Yajra\DataTables\DataTableAbstract */ public function addButtons($datatables) { return $datatables->addColumn('action', $this->getHtmlButtons()); } public function getHtmlButtons() { $buttons = ''; // $buttons .= ''; // $buttons .= ''; $buttons .= ''; $buttons .= ''; return $buttons; // return view('components.datatables.buttons.row_action'); } public function makeColumnButtons() { return Column::computed('action') ->title('') ->exportable(false) ->printable(false) ->searchable(false) ->addClass('text-center text-nowrap'); } /** * Get query source of dataTable. * * @param \App\Family $model * @return \Illuminate\Database\Eloquent\Builder */ public function buildQuery($model) { return $model->newQuery(); } /** * Optional method if you want to use html builder. * * @return \Yajra\DataTables\Html\Builder */ public function html() { return $this->buildHtml(strtolower($this->model_name) . '-table'); } /** * Optional method if you want to use html builder. * * @return \Yajra\DataTables\Html\Builder */ public function buildHtml($id) { return $this->builder() ->setTableId($id) ->parameters($this->getParameters()) ->columns($this->getColumns()) ->ajax(['data' => "function(d) { d.filters = $('#filters').serializeJSON(); }"]) ->dom($this->getDom()) ->orderBy(0,'asc') ->buttons($this->getButtons()); } public function getButtons() { return [ Button::make('export'), Button::make('print'), Button::make('colvis'), Button::make('columnsToggle') ]; } public function getParameters() { return [ 'pageLength' => 5, 'scrollX' => true, 'scrollCollapse' => true, 'colReorder' => $this->colReorder, 'rowReorder' => $this->rowReorder, 'fixedColumns' => $this->fixedColumns, ]; } public function getDom() { $dom = ''; // $dom .= $this->getDatatablesHeaderDefault(); $dom .= "rt"; $dom .= $this->getDatatablesFooterDefault(); return $dom; } public function getDatatablesHeader() { return view('components.datatables.header'); } public function getDatatablesHeaderDefault() { // return "
"; /* $dom = 't<"row datatable-pager light"<"col-md-12"' . '<"datatable-more-export-buttons filter-buttons pull-left">' . '<"datatable-more-export-favorites-buttons filter-buttons pull-left">' . '<"datatable-more-export-basket-buttons filter-buttons pull-left">' . '<"datatable-download-buttons filter-buttons pull-left">' . '>>' . '<"dt-toolbar-footer"<"col"i><"col pull-right datatable-pager light nopadding-right"p>>'; */ $dom = "<'row dt-toolbar-header'<'col-lg-4'l><'col-lg-4'B><'col-lg-4 text-right add'f>>"; return $dom; // return 't<"row datatable-pager light"<"col-md-12"<"datatable-more-export-buttons filter-buttons pull-left"><"datatable-more-export-favorites-buttons filter-buttons pull-left"><"datatable-more-export-basket-buttons filter-buttons pull-left"><"datatable-download-buttons filter-buttons pull-left">>><"dt-toolbar-footer"<"col-md-6"i><"col-md-6 pull-right datatable-pager light nopadding-right"p>>'; } public function getDatatablesFooterDefault() { return "<'row pt-3 dt-toolbar-footer'<'col-md-6'i><'col-md-6'p>>"; } /** * Get filename for export. * * @return string */ protected function filename() { return self::buildFilename($this->model_name); } /** * Get filename for export. * * @return string */ protected function buildFilename($name) { return $name . '_' . date('YmdHis'); } }