Compare commits

...

3 Commits
sit ... master

Author SHA1 Message Date
Daeng Deni Mardaeni
4170ec198a update layout 2023-08-23 15:17:31 +07:00
Daeng Deni Mardaeni
ba5d98f3ee add breadcrumb 2023-08-23 15:17:09 +07:00
Daeng Deni Mardaeni
d5ea509e94 Update Datatables 2023-08-23 15:16:56 +07:00
7 changed files with 184 additions and 105 deletions

View File

@ -2,7 +2,10 @@
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;
@ -11,19 +14,21 @@
/** /**
* Build DataTable class. * Build DataTable class.
* *
* @param mixed $query Results from query() method. * @param QueryBuilder $query Results from query() method.
* *
* @return \Yajra\DataTables\DataTableAbstract * @return \Yajra\DataTables\DataTableAbstract
*
*/ */
public function dataTable($query) public function dataTable(QueryBuilder $query)
: EloquentDataTable
{ {
return datatables() return (new EloquentDataTable($query))->rawColumns([
->eloquent($query) 'description',
->rawColumns(['description', 'properties', 'action']) 'properties',
->editColumn('id', function (Activity $model) { 'action'
])->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 '';
} }
@ -33,19 +38,15 @@
} }
return "-";//$model->subject->user()->first()->name; return "-";//$model->subject->user()->first()->name;
}) })->editColumn('causer_id', function (Activity $model) {
->editColumn('causer_id', function (Activity $model) {
return $model->causer ? $model->causer->name : __('System'); return $model->causer ? $model->causer->name : __('System');
}) })->editColumn('properties', function (Activity $model) {
->editColumn('properties', function (Activity $model) {
$content = $model->properties; $content = $model->properties;
return view('logs::audit._details', compact('content')); return view('logs::audit._details', compact('content'));
}) })->editColumn('created_at', function (Activity $model) {
->editColumn('created_at', function (Activity $model) {
return $model->created_at->format('d M, Y H:i:s'); return $model->created_at->format('d M, Y H:i:s');
}) })->addColumn('action', function (Activity $model) {
->addColumn('action', function (Activity $model) {
return view('logs::audit._action-menu', compact('model')); return view('logs::audit._action-menu', compact('model'));
}); });
} }
@ -58,6 +59,7 @@
* @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();
} }
@ -68,6 +70,7 @@
* @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')
@ -90,6 +93,7 @@
* @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'),

View File

@ -2,10 +2,14 @@
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\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,28 +18,25 @@
/** /**
* Build DataTable class. * Build DataTable class.
* *
* @param mixed $query Results from query() method. * @param QueryBuilder $query Results from query() method.
* *
* @return \Yajra\DataTables\DataTableAbstract * @return \Yajra\DataTables\DataTableAbstract
*/ */
public function dataTable($query) public function dataTable(QueryBuilder $query)
: EloquentDataTable
{ {
return datatables() return (new EloquentDataTable($query))->rawColumns([
->collection($query) 'action',
->rawColumns(['action', 'level']) '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) {
->editColumn('file_path', function (Collection $model) {
return Str::limit($model->get('file_path')); return Str::limit($model->get('file_path'));
}) })->editColumn('message', function (Collection $model) {
->editColumn('message', function (Collection $model) {
return Str::limit($model->get('context')->message, 95); return Str::limit($model->get('context')->message, 95);
}) })->editColumn('date', function (Collection $model) {
->editColumn('date', function (Collection $model) {
return $model->get('date')->format('d M, Y H:i:s'); return $model->get('date')->format('d M, Y H:i:s');
}) })->editColumn('level', function (Collection $model) {
->editColumn('level', function (Collection $model) {
$styles = [ $styles = [
'emergency' => 'danger', 'emergency' => 'danger',
'alert' => 'warning', 'alert' => 'warning',
@ -53,13 +54,11 @@
$value = $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) {
->editColumn('context', function (Collection $model) {
$content = $model->get('context'); $content = $model->get('context');
return view('logs::system._details', compact('content')); return view('logs::system._details', compact('content'));
}) })->addColumn('action', function (Collection $model) {
->addColumn('action', function (Collection $model) {
return view('logs::system._action-menu', compact('model')); return view('logs::system._action-menu', compact('model'));
}); });
} }
@ -72,6 +71,7 @@
* @return Collection * @return Collection
*/ */
public function query(LogReader $model) public function query(LogReader $model)
: QueryBuilder
{ {
$data = collect(); $data = collect();
$model->setLogPath(storage_path('logs')); $model->setLogPath(storage_path('logs'));
@ -96,6 +96,7 @@
* @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')
@ -115,6 +116,7 @@
* @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),

View File

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

View File

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

View File

@ -1,7 +1,29 @@
<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')

19
Routes/breadcrumbs.php Normal file
View File

@ -0,0 +1,19 @@
<?php
use Diglactic\Breadcrumbs\Breadcrumbs;
use Diglactic\Breadcrumbs\Generator as BreadcrumbTrail;
Breadcrumbs::for('logs', function (BreadcrumbTrail $trail) {
$trail->parent('home');
$trail->push('Logs', '#');
});
Breadcrumbs::for('logs.audit', function (BreadcrumbTrail $trail) {
$trail->parent('logs');
$trail->push('Audit Logs', route('logs.audit.index'));
});
Breadcrumbs::for('logs.system', function (BreadcrumbTrail $trail) {
$trail->parent('logs');
$trail->push('System Logs', route('logs.system.index'));
});