chore: change show UI

This commit is contained in:
myuqinurrohman 2025-04-16 13:31:25 +07:00
parent eec001e8b5
commit b4f5aa1a2b
17 changed files with 353 additions and 107 deletions

View File

@ -5,6 +5,7 @@
use App\Http\Controllers\Controller;
use App\Http\Requests\ClassificationRequest;
use App\Models\Classification;
use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Str;
@ -13,14 +14,15 @@ class ClassificationController extends Controller
{
public function index(Request $request){
return view('dashboard.classifications.index', [
'title' => 'Klasifikasi',
'filter' => $request->input('filter', null)
'title' => 'Data Klasifikasi',
'filter' => $request->input('filter', null),
'new_data' => session()->get('new_data', null),
]);
}
public function create(){
return view('dashboard.classifications.create', [
'title' => 'Tambah Klasifikasi'
'title' => 'Buat Klasifikasi Baru'
]);
}
@ -28,12 +30,14 @@ public function store(ClassificationRequest $request){
$validatedData = $request->validated();
$validatedData['enhancer_id'] = Auth::id();
$createdClassification = Classification::create($validatedData);
try{
$createdClassification = Classification::create($validatedData);
return redirect()->route('dashboard.classifications.index')->with('success-status', 'Berhasil membuat klasifikasi baru.')
->with('new_data', $createdClassification->id);
}catch (\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal membuat klasifikasi baru.');
if($createdClassification){
return redirect()->route('dashboard.classifications.index')->with('success-status', 'Berhasil menambahkan klasifikasi.');
}else{
return redirect()->back()->with('failed-status', 'Gagal menambahkan klasifikasi.');
}
}
@ -50,18 +54,18 @@ public function update(ClassificationRequest $request, $id){
$validatedData = $request->validated();
$validatedData['enhancer_id'] = Auth::id();
$classification = Classification::findOrFail(decrypt_id($id));
$updatedClassification = $classification->update($validatedData);
try{
$classification = Classification::findOrFail(decrypt_id($id));
$classification->update($validatedData);
if($updatedClassification){
return redirect()->back()->with('success-status', 'Berhasil mengubah klasifikasi.');
}else{
return redirect()->route('dashboard.classifications.show', ['id' => encrypt_id($classification->id)])->with('success-status', 'Berhasil mengubah klasifikasi.');
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal mengubah klasifikasi.');
}
}
public function show($id){
$classification = Classification::withTrashed()->find(decrypt_id($id));
$classification = Classification::withTrashed()->findOrFail(decrypt_id($id));
return view('dashboard.classifications.show', [
'title' => 'Detail Klasifikasi',
@ -69,15 +73,51 @@ public function show($id){
]);
}
public function destroy($id){
public function destroy($id)
{
try {
$classification = Classification::findOrFail(decrypt_id($id));
$classification->delete();
return response()->json(['message' => 'Berhasil menghapus klasifikasi.']);
return response()->json([
'status' => 'success',
'message' => 'Berhasil menghapus klasifikasi.',
'id' => encrypt_id($classification->id), // untuk digunakan saat Undo
]);
} catch (\Exception $e) {
return response()->json(['message' => 'Gagal menghapus klasifikasi.'], 500);
return response()->json([
'status' => 'failed',
'message' => 'Gagal menghapus klasifikasi.',
], 500);
}
}
public function restore($id)
{
try {
$classification = Classification::withTrashed()->findOrFail(decrypt_id($id));
if (!$classification->trashed()) {
return response()->json([
'status' => 'failed',
'message' => 'Klasifikasi belum dihapus.',
], 400);
}
$classification->restore();
return response()->json([
'status' => 'success',
'message' => 'Klasifikasi berhasil dikembalikan.',
]);
} catch (\Exception $e) {
return response()->json([
'status' => 'failed',
'message' => 'Gagal mengembalikan klasifikasi.',
], 500);
}
}
}

View File

@ -45,9 +45,19 @@ public function classification(Request $request){
$data = Classification::with(['subClassifications'])->get();
}
$newData = $request->input('new_data', null);
return DataTables::of($data)
->addIndexColumn()
->addColumn('name', function ($data) use ($newData) {
if(filled($newData) && $newData == $data->id){
return '<span class="badge bg-info" style="display:inline-block;font-size:0.8rem; margin-right:0.5rem;">Baru</span>'. $data->name;
}else{
return $data->name;
}
})
->addColumn('status', function ($data) {
if(filled($data->deleted_at)){
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;">Dihapus</span>';
@ -112,7 +122,7 @@ public function classification(Request $request){
return $dropdown;
})
->rawColumns(['sub_classifications', 'issues', 'status', 'action'])
->rawColumns(['name', 'sub_classifications', 'issues', 'status', 'action'])
->make(true);
}
@ -127,29 +137,40 @@ public function subClassification(Request $request){
$data = SubClassification::with(['classification'])->onlyTrashed()->get();
}else{
$classificationParam = $request->input('classification', null);
if ($classificationParam) {
$classification = Classification::where('id', '=', decrypt_id($classificationParam))->first();
if ($classificationParam) {
$classification = Classification::where('id', '=', decrypt_id($classificationParam))->first();
// Tambahkan pengecekan apakah classification ditemukan
if ($classification) {
// Tambahkan pengecekan apakah classification ditemukan
if ($classification) {
$data = SubClassification::with(['classification' => function($query) {
$query->withTrashed();
}])->where('classification_id', '=', $classification->id)->get();
} else {
return response()->json(['error' => 'Classification not found'], 404);
}
} else {
$data = SubClassification::with(['classification' => function($query) {
$query->withTrashed();
}])->where('classification_id', '=', $classification->id)->get();
} else {
return response()->json(['error' => 'Classification not found'], 404);
}])->get();
}
} else {
$data = SubClassification::with(['classification' => function($query) {
$query->withTrashed();
}])->get();
}
}
$newData = $request->input('new_data', null);
return DataTables::of($data)
->addIndexColumn()
->addColumn('name', function ($data) use ($newData) {
if(filled($newData) && $newData == $data->id){
return '<span class="badge bg-info" style="display:inline-block;font-size:0.8rem; margin-right:0.5rem;">Baru</span>'. $data->name;
}else{
return $data->name;
}
})
->addColumn('classification', function ($data) {
return $data->classification->name;
return '<a href="'.route('dashboard.classifications.show', ['id' => encrypt_id($data->classification->id), 'sub_classification' => true]).'" class="text-dark">'.$data->classification->name.'</a>';
})
->addColumn('status', function ($data) {
if(filled($data->deleted_at)){
@ -202,7 +223,7 @@ public function subClassification(Request $request){
return $dropdown;
})
->rawColumns(['issues', 'status', 'action'])
->rawColumns(['name', 'classification', 'issues', 'status', 'action'])
->make(true);
}

View File

@ -15,9 +15,10 @@ class SubClassificationController extends Controller
public function index(Request $request){
$viewData = [
'title' => 'Sub Klasifikasi',
'title' => 'Data Sub Klasifikasi',
'classification' => $request->input('classification', null),
'filter' => $request->input('filter', null)
'filter' => $request->input('filter', null),
'new_data' => session()->get('new_data', null),
];
return view('dashboard.sub-classifications.index', $viewData);
@ -26,7 +27,7 @@ public function index(Request $request){
public function create(Request $request){
$viewData = [
'title' => 'Tambah Sub Klasifikasi',
'title' => 'Buat Sub Klasifikasi Baru',
'fromClassification' => false
];
@ -45,12 +46,13 @@ public function store(SubClassificationRequest $request){
$validatedData = $request->validated();
$validatedData['enhancer_id'] = Auth::id();
$createdSubClassification = SubClassification::create($validatedData);
try{
$createdSubClassification = SubClassification::create($validatedData);
if($createdSubClassification){
return redirect()->route('dashboard.sub.classifications.index')->with('success-status', 'Berhasil menambahkan sub klasifikasi.');
}else{
return redirect()->back()->with('failed-status', 'Gagal menambahkan sub klasifikasi.');
return redirect()->route('dashboard.sub.classifications.index')->with('success-status', 'Berhasil membuat sub klasifikasi baru.')
->with('new_data', $createdSubClassification->id);
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal membuat sub klasifikasi baru.');
}
}
@ -68,18 +70,18 @@ public function update(SubClassificationRequest $request, $id){
$validatedData = $request->validated();
$validatedData['enhancer_id'] = Auth::id();
$subClassification = SubClassification::findOrFail(decrypt_id($id));
$updatedSubClassification = $subClassification->update($validatedData);
try{
$subClassification = SubClassification::findOrFail(decrypt_id($id));
$subClassification->update($validatedData);
if($updatedSubClassification){
return redirect()->back()->with('success-status', 'Berhasil mengubah sub klasifikasi.');
}else{
return redirect()->route('dashboard.sub.classifications.show', ['id' => encrypt_id($subClassification->id)])->with('success-status', 'Berhasil mengubah sub klasifikasi.');
}catch(\Exception $e){
return redirect()->back()->with('failed-status', 'Gagal mengubah sub klasifikasi.');
}
}
public function show($id){
$subClassification = SubClassification::with(['classification'])->withTrashed()->find(decrypt_id($id));
$subClassification = SubClassification::with(['classification'])->withTrashed()->findOrFail(decrypt_id($id));
return view('dashboard.sub-classifications.show', [
'title' => 'Detail Sub Klasifikasi',
@ -90,7 +92,6 @@ public function show($id){
public function destroy($id){
try {
$subClassification = SubClassification::findOrFail(decrypt_id($id));
$subClassification->delete();
return response()->json(['message' => 'Berhasil menghapus sub klasifikasi.']);

View File

@ -24,4 +24,8 @@ public function subClassifications(){
public function issues(){
return $this->hasMany(IssueManagement::class, 'classification_id', 'id');
}
public function enhancer(){
return $this->belongsTo(User::class, 'enhancer_id', 'id');
}
}

View File

@ -26,4 +26,8 @@ public function classification(){
public function issues(){
return $this->hasMany(IssueManagement::class, 'sub_classification_id', 'id');
}
public function enhancer(){
return $this->belongsTo(User::class, 'enhancer_id', 'id');
}
}

View File

@ -10,16 +10,19 @@
<div class="card card-bordered card-preview">
<div class="card-inner">
<div class="card-head">
<h5 class="card-title">{{$title}}</h5>
<div class="nk-block-head">
<h5 class="title">Buat Klasifikasi Baru</h5>
<p>Masukkan informasi yang diperlukan untuk membuat klasifikasi.</p>
</div>
</div>
<form action="{{route('dashboard.classifications.store')}}" method="post" id="myForm">
@csrf
<div class="row g-4">
<div class="col-lg-6">
<div class="form-group">
<label class="form-label" for="name">Nama Klasifikasi<span class="required-input">*</span></label>
<label class="form-label" for="name">Nama<span class="required-input">*</span></label>
<div class="form-control-wrap">
<input type="text" class="form-control @error('name') border-danger @enderror" id="name" name="name" placeholder="Masukan nama klasifikasi" value="{{old('name')}}">
<input type="text" class="form-control" id="name" name="name" placeholder="Contoh: Pendidikan, Kesehatan, Konflik" value="{{old('name')}}">
</div>
@error('name')
<span class="validation-error">{{$message}}</span>
@ -31,10 +34,14 @@
<label class="form-label">Status<span class="required-input">*</span></label>
<div class="form-control-wrap">
<select class="form-select js-select2" name="status">
<option value="null" selected disabled>Pilih Status</option>
<option value="1" {{old('status') == '1' ? 'selected' : ''}}>Aktif</option>
<option value="0" {{old('status') == '0' ? 'selected' : ''}}>Tidak Aktif</option>
</select>
</div>
@error('status')
<span class="validation-error">{{$message}}</span>
@enderror
</div>
</div>
<div class="col-lg-12">
@ -44,6 +51,9 @@
<textarea class="tinymce-basic form-control" name="description">{!!old('description')!!}</textarea>
</div>
</div>
@error('description')
<span class="validation-error">{{$message}}</span>
@enderror
</div>
<div class="col-12">
<hr>

View File

@ -10,7 +10,10 @@
<div class="card card-bordered card-preview">
<div class="card-inner">
<div class="card-head">
<h5 class="card-title">{{$title}}</h5>
<div class="nk-block-head">
<h5 class="title">Ubah Klasifikasi</h5>
<p>Perbarui informasi klasifikasi ini.</p>
</div>
</div>
<form action="{{route('dashboard.classifications.update', ['id' => encrypt_id($classification->id)])}}" method="post" id="myForm">
@csrf
@ -18,9 +21,9 @@
<div class="row g-4">
<div class="col-lg-6">
<div class="form-group">
<label class="form-label" for="name">Nama Klasifikasi<span class="required-input">*</span></label>
<label class="form-label" for="name">Nama<span class="required-input">*</span></label>
<div class="form-control-wrap">
<input type="text" class="form-control @error('name') border-danger @enderror" id="name" name="name" placeholder="Masukan nama klasifikasi" value="{{ $classification->name}}">
<input type="text" class="form-control" id="name" name="name" placeholder="Contoh: Pendidikan, Kesehatan, Konflik" value="{{ $classification->name}}">
</div>
@error('name')
<span class="validation-error">{{$message}}</span>
@ -36,6 +39,9 @@
<option value="0" {{$classification->status == '0' ? 'selected' : ''}}>Tidak Aktif</option>
</select>
</div>
@error('status')
<span class="validation-error">{{$message}}</span>
@enderror
</div>
</div>
<div class="col-lg-12">
@ -44,6 +50,9 @@
<div class="form-control-wrap">
<textarea class="tinymce-basic form-control" name="description">{!!$classification->description!!}</textarea>
</div>
@error('description')
<span class="validation-error">{{$message}}</span>
@enderror
</div>
</div>
<div class="col-12">

View File

@ -34,8 +34,8 @@
<tr>
<th>No</th>
<th>Nama</th>
<th>Sub Klasifikasi</th>
<th>Isu</th>
<th>Jumlah Sub Klasifikasi</th>
<th>Jumlah Isu</th>
<th>Status</th>
<th></th>
</tr>

View File

@ -6,13 +6,40 @@
<div class="container-fluid">
<div class="nk-content-inner">
<div class="nk-content-body">
<div class="nk-block-head nk-block-head-sm">
<div class="nk-block-between g-3">
<div class="nk-block-head-content">
<h3 class="nk-block-title page-title">Detail Klasifikasi</h3>
<div class="nk-block-des text-soft">
<ul class="list-inline">
<li>Detail klasifikasi dapat dilihat di sini.</li>
</ul>
</div>
</div>
<div class="nk-block-head-content">
@if (request()->query('sub_classification') && request()->query('sub_classification') === '1')
<a href="{{route('dashboard.sub.classifications.index')}}" class="btn btn-icon btn-outline-light bg-white d-inline-flex d-sm-none"><em class="icon ni ni-arrow-left"></em></a>
<a href="{{route('dashboard.sub.classifications.index')}}" class="btn btn-outline-light bg-white d-none d-sm-inline-flex"><em class="icon ni ni-arrow-left"></em><span>Kembali</span></a>
@elseif (request()->query('sub_classification') && request()->query('sub_classification') !== 1)
<a href="{{route('dashboard.sub.classifications.show', ['id' => request()->query('sub_classification')])}}" class="btn btn-icon btn-outline-light bg-white d-inline-flex d-sm-none"><em class="icon ni ni-arrow-left"></em></a>
<a href="{{route('dashboard.sub.classifications.show', ['id' => request()->query('sub_classification')])}}" class="btn btn-outline-light bg-white d-none d-sm-inline-flex"><em class="icon ni ni-arrow-left"></em><span>Kembali</span></a>
@else
<a href="{{route('dashboard.classifications.index')}}" class="btn btn-icon btn-outline-light bg-white d-inline-flex d-sm-none"><em class="icon ni ni-arrow-left"></em></a>
<a href="{{route('dashboard.classifications.index')}}" class="btn btn-outline-light bg-white d-none d-sm-inline-flex"><em class="icon ni ni-arrow-left"></em><span>Kembali</span></a>
@endif
</div>
</div>
</div><!-- .nk-block-head -->
<div class="nk-block nk-block-lg">
<div class="card">
<div class="card-aside-wrap">
<div class="card-content">
<ul class="nav nav-tabs nav-tabs-mb-icon nav-tabs-card">
<li class="nav-item">
<a class="nav-link text-primary" href="#"><em class="icon ni ni-info"></em><span>Detail Klasifikasi</span></a>
<a class="nav-link text-primary" href="javascript:void(0);"><em class="icon ni ni-info"></em><span>Detail Informasi</span></a>
</li>
<li class="nav-item nav-item-trigger d-xxl-none">
<a href="{{route('dashboard.classifications.edit', ['id' => encrypt_id($classification->id), 'show' => true])}}" class="btn btn-icon btn-trigger"><em class="icon ni ni-edit"></em></a>
</li>
</ul><!-- .nav-tabs -->
<div class="card-inner">
@ -72,6 +99,12 @@
<span class="profile-ud-value">{{idn_date($classification->created_at, 'l, d F Y')}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Dibuat Oleh</span>
<span class="profile-ud-value">{{$classification->enhancer->name}}</span>
</div>
</div>
</div><!-- .profile-ud-list -->
</div><!-- .nk-block -->
{{-- <div class="nk-divider divider md"></div> --}}
@ -87,13 +120,6 @@
</div><!-- .bq-note-item -->
</div><!-- .bq-note -->
</div><!-- .nk-block -->
<hr>
<div class="nk-block d-flex justify-content-end">
<a href="{{route('dashboard.classifications.index')}}" class="btn btn-white btn-dim btn-outline-light mx-2"><span>Kembali</span></a>
@if (!filled($classification->deleted_at))
<a href="{{route('dashboard.classifications.edit', ['id' => encrypt_id($classification->id), 'show' => true])}}" class="btn btn-warning"><span>Ubah</span></a>
@endif
</div><!-- .nk-block -->
</div><!-- .card-inner -->
</div><!-- .card-content -->
</div><!-- .card-aside-wrap -->

View File

@ -12,7 +12,7 @@
<div class="card-head">
<div class="nk-block-head">
<h5 class="title">Buat Berita Baru</h5>
<p>Masukkan informasi untuk membuat berita/pengumuman baru.</p>
<p>Masukkan informasi yang diperlukan untuk membuat berita atau pengumuman.</p>
</div>
</div>
<form action="{{route('dashboard.news.store')}}" method="post" enctype="multipart/form-data" id="myForm">

View File

@ -10,16 +10,19 @@
<div class="card card-bordered card-preview">
<div class="card-inner">
<div class="card-head">
<h5 class="card-title">{{$title}}</h5>
<div class="nk-block-head">
<h5 class="title">Buat Sub Klasifikasi Baru</h5>
<p>Masukkan informasi yang diperlukan untuk membuat sub klasifikasi.</p>
</div>
</div>
<form action="{{route('dashboard.sub.classifications.store')}}" method="post" id="myForm">
@csrf
<div class="row g-4">
<div class="col-lg-6">
<div class="form-group">
<label class="form-label" for="name">Nama Sub Klasifikasi<span class="required-input">*</span></label>
<label class="form-label" for="name">Nama<span class="required-input">*</span></label>
<div class="form-control-wrap">
<input type="text" class="form-control @error('name') border-danger @enderror" id="name" name="name" placeholder="Masukan nama sub klasifikasi" value="{{old('name')}}">
<input type="text" class="form-control" id="name" name="name" placeholder="Contoh: Bisnis, Sosial, Kiriminal" value="{{old('name')}}">
</div>
@error('name')
<span class="validation-error">{{$message}}</span>
@ -36,12 +39,16 @@
</select>
@else
<select class="form-select js-select2" data-search="on" name="classification_id">
<option value="select" selected disabled>Pilih Klasifikasi</option>
@foreach ($classifications as $classification)
<option value="{{$classification->id}}" {{old('classification_id') == $classification->id ? 'selected' : ''}}>{{$classification->name}}</option>
@endforeach
</select>
@endif
</div>
@error('classification_id')
<span class="validation-error">{{$message}}</span>
@enderror
</div>
</div>
<div class="col-lg-6">
@ -49,10 +56,14 @@
<label class="form-label">Status<span class="required-input">*</span></label>
<div class="form-control-wrap">
<select class="form-select js-select2" name="status">
<option value="select" selected disabled>Pilih Status</option>
<option value="1" {{old('status') == '1' ? 'selected' : ''}}>Aktif</option>
<option value="0" {{old('status') == '0' ? 'selected' : ''}}>Tidak Aktif</option>
</select>
</div>
@error('status')
<span class="validation-error">{{$message}}</span>
@enderror
</div>
</div>
<div class="col-lg-12">
@ -62,11 +73,14 @@
<textarea class="tinymce-basic form-control" name="description">{!!old('description')!!}</textarea>
</div>
</div>
@error('description')
<span class="validation-error">{{$message}}</span>
@enderror
</div>
<div class="col-12">
<hr>
<div class="form-group d-flex justify-content-end">
<a href="{{route('dashboard.sub.classifications.index')}}" class="btn btn-white btn-dim btn-outline-light mx-2"><span>Kembali</span></a>
<a href="{{request()->query('classification') ? route('dashboard.classifications.index') : route('dashboard.sub.classifications.index')}}" class="btn btn-white btn-dim btn-outline-light mx-2"><span>Kembali</span></a>
<button type="button" class="btn btn-md btn-primary" id="submitButton">Tambahkan</button>
</div>
</div>

View File

@ -10,7 +10,10 @@
<div class="card card-bordered card-preview">
<div class="card-inner">
<div class="card-head">
<h5 class="card-title">{{$title}}</h5>
<div class="nk-block-head">
<h5 class="title">Ubah Sub Klasifikasi</h5>
<p>Perbarui informasi sub klasifikasi ini.</p>
</div>
</div>
<form action="{{route('dashboard.sub.classifications.update', ['id' => encrypt_id($subClassification->id)])}}" method="post" id="myForm">
@csrf
@ -18,9 +21,9 @@
<div class="row g-4">
<div class="col-lg-6">
<div class="form-group">
<label class="form-label" for="name">Nama Sub Klasifikasi<span class="required-input">*</span></label>
<label class="form-label" for="name">Nama<span class="required-input">*</span></label>
<div class="form-control-wrap">
<input type="text" class="form-control @error('name') border-danger @enderror" id="name" name="name" placeholder="Masukan nama sub klasifikasi" value="{{$subClassification->name}}">
<input type="text" class="form-control @error('name') border-danger @enderror" id="name" name="name" placeholder="Contoh: Bisnis, Sosial, Kiriminal" value="{{$subClassification->name}}">
</div>
@error('name')
<span class="validation-error">{{$message}}</span>

View File

@ -33,9 +33,9 @@
<thead>
<tr>
<th>No</th>
<th>Klasifikasi</th>
<th>Nama</th>
<th>Isu</th>
<th>Klasifikasi</th>
<th>Jumlah Isu</th>
<th>Status</th>
<th></th>
</tr>

View File

@ -6,13 +6,32 @@
<div class="container-fluid">
<div class="nk-content-inner">
<div class="nk-content-body">
<div class="nk-block-head nk-block-head-sm">
<div class="nk-block-between g-3">
<div class="nk-block-head-content">
<h3 class="nk-block-title page-title">Detail Sub Klasifikasi</h3>
<div class="nk-block-des text-soft">
<ul class="list-inline">
<li>Detail sub klasifikasi dapat dilihat di sini.</li>
</ul>
</div>
</div>
<div class="nk-block-head-content">
<a href="{{route('dashboard.sub.classifications.index')}}" class="btn btn-outline-light bg-white d-none d-sm-inline-flex"><em class="icon ni ni-arrow-left"></em><span>Kembali</span></a>
<a href="{{route('dashboard.sub.classifications.index')}}" class="btn btn-icon btn-outline-light bg-white d-inline-flex d-sm-none"><em class="icon ni ni-arrow-left"></em></a>
</div>
</div>
</div><!-- .nk-block-head -->
<div class="nk-block nk-block-lg">
<div class="card">
<div class="card-aside-wrap">
<div class="card-content">
<ul class="nav nav-tabs nav-tabs-mb-icon nav-tabs-card">
<li class="nav-item">
<a class="nav-link text-primary" href="#"><em class="icon ni ni-info"></em><span>Detail Sub Klasifikasi</span></a>
<a class="nav-link text-primary" href="javascript:void(0);"><em class="icon ni ni-info"></em><span>Detail Informasi</span></a>
</li>
<li class="nav-item nav-item-trigger d-xxl-none">
<a href="{{route('dashboard.sub.classifications.edit', ['id' => encrypt_id($subClassification->id), 'show' => true])}}" class="btn btn-icon btn-trigger"><em class="icon ni ni-edit"></em></a>
</li>
</ul><!-- .nav-tabs -->
<div class="card-inner">
@ -24,14 +43,16 @@
<div class="profile-ud-list">
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Nama Sub Klasifikasi</span>
<span class="profile-ud-label">Nama</span>
<span class="profile-ud-value">{{$subClassification->name}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Nama Klasifikasi</span>
<span class="profile-ud-value">{{$subClassification->classification->name}}</span>
<span class="profile-ud-label">Klasifikasi</span>
<span class="profile-ud-value">
<a href="{{route('dashboard.classifications.show', ['id' => encrypt_id($subClassification->classification->id), 'sub_classification' => encrypt_id($subClassification->id)])}}">{{$subClassification->classification->name}}</a>
</span>
</div>
</div>
<div class="profile-ud-item">
@ -66,6 +87,12 @@
<span class="profile-ud-value">{{idn_date($subClassification->created_at, 'l, d F Y')}}</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Dibuat Oleh</span>
<span class="profile-ud-value">{{$subClassification->enhancer->name}}</span>
</div>
</div>
</div><!-- .profile-ud-list -->
</div><!-- .nk-block -->
{{-- <div class="nk-divider divider md"></div> --}}
@ -81,13 +108,6 @@
</div><!-- .bq-note-item -->
</div><!-- .bq-note -->
</div><!-- .nk-block -->
<hr>
<div class="nk-block d-flex justify-content-end">
<a href="{{route('dashboard.sub.classifications.index')}}" class="btn btn-white btn-dim btn-outline-light mx-2"><span>Kembali</span></a>
@if (!filled($subClassification->deleted_at))
<a href="{{route('dashboard.sub.classifications.edit', ['id' => encrypt_id($subClassification->id), 'show' => true])}}" class="btn btn-warning"><span>Ubah</span></a>
@endif
</div><!-- .nk-block -->
</div><!-- .card-inner -->
</div><!-- .card-content -->
</div><!-- .card-aside-wrap -->

View File

@ -27,7 +27,14 @@
$('#classificationsTable').DataTable({
processing: true,
serverSide: true,
ajax: '{{ route('dashboard.classifications.data', ["filter" => $filter]) }}',
ajax: {
url: '{{ route('dashboard.classifications.data') }}',
type: 'GET',
data: function(d) {
d.filter = '{{ $filter }}';
d.new_data = '{{ $new_data }}';
}
},
columns: [
{ data: 'DT_RowIndex', name: 'DT_RowIndex', orderable: false, searchable: false },
{ data: 'name', name: 'name' },
@ -39,18 +46,19 @@
{ data: 'id', name: 'id', orderable: true, searchable: false, visible: false },
],
columnDefs: [
{ targets: 0, width: 'auto' },
{ targets: 2, width: '10%' },
{ targets: 3, width: '10%' },
{ targets: 4, width: '7%' },
{ targets: 5, width: 'auto' },
{ targets: 0, width: '3%' }, // Index
{ targets: 1, width: '40%' }, // Name
{ targets: 2, width: '8%' }, // Sub Classification
{ targets: 3, width: '8%' }, // Issue
{ targets: 4, width: '5%' }, // Status
{ targets: 5, width: '2%', className: 'text-center' }, // Action button
{
targets: [1],
createdCell: function(td, cellData, rowData, row, col) {
targets: [1], // Title & Link
createdCell: function(td) {
$(td).css({
'word-wrap': 'break-word',
'white-space': 'normal',
'overflow-wrap': 'break-word'
'word-break': 'break-word',
});
}
}
@ -76,11 +84,19 @@
$('#subClassificationsTable').DataTable({
processing: true,
serverSide: true,
ajax: '{{ route('dashboard.sub.classifications.data', ["classification" => $classification, "filter" => $filter]) }}',
ajax: {
url: '{{ route('dashboard.sub.classifications.data') }}',
type: 'GET',
data: function(d) {
d.classification = '{{ $classification }}';
d.filter = '{{ $filter }}';
d.new_data = '{{ $new_data }}';
}
},
columns: [
{ data: 'DT_RowIndex', name: 'DT_RowIndex', orderable: false, searchable: false },
{ data: 'classification', name: 'classification' },
{ data: 'name', name: 'name' },
{ data: 'classification', name: 'classification' },
{ data: 'issues', name: 'issues' },
{ data: 'status', name: 'status' },
{ data: 'action', name: 'action', orderable: false, searchable: false },
@ -88,18 +104,19 @@
{ data: 'id', name: 'id', orderable: true, searchable: false, visible: false },
],
columnDefs: [
{ targets: 0, width: 'auto' },
{ targets: 1, width: '10%' },
{ targets: 3, width: '10%' },
{ targets: 4, width: '10%' },
{ targets: 5, width: 'auto' },
{ targets: 0, width: '3%' }, // Index
{ targets: 1, width: '20%' }, // Classification
{ targets: 2, width: '20%' }, // Name
{ targets: 3, width: '5%' }, // Issue
{ targets: 4, width: '5%' }, // Status
{ targets: 5, width: '2%', className: 'text-center' }, // Action button
{
targets: [2],
createdCell: function(td, cellData, rowData, row, col) {
targets: [1, 2], // Title & Link
createdCell: function(td) {
$(td).css({
'word-wrap': 'break-word',
'white-space': 'normal',
'overflow-wrap': 'break-word'
'word-break': 'break-word',
});
}
}

View File

@ -53,6 +53,82 @@ function deleteItem(url, message) {
}
</script>
<script>
$(document).ready(function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
});
function deleteUndoItem(urlDelete, route, message) {
Swal.fire({
title: 'Apakah Anda yakin?',
text: message,
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Ya, hapus!',
cancelButtonText: 'Batal',
reverseButtons: true
}).then((result) => {
if (result.isConfirmed) {
$.ajax({
type: "DELETE",
url: urlDelete,
success: function(response) {
if (response.status === 'failed') {
Swal.fire({
icon: 'error',
title: 'Gagal',
text: response.message ?? 'Terjadi kesalahan saat menghapus.',
confirmButtonText: 'OK'
});
} else {
Swal.fire({
icon: 'success',
title: 'Berhasil',
text: 'Data berhasil dihapus.',
showCancelButton: true,
confirmButtonText: 'Undo',
cancelButtonText: 'Tutup',
}).then((res) => {
if (res.isConfirmed) {
if (!route || !response.id) {
return Swal.fire('Gagal!', 'Tidak dapat mengembalikan data (data tidak lengkap).', 'error');
}
$.ajax({
type: "POST",
url: `/dashboard/${route}/${response.id}/restore`,
success: function(res) {
Swal.fire('Dikembalikan!', res.message ?? 'Data berhasil dikembalikan.', 'success').then(() => location.reload());
},
error: function() {
Swal.fire('Gagal!', 'Tidak dapat mengembalikan data.', 'error');
}
});
} else {
location.reload();
}
});
}
},
error: function(xhr) {
Swal.fire(
'Terjadi kesalahan!',
xhr.responseText ?? 'Server tidak merespon.',
'error'
);
}
});
}
});
}
</script>
<script>
$(document).ready(function() {
$.ajaxSetup({

View File

@ -86,7 +86,9 @@
Route::post('/', 'store')->name('store');
Route::get('/{id}/edit', 'edit')->name('edit');
Route::put('/{id}', 'update')->name('update');
Route::delete('/{id}', 'destroy')->name('destroy');
Route::post('/{id}/restore', 'restore')->name('restore');
});
});
@ -181,7 +183,6 @@
Route::get('/{id}/edit', 'edit')->name('edit');
Route::put('/{id}', 'update')->name('update');
Route::delete('/{id}', 'destroy')->name('destroy');
Route::delete('/{id}', 'destroy')->name('destroy');
Route::post('/export', 'export')->name('export');
Route::post('/filter', 'filter')->name('filter');