Update Datatables

This commit is contained in:
Daeng Deni Mardaeni 2023-08-23 15:16:56 +07:00
parent e379cfbe6b
commit d5ea509e94
2 changed files with 107 additions and 101 deletions

View File

@ -2,7 +2,10 @@
namespace Modules\Logs\DataTables;
use Illuminate\Database\Eloquent\Builder as QueryBuilder;
use Spatie\Activitylog\Models\Activity;
use Yajra\DataTables\EloquentDataTable;
use Yajra\DataTables\Html\Builder as HtmlBuilder;
use Yajra\DataTables\Html\Column;
use Yajra\DataTables\Services\DataTable;
@ -11,43 +14,41 @@
/**
* Build DataTable class.
*
* @param mixed $query Results from query() method.
* @param QueryBuilder $query Results from query() method.
*
* @return \Yajra\DataTables\DataTableAbstract
*
*/
public function dataTable($query)
public function dataTable(QueryBuilder $query)
: EloquentDataTable
{
return datatables()
->eloquent($query)
->rawColumns(['description', 'properties', 'action'])
->editColumn('id', function (Activity $model) {
return $model->id;
})
->editColumn('subject_id', function (Activity $model) {
if (!isset($model->subject)) {
return '';
}
return (new EloquentDataTable($query))->rawColumns([
'description',
'properties',
'action'
])->editColumn('id', function (Activity $model) {
return $model->id;
})->editColumn('subject_id', function (Activity $model) {
if (!isset($model->subject)) {
return '';
}
if (isset($model->subject->name)) {
return $model->subject->name ?? $model->subject->user()->first()->name;
}
if (isset($model->subject->name)) {
return $model->subject->name ?? $model->subject->user()->first()->name;
}
return "-";//$model->subject->user()->first()->name;
})
->editColumn('causer_id', function (Activity $model) {
return $model->causer ? $model->causer->name : __('System');
})
->editColumn('properties', function (Activity $model) {
$content = $model->properties;
return "-";//$model->subject->user()->first()->name;
})->editColumn('causer_id', function (Activity $model) {
return $model->causer ? $model->causer->name : __('System');
})->editColumn('properties', function (Activity $model) {
$content = $model->properties;
return view('logs::audit._details', compact('content'));
})
->editColumn('created_at', function (Activity $model) {
return $model->created_at->format('d M, Y H:i:s');
})
->addColumn('action', function (Activity $model) {
return view('logs::audit._action-menu', compact('model'));
});
return view('logs::audit._details', compact('content'));
})->editColumn('created_at', function (Activity $model) {
return $model->created_at->format('d M, Y H:i:s');
})->addColumn('action', function (Activity $model) {
return view('logs::audit._action-menu', compact('model'));
});
}
/**
@ -58,6 +59,7 @@
* @return \Illuminate\Database\Eloquent\Builder
*/
public function query(Activity $model)
: QueryBuilder
{
return $model->newQuery();
}
@ -68,20 +70,21 @@
* @return \Yajra\DataTables\Html\Builder
*/
public function html()
: HtmlBuilder
{
return $this->builder()
->setTableId('audit-log-table')
->columns($this->getColumns())
->minifiedAjax()
->stateSave(true)
->orderBy(6)
->responsive()
->autoWidth(false)
->parameters([
'scrollX' => false,
'drawCallback' => 'function() { KTMenu.createInstances(); }',
])
->addTableClass('align-middle table-row-dashed fs-6 gy-5');
->setTableId('audit-log-table')
->columns($this->getColumns())
->minifiedAjax()
->stateSave(true)
->orderBy(6)
->responsive()
->autoWidth(false)
->parameters([
'scrollX' => false,
'drawCallback' => 'function() { KTMenu.createInstances(); }',
])
->addTableClass('align-middle table-row-dashed fs-6 gy-5');
}
/**
@ -90,6 +93,7 @@
* @return array
*/
protected function getColumns()
: array
{
return [
Column::make('id')->title('Log ID'),
@ -100,10 +104,10 @@
Column::make('causer_id')->title(__('Causer')),
Column::make('created_at'),
Column::computed('action')
->exportable(false)
->printable(false)
->addClass('text-center')
->responsivePriority(-1),
->exportable(false)
->printable(false)
->addClass('text-center')
->responsivePriority(-1),
Column::make('properties')->addClass('none'),
];
}

View File

@ -2,10 +2,14 @@
namespace Modules\Logs\DataTables;
use Illuminate\Database\Eloquent\Builder as QueryBuilder;
use Illuminate\Support\Collection;
use Illuminate\Support\Str;
use Jackiedo\LogReader\Exceptions\UnableToRetrieveLogFilesException;
use Jackiedo\LogReader\LogReader;
use Spatie\Activitylog\Models\Activity;
use Yajra\DataTables\EloquentDataTable;
use Yajra\DataTables\Html\Builder as HtmlBuilder;
use Yajra\DataTables\Html\Column;
use Yajra\DataTables\Services\DataTable;
@ -14,54 +18,49 @@
/**
* Build DataTable class.
*
* @param mixed $query Results from query() method.
* @param QueryBuilder $query Results from query() method.
*
* @return \Yajra\DataTables\DataTableAbstract
*/
public function dataTable($query)
public function dataTable(QueryBuilder $query)
: EloquentDataTable
{
return datatables()
->collection($query)
->rawColumns(['action', 'level'])
->editColumn('id', function (Collection $model) {
return Str::limit($model->get('id'), 5, '');
})
->editColumn('file_path', function (Collection $model) {
return Str::limit($model->get('file_path'));
})
->editColumn('message', function (Collection $model) {
return Str::limit($model->get('context')->message, 95);
})
->editColumn('date', function (Collection $model) {
return $model->get('date')->format('d M, Y H:i:s');
})
->editColumn('level', function (Collection $model) {
$styles = [
'emergency' => 'danger',
'alert' => 'warning',
'critical' => 'danger',
'error' => 'danger',
'warning' => 'warning',
'notice' => 'success',
'info' => 'info',
'debug' => 'primary',
];
$style = 'info';
if (isset($styles[$model->get('level')])) {
$style = $styles[$model->get('level')];
}
$value = $model->get('level');
return (new EloquentDataTable($query))->rawColumns([
'action',
'level'
])->editColumn('id', function (Collection $model) {
return Str::limit($model->get('id'), 5, '');
})->editColumn('file_path', function (Collection $model) {
return Str::limit($model->get('file_path'));
})->editColumn('message', function (Collection $model) {
return Str::limit($model->get('context')->message, 95);
})->editColumn('date', function (Collection $model) {
return $model->get('date')->format('d M, Y H:i:s');
})->editColumn('level', function (Collection $model) {
$styles = [
'emergency' => 'danger',
'alert' => 'warning',
'critical' => 'danger',
'error' => 'danger',
'warning' => 'warning',
'notice' => 'success',
'info' => 'info',
'debug' => 'primary',
];
$style = 'info';
if (isset($styles[$model->get('level')])) {
$style = $styles[$model->get('level')];
}
$value = $model->get('level');
return '<div class="badge badge-light-' . $style . ' fw-bolder">' . $value . '</div>';
})
->editColumn('context', function (Collection $model) {
$content = $model->get('context');
return '<div class="badge badge-light-' . $style . ' fw-bolder">' . $value . '</div>';
})->editColumn('context', function (Collection $model) {
$content = $model->get('context');
return view('logs::system._details', compact('content'));
})
->addColumn('action', function (Collection $model) {
return view('logs::system._action-menu', compact('model'));
});
return view('logs::system._details', compact('content'));
})->addColumn('action', function (Collection $model) {
return view('logs::system._action-menu', compact('model'));
});
}
/**
@ -72,6 +71,7 @@
* @return Collection
*/
public function query(LogReader $model)
: QueryBuilder
{
$data = collect();
$model->setLogPath(storage_path('logs'));
@ -96,17 +96,18 @@
* @return \Yajra\DataTables\Html\Builder
*/
public function html()
: HtmlBuilder
{
return $this->builder()
->setTableId('system-log-table')
->columns($this->getColumns())
->minifiedAjax()
->stateSave(true)
->orderBy(3)
->responsive()
->autoWidth(false)
->parameters(['scrollX' => false])
->addTableClass('align-middle table-row-dashed fs-6 gy-5');
->setTableId('system-log-table')
->columns($this->getColumns())
->minifiedAjax()
->stateSave(true)
->orderBy(3)
->responsive()
->autoWidth(false)
->parameters(['scrollX' => false])
->addTableClass('align-middle table-row-dashed fs-6 gy-5');
}
/**
@ -115,6 +116,7 @@
* @return array
*/
protected function getColumns()
: array
{
return [
Column::make('id')->title('Log ID')->width(50),
@ -122,10 +124,10 @@
Column::make('level'),
Column::make('date')->width(130),
Column::computed('action')
->exportable(false)
->printable(false)
->addClass('text-center')
->responsivePriority(-1),
->exportable(false)
->printable(false)
->addClass('text-center')
->responsivePriority(-1),
Column::make('environment')->addClass('none'),
Column::make('file_path')->title(__('Log Path'))->addClass('none'),
Column::make('context')->addClass('none'),