Compare commits

...

3 Commits

6 changed files with 107 additions and 169 deletions

View File

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

View File

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

View File

@ -3,11 +3,6 @@
<!--end::Table--> <!--end::Table-->
{{-- Inject Scripts --}} {{-- Inject Scripts --}}
@push('scripts') @section('scripts')
{{ $dataTable->scripts() }} {{ $dataTable->scripts() }}
<script> @endsection
document.getElementById('search').addEventListener('keyup', function () {
window.LaravelDataTables['audit-log-table'].search(this.value).draw();
});
</script>
@endpush

View File

@ -1,29 +1,7 @@
<x-default-layout> <x-default-layout>
@section('title')
Audit Logs
@endsection
@section('breadcrumbs')
{{Breadcrumbs::render('logs.audit') }}
@endsection
<!--begin::Card--> <!--begin::Card-->
<div class="card"> <div class="card">
<!--begin::Card header-->
<div class="card-header border-0 pt-6">
<!--begin::Card title-->
<div class="card-title">
<!--begin::Search-->
<div class="d-flex align-items-center position-relative my-1">
{!! getIcon('magnifier','fs-3 position-absolute ms-5') !!}
<input type="text" data-kt-user-table-filter="search" class="form-control form-control-solid w-250px ps-13" placeholder="Search Audit Logs" id="search"/>
</div>
<!--end::Search-->
</div>
<!--begin::Card title-->
</div>
<!--end::Card header-->
<!--begin::Card body--> <!--begin::Card body-->
<div class="card-body pt-6"> <div class="card-body pt-6">
@include('logs::audit._table') @include('logs::audit._table')

View File

@ -3,11 +3,6 @@
<!--end::Table--> <!--end::Table-->
{{-- Inject Scripts --}} {{-- Inject Scripts --}}
@push('scripts') @section('scripts')
{{ $dataTable->scripts() }} {{ $dataTable->scripts() }}
<script> @endsection
document.getElementById('search').addEventListener('keyup', function () {
window.LaravelDataTables['system-log-table'].search(this.value).draw();
});
</script>
@endpush

View File

@ -1,29 +1,7 @@
<x-default-layout> <x-default-layout>
@section('title')
System Logs
@endsection
@section('breadcrumbs')
{{ Breadcrumbs::render('logs.system') }}
@endsection
<!--begin::Card--> <!--begin::Card-->
<div class="card"> <div class="card">
<!--begin::Card header-->
<div class="card-header border-0 pt-6">
<!--begin::Card title-->
<div class="card-title">
<!--begin::Search-->
<div class="d-flex align-items-center position-relative my-1">
{!! getIcon('magnifier','fs-3 position-absolute ms-5') !!}
<input type="text" data-kt-user-table-filter="search" class="form-control form-control-solid w-250px ps-13" placeholder="Search System Logs" id="search"/>
</div>
<!--end::Search-->
</div>
<!--begin::Card title-->
</div>
<!--end::Card header-->
<!--begin::Card body--> <!--begin::Card body-->
<div class="card-body pt-6"> <div class="card-body pt-6">
@include('logs::system._table') @include('logs::system._table')