From 07f13bb80294d7f505d46e1b2393adcb951f41dd Mon Sep 17 00:00:00 2001 From: myuqinurrohman Date: Wed, 16 Apr 2025 14:45:04 +0700 Subject: [PATCH] chore: change show locations UI --- .../Dashboard/ClassificationController.php | 2 +- .../Dashboard/DatatableController.php | 30 ++++++++-- .../Dashboard/LocationController.php | 27 ++++----- .../Dashboard/SubClassificationController.php | 2 +- .../Dashboard/SubLocationController.php | 27 ++++----- app/Models/Location.php | 4 ++ app/Models/SubLocation.php | 4 ++ .../dashboard/classifications/show.blade.php | 4 +- .../dashboard/locations/create.blade.php | 16 ++++- .../views/dashboard/locations/edit.blade.php | 15 ++++- .../views/dashboard/locations/index.blade.php | 4 +- .../views/dashboard/locations/show.blade.php | 46 ++++++++++++--- .../sub-classifications/show.blade.php | 2 +- .../dashboard/sub-locations/create.blade.php | 20 ++++++- .../dashboard/sub-locations/edit.blade.php | 16 ++++- .../dashboard/sub-locations/index.blade.php | 2 +- .../dashboard/sub-locations/show.blade.php | 42 ++++++++++---- .../views/partials/app/datatable.blade.php | 58 ++++++++++++------- 18 files changed, 231 insertions(+), 90 deletions(-) diff --git a/app/Http/Controllers/Dashboard/ClassificationController.php b/app/Http/Controllers/Dashboard/ClassificationController.php index 3ab4a40..1369570 100644 --- a/app/Http/Controllers/Dashboard/ClassificationController.php +++ b/app/Http/Controllers/Dashboard/ClassificationController.php @@ -34,7 +34,7 @@ public function store(ClassificationRequest $request){ $createdClassification = Classification::create($validatedData); return redirect()->route('dashboard.classifications.index')->with('success-status', 'Berhasil membuat klasifikasi baru.') - ->with('new_data', $createdClassification->id); + ->with('new_data', encrypt_id($createdClassification->id)); }catch (\Exception $e){ return redirect()->back()->with('failed-status', 'Gagal membuat klasifikasi baru.'); diff --git a/app/Http/Controllers/Dashboard/DatatableController.php b/app/Http/Controllers/Dashboard/DatatableController.php index a12c2b4..d9af561 100644 --- a/app/Http/Controllers/Dashboard/DatatableController.php +++ b/app/Http/Controllers/Dashboard/DatatableController.php @@ -52,7 +52,7 @@ public function classification(Request $request){ ->addIndexColumn() ->addColumn('name', function ($data) use ($newData) { - if(filled($newData) && $newData == $data->id){ + if(filled($newData) && decrypt_id($newData) == $data->id){ return 'Baru'. $data->name; }else{ return $data->name; @@ -163,7 +163,7 @@ public function subClassification(Request $request){ ->addIndexColumn() ->addColumn('name', function ($data) use ($newData) { - if(filled($newData) && $newData == $data->id){ + if(filled($newData) && decrypt_id($newData) == $data->id){ return 'Baru'. $data->name; }else{ return $data->name; @@ -236,8 +236,18 @@ public function location(Request $request){ $data = Location::with(['subLocations'])->get(); + $newData = $request->input('new_data', null); + return DataTables::of($data) ->addIndexColumn() + ->addColumn('name', function ($data) use ($newData) { + + if(filled($newData) && decrypt_id($newData) == $data->id){ + return 'Baru'. $data->name; + }else{ + return $data->name; + } + }) ->addColumn('status', function ($data) { if ($data->status == '0') { return 'Nonaktif'; @@ -300,7 +310,7 @@ public function location(Request $request){ return $dropdown; }) - ->rawColumns(['sub_locations', 'issues', 'status', 'action']) + ->rawColumns(['name', 'sub_locations', 'issues', 'status', 'action']) ->make(true); } @@ -319,10 +329,20 @@ public function subLocation(Request $request){ $data = SubLocation::with(['location'])->get(); } + $newData = $request->input('new_data', null); + return DataTables::of($data) ->addIndexColumn() + ->addColumn('name', function ($data) use ($newData) { + + if(filled($newData) && decrypt_id($newData) == $data->id){ + return 'Baru'. $data->name; + }else{ + return $data->name; + } + }) ->addColumn('location', function ($data) { - return $data->location->name; + return ''.$data->location->name.''; }) ->addColumn('status', function ($data) { if ($data->status == '0') { @@ -370,7 +390,7 @@ public function subLocation(Request $request){ return $dropdown; }) - ->rawColumns(['issues', 'status', 'action']) + ->rawColumns(['name', 'location', 'issues', 'status', 'action']) ->make(true); } diff --git a/app/Http/Controllers/Dashboard/LocationController.php b/app/Http/Controllers/Dashboard/LocationController.php index f20c385..4c73782 100644 --- a/app/Http/Controllers/Dashboard/LocationController.php +++ b/app/Http/Controllers/Dashboard/LocationController.php @@ -13,13 +13,14 @@ class LocationController extends Controller { public function index(){ return view('dashboard.locations.index', [ - 'title' => 'Lokus' + 'title' => 'Data Lokus', + 'new_data' => session()->get('new_data', null), ]); } public function create(){ return view('dashboard.locations.create', [ - 'title' => 'Tambah Lokus' + 'title' => 'Buat Lokus Baru' ]); } @@ -27,11 +28,12 @@ public function store(LocationRequest $request){ $validatedData = $request->validated(); $validatedData['enhancer_id'] = Auth::id(); - $createdLocation = Location::create($validatedData); + try{ + $createdLocation = Location::create($validatedData); - if($createdLocation){ - return redirect()->route('dashboard.locations.index')->with('success-status', 'Berhasil menambahkan lokus.'); - }else{ + return redirect()->route('dashboard.locations.index')->with('success-status', 'Berhasil membuat lokus baru.') + ->with('new_data', encrypt_id($createdLocation->id)); + }catch(\Exception $e){ return redirect()->back()->with('failed-status', 'Gagal menambahkan lokus.'); } } @@ -49,18 +51,18 @@ public function update(LocationRequest $request, $id){ $validatedData = $request->validated(); $validatedData['enhancer_id'] = Auth::id(); - $location = Location::findOrFail(decrypt_id($id)); - $updatedLocation = $location->update($validatedData); + try{ + $location = Location::findOrFail(decrypt_id($id)); + $location->update($validatedData); - if($updatedLocation){ - return redirect()->back()->with('success-status', 'Berhasil mengubah lokus.'); - }else{ + return redirect()->route('dashboard.locations.show', ['id' => encrypt_id($location->id)])->with('success-status', 'Berhasil mengubah lokus.'); + }catch(\Exception $e){ return redirect()->back()->with('failed-status', 'Gagal mengubah lokus.'); } } public function show($id){ - $location = Location::find(decrypt_id($id)); + $location = Location::findOrFail(decrypt_id($id)); return view('dashboard.locations.show', [ 'title' => 'Detail Lokus', @@ -71,7 +73,6 @@ public function show($id){ public function destroy($id){ try { $location = Location::findOrFail(decrypt_id($id)); - $location->delete(); return response()->json(['message' => 'Berhasil menghapus lokus.']); diff --git a/app/Http/Controllers/Dashboard/SubClassificationController.php b/app/Http/Controllers/Dashboard/SubClassificationController.php index fa25b42..1487e42 100644 --- a/app/Http/Controllers/Dashboard/SubClassificationController.php +++ b/app/Http/Controllers/Dashboard/SubClassificationController.php @@ -50,7 +50,7 @@ public function store(SubClassificationRequest $request){ $createdSubClassification = SubClassification::create($validatedData); return redirect()->route('dashboard.sub.classifications.index')->with('success-status', 'Berhasil membuat sub klasifikasi baru.') - ->with('new_data', $createdSubClassification->id); + ->with('new_data', encrypt_id($createdSubClassification->id)); }catch(\Exception $e){ return redirect()->back()->with('failed-status', 'Gagal membuat sub klasifikasi baru.'); } diff --git a/app/Http/Controllers/Dashboard/SubLocationController.php b/app/Http/Controllers/Dashboard/SubLocationController.php index bc45176..fa52a89 100644 --- a/app/Http/Controllers/Dashboard/SubLocationController.php +++ b/app/Http/Controllers/Dashboard/SubLocationController.php @@ -15,8 +15,9 @@ class SubLocationController extends Controller public function index(Request $request){ $viewData = [ - 'title' => 'Sub Lokus', + 'title' => 'Data Sub Lokus', 'location' => $request->input('location', null), + 'new_data' => session()->get('new_data', null), ]; return view('dashboard.sub-locations.index', $viewData); @@ -25,7 +26,7 @@ public function index(Request $request){ public function create(Request $request){ $viewData = [ - 'title' => 'Tambah Sub Lokus', + 'title' => 'Buat Sub Lokus Baru', 'fromLocation' => false ]; @@ -44,11 +45,12 @@ public function store(SubLocationRequest $request){ $validatedData = $request->validated(); $validatedData['enhancer_id'] = Auth::id(); - $createdSubLocation = SubLocation::create($validatedData); + try{ + $createdSubLocation = SubLocation::create($validatedData); - if($createdSubLocation){ - return redirect()->route('dashboard.sub.locations.index')->with('success-status', 'Berhasil menambahkan sub lokus.'); - }else{ + return redirect()->route('dashboard.sub.locations.index')->with('success-status', 'Berhasil membuat sub lokus baru.') + ->with('new_data', encrypt_id($createdSubLocation->id)); + }catch(\Exception $e){ return redirect()->back()->with('failed-status', 'Gagal menambahkan sub lokus.'); } } @@ -67,18 +69,18 @@ public function update(SubLocationRequest $request, $id){ $validatedData = $request->validated(); $validatedData['enhancer_id'] = Auth::id(); - $subLocation = SubLocation::findOrFail(decrypt_id($id)); - $updatedSubLocation = $subLocation->update($validatedData); + try{ + $subLocation = SubLocation::findOrFail(decrypt_id($id)); + $subLocation->update($validatedData); - if($updatedSubLocation){ - return redirect()->back()->with('success-status', 'Berhasil mengubah sub lokus.'); - }else{ + return redirect()->route('dashboard.sub.locations.show', ['id' => encrypt_id($subLocation->id)])->with('success-status', 'Berhasil mengubah sub lokus.'); + }catch(\Exception $e){ return redirect()->back()->with('failed-status', 'Gagal mengubah sub lokus.'); } } public function show($id){ - $subLocation = SubLocation::with(['location'])->find(decrypt_id($id)); + $subLocation = SubLocation::with(['location'])->findOrFail(decrypt_id($id)); return view('dashboard.sub-locations.show', [ 'title' => 'Detail Sub Lokus', @@ -89,7 +91,6 @@ public function show($id){ public function destroy($id){ try { $subLocation = SubLocation::findOrFail(decrypt_id($id)); - $subLocation->delete(); return response()->json(['message' => 'Berhasil menghapus sub lokus.']); diff --git a/app/Models/Location.php b/app/Models/Location.php index 69bb28b..4799277 100644 --- a/app/Models/Location.php +++ b/app/Models/Location.php @@ -22,4 +22,8 @@ public function subLocations(){ public function issues(){ return $this->hasMany(IssueManagement::class, 'location_id', 'id'); } + + public function enhancer(){ + return $this->belongsTo(User::class, 'enhancer_id', 'id'); + } } diff --git a/app/Models/SubLocation.php b/app/Models/SubLocation.php index 9ab94f0..0022f8c 100644 --- a/app/Models/SubLocation.php +++ b/app/Models/SubLocation.php @@ -23,4 +23,8 @@ public function location(){ public function issues(){ return $this->hasMany(IssueManagement::class, 'sub_location_id', 'id'); } + + public function enhancer(){ + return $this->belongsTo(User::class, 'enhancer_id', 'id'); + } } diff --git a/resources/views/dashboard/classifications/show.blade.php b/resources/views/dashboard/classifications/show.blade.php index 6dfd9a6..a2834ef 100644 --- a/resources/views/dashboard/classifications/show.blade.php +++ b/resources/views/dashboard/classifications/show.blade.php @@ -51,7 +51,7 @@
- Nama Klasifikasi + Nama {{$classification->name}}
@@ -61,7 +61,7 @@ @if (filled($classification->deleted_at)) Dihapus @elseif ($classification->status == 0) - Nonaktif + Nonaktif @elseif ($classification->status == 1) Aktif @else diff --git a/resources/views/dashboard/locations/create.blade.php b/resources/views/dashboard/locations/create.blade.php index 776fc65..42070b2 100644 --- a/resources/views/dashboard/locations/create.blade.php +++ b/resources/views/dashboard/locations/create.blade.php @@ -10,16 +10,19 @@
-
{{$title}}
+
+
Buat Lokus Baru
+

Masukkan informasi yang diperlukan untuk membuat lokus.

+
@csrf
- +
- +
@error('name') {{$message}} @@ -31,10 +34,14 @@
+ @error('status') + {{$message}} + @enderror
@@ -43,6 +50,9 @@
+ @error('description') + {{$message}} + @enderror
diff --git a/resources/views/dashboard/locations/edit.blade.php b/resources/views/dashboard/locations/edit.blade.php index 9db8073..d436af8 100644 --- a/resources/views/dashboard/locations/edit.blade.php +++ b/resources/views/dashboard/locations/edit.blade.php @@ -10,7 +10,10 @@
-
{{$title}}
+
+
Ubah Lokus
+

Perbarui informasi lokus ini.

+
@csrf @@ -18,9 +21,9 @@
- +
- +
@error('name') {{$message}} @@ -36,6 +39,9 @@
+ @error('status') + {{$message}} + @enderror
@@ -45,6 +51,9 @@
+ @error('description') + {{$message}} + @enderror

diff --git a/resources/views/dashboard/locations/index.blade.php b/resources/views/dashboard/locations/index.blade.php index 7e9032d..aa25cd5 100644 --- a/resources/views/dashboard/locations/index.blade.php +++ b/resources/views/dashboard/locations/index.blade.php @@ -46,9 +46,9 @@ No Nama + Jumlah Sub Lokasi + Jumlah Isu Status - Sub Lokasi - Isu diff --git a/resources/views/dashboard/locations/show.blade.php b/resources/views/dashboard/locations/show.blade.php index 9ea01b6..6182c5f 100644 --- a/resources/views/dashboard/locations/show.blade.php +++ b/resources/views/dashboard/locations/show.blade.php @@ -6,13 +6,40 @@
+
+
+
+

Detail Lokus

+
+
    +
  • Detail lokus dapat dilihat di sini.
  • +
+
+
+
+ @if (request()->query('sub_location') && request()->query('sub_location') === '1') + + Kembali + @elseif (request()->query('sub_location') && request()->query('sub_location') !== 1) + + Kembali + @else + + Kembali + @endif +
+
+
@@ -24,7 +51,7 @@
- Nama Lokasi + Nama {{$location->name}}
@@ -34,7 +61,7 @@ @if (filled($location->deleted_at)) Dihapus @elseif ($location->status == 0) - Nonaktif + Nonaktif @elseif ($location->status == 1) Aktif @else @@ -73,6 +100,12 @@ {{idn_date($location->created_at, 'l, d F Y')}}
+
+
+ Dibuat Oleh + {{$location->enhancer->name}} +
+
{{--
--}} @@ -83,16 +116,11 @@
- {!!$location->description ?? '-' !!} + {!!$classification->description ?? '-' !!}
-
-
- Kembali - Ubah -
diff --git a/resources/views/dashboard/sub-classifications/show.blade.php b/resources/views/dashboard/sub-classifications/show.blade.php index 3dd3b0b..49cdfc3 100644 --- a/resources/views/dashboard/sub-classifications/show.blade.php +++ b/resources/views/dashboard/sub-classifications/show.blade.php @@ -73,7 +73,7 @@ @if (filled($subClassification->deleted_at)) Dihapus @elseif ($subClassification->status == 0) - Nonaktif + Nonaktif @elseif ($subClassification->status == 1) Aktif @else diff --git a/resources/views/dashboard/sub-locations/create.blade.php b/resources/views/dashboard/sub-locations/create.blade.php index a953af1..aa42392 100644 --- a/resources/views/dashboard/sub-locations/create.blade.php +++ b/resources/views/dashboard/sub-locations/create.blade.php @@ -10,16 +10,19 @@
-
{{$title}}
+
+
Buat Sub Lokus Baru
+

Masukkan informasi yang diperlukan untuk membuat sub lokus.

+
@csrf
- +
- +
@error('name') {{$message}} @@ -36,12 +39,16 @@ @else @endif
+ @error('location_id') + {{$message}} + @enderror
@@ -49,10 +56,14 @@
+ @error('status') + {{$message}} + @enderror
@@ -62,6 +73,9 @@
+ @error('description') + {{$message}} + @enderror

diff --git a/resources/views/dashboard/sub-locations/edit.blade.php b/resources/views/dashboard/sub-locations/edit.blade.php index 449a3c4..6b110c0 100644 --- a/resources/views/dashboard/sub-locations/edit.blade.php +++ b/resources/views/dashboard/sub-locations/edit.blade.php @@ -10,7 +10,10 @@
-
{{$title}}
+
+
Ubah Sub Lokus
+

Perbarui informasi sub lokus ini.

+
@csrf @@ -20,7 +23,7 @@
- +
@error('name') {{$message}} @@ -38,6 +41,9 @@
+ @error('location_id') + {{$message}} + @enderror
@@ -49,6 +55,9 @@
+ @error('status') + {{$message}} + @enderror
@@ -57,6 +66,9 @@
+ @error('description') + {{$message}} + @enderror

diff --git a/resources/views/dashboard/sub-locations/index.blade.php b/resources/views/dashboard/sub-locations/index.blade.php index 5d8a30c..41e13c1 100644 --- a/resources/views/dashboard/sub-locations/index.blade.php +++ b/resources/views/dashboard/sub-locations/index.blade.php @@ -45,8 +45,8 @@ No - Lokus Nama + Lokus Isu Status diff --git a/resources/views/dashboard/sub-locations/show.blade.php b/resources/views/dashboard/sub-locations/show.blade.php index b44fed1..625a6c1 100644 --- a/resources/views/dashboard/sub-locations/show.blade.php +++ b/resources/views/dashboard/sub-locations/show.blade.php @@ -6,13 +6,32 @@
+
+
+
+

Detail Sub Lokus

+
+
    +
  • Detail sub lokus dapat dilihat di sini.
  • +
+
+
+
+ Kembali + +
+
+
@@ -24,14 +43,16 @@
- Nama Sub Lokus + Nama {{$subLocation->name}}
- Nama Lokus - {{$subLocation->location->name}} + Lokus + + {{$subLocation->location->name}} +
@@ -52,7 +73,7 @@ @if (filled($subLocation->deleted_at)) Dihapus @elseif ($subLocation->status == 0) - Nonaktif + Nonaktif @elseif ($subLocation->status == 1) Aktif @else @@ -66,6 +87,12 @@ {{idn_date($subLocation->created_at, 'l, d F Y')}}
+
+
+ Dibuat Oleh + {{$subLocation->enhancer->name}} +
+
{{--
--}} @@ -81,11 +108,6 @@
-
-
- Kembali - Ubah -
diff --git a/resources/views/partials/app/datatable.blade.php b/resources/views/partials/app/datatable.blade.php index 5bb02e0..c8a50d4 100644 --- a/resources/views/partials/app/datatable.blade.php +++ b/resources/views/partials/app/datatable.blade.php @@ -142,29 +142,37 @@ processing: true, serverSide: true, ajax: '{{ route('dashboard.locations.data') }}', + ajax: { + url: '{{ route('dashboard.locations.data') }}', + type: 'GET', + data: function(d) { + d.new_data = '{{ $new_data }}'; + } + }, columns: [ { data: 'DT_RowIndex', name: 'DT_RowIndex', orderable: false, searchable: false }, { data: 'name', name: 'name' }, - { data: 'status', name: 'status' }, { data: 'sub_locations', name: 'sub_locations' }, { data: 'issues', name: 'issues' }, + { data: 'status', name: 'status' }, { data: 'action', name: 'action', orderable: false, searchable: false }, { data: 'created_at', name: 'created_at', visible: false }, { data: 'id', name: 'id', orderable: true, searchable: false, visible: false }, ], columnDefs: [ - { targets: 0, width: 'auto' }, - { targets: 2, width: '7%' }, - { targets: 3, width: '10%' }, - { targets: 4, width: '10%' }, - { targets: 5, width: '5%' }, + { targets: 0, width: '2%' }, // Index + { targets: 1, width: '20%' }, // Name + { targets: 2, width: '3%' }, // Sub Location + { targets: 3, width: '3%' }, // Issue + { targets: 4, width: '3%' }, // Status + { targets: 5, width: '2%', className: 'text-center' }, // Action button + { - targets: [1], - 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', }); } } @@ -188,11 +196,18 @@ $('#subLocationsTable').DataTable({ processing: true, serverSide: true, - ajax: '{{ route('dashboard.sub.locations.data', ["location" => $location]) }}', + ajax: { + url: '{{ route('dashboard.sub.locations.data') }}', + type: 'GET', + data: function(d) { + d.location = '{{ $location }}'; + d.new_data = '{{ $new_data }}'; + } + }, columns: [ { data: 'DT_RowIndex', name: 'DT_RowIndex', orderable: false, searchable: false }, - { data: 'location', name: 'location' }, { data: 'name', name: 'name' }, + { data: 'location', name: 'location' }, { data: 'issues', name: 'issues' }, { data: 'status', name: 'status' }, { data: 'action', name: 'action', orderable: false, searchable: false }, @@ -200,18 +215,19 @@ { data: 'id', name: 'id', orderable: true, searchable: false, visible: false }, ], columnDefs: [ - { targets: 0, width: 'auto' }, - { targets: 1, width: 'auto' }, - { targets: 3, width: '12%' }, - { targets: 4, width: '7%' }, - { targets: 5, width: '5%' }, + { targets: 0, width: '2%' }, // Index + { targets: 1, width: '20%' }, // Name + { targets: 2, width: '3%' }, // Sub Location + { targets: 3, width: '3%' }, // Issue + { targets: 4, width: '3%' }, // 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', }); } }