feat(roles): tambahkan fitur pengelolaan posisi dan tingkat jabatan pada modul role
- Modifikasi form pembuatan role: - Tambahkan class `tomselect` pada elemen dropdown posisi. - Update label tingkat jabatan pada tampilan opsi dropdown. - Pembaruan tabel pada halaman list role: - Tambah kolom baru: "Position" dan "Tingkat Jabatan". - Kolom baru dapat diurutkan. - Update logika pencarian dan pengurutan: - Izinkan pencarian berdasarkan nama posisi dan tingkat jabatan. - Tambahkan pengurutan data berdasarkan nama posisi dan tingkat jabatan dengan join table `positions`. - Perbaikan pada paginasi dan penghitungan data: - Revisi query agar menghindari duplikasi data akibat join tabel. - Ekspor data: - Tambahkan informasi kolom baru "Position" dan "Tingkat Jabatan" pada file Excel hasil ekspor. - Perbarui header dan pengaturan format kolom pada file Excel. Perubahan ini memperluas fleksibilitas pada manajemen role dengan menambahkan dimensi posisi dan tingkat jabatan baik dalam tampilan UI maupun data backend.
This commit is contained in:
@@ -38,11 +38,11 @@
|
||||
Position
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<select class="select @error('position_id') border-danger @enderror" name="position_id">
|
||||
<select class="select tomselect @error('position_id') border-danger @enderror" name="position_id">
|
||||
<option value="">Select Position</option>
|
||||
@foreach($positions as $position)
|
||||
<option value="{{ $position->id }}" {{ (isset($role) && $role->position_id == $position->id) ? 'selected' : '' }}>
|
||||
{{ $position->name }} (Level: {{ $position->level }})
|
||||
{{ $position->name }} | Tingkat Jabatan: {{ $position->level }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
|
||||
@@ -19,29 +19,7 @@
|
||||
|
||||
</label>
|
||||
</div>
|
||||
<div class="flex flex-wrap gap-2.5">
|
||||
<select class="select select-sm w-28">
|
||||
<option value="1">
|
||||
Active
|
||||
</option>
|
||||
<option value="2">
|
||||
Disabled
|
||||
</option>
|
||||
<option value="2">
|
||||
Pending
|
||||
</option>
|
||||
</select>
|
||||
<select class="select select-sm w-28">
|
||||
<option value="desc">
|
||||
Latest
|
||||
</option>
|
||||
<option value="asc">
|
||||
Oldest
|
||||
</option>
|
||||
</select>
|
||||
<button class="btn btn-sm btn-outline btn-primary">
|
||||
<i class="ki-filled ki-setting-4"> </i> <Filters></Filters>
|
||||
</button>
|
||||
<div class="flex flex-wrap gap-2.5 lg:gap-5">
|
||||
<div class="h-[24px] border border-r-gray-200"> </div>
|
||||
<a class="btn btn-sm btn-light" href="{{ route('users.roles.export') }}"> Export to Excel </a>
|
||||
<a class="btn btn-sm btn-primary" href="{{ route('users.roles.create') }}"> Add Role </a>
|
||||
@@ -60,6 +38,14 @@
|
||||
<span class="sort"> <span class="sort-label"> Role </span>
|
||||
<span class="sort-icon"> </span> </span>
|
||||
</th>
|
||||
<th class="min-w-[200px]" data-datatable-column="position_name">
|
||||
<span class="sort"> <span class="sort-label"> Position </span>
|
||||
<span class="sort-icon"> </span> </span>
|
||||
</th>
|
||||
<th class="min-w-[100px]" data-datatable-column="level">
|
||||
<span class="sort"> <span class="sort-label"> Tingkat Jabatan </span>
|
||||
<span class="sort-icon"> </span> </span>
|
||||
</th>
|
||||
<th class="min-w-[50px] text-center" data-datatable-column="actions">Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -138,6 +124,20 @@
|
||||
name: {
|
||||
title: 'Role',
|
||||
},
|
||||
position_name: {
|
||||
title: 'Position',
|
||||
render: (item, data) => {
|
||||
return data.position ? data.position.name : '-';
|
||||
},
|
||||
sortable: true,
|
||||
},
|
||||
level: {
|
||||
title: 'Level',
|
||||
render: (item, data) => {
|
||||
return data.position ? data.position.level : '-';
|
||||
},
|
||||
sortable: true,
|
||||
},
|
||||
actions: {
|
||||
title: 'Status',
|
||||
render: (item, data) => {
|
||||
@@ -162,4 +162,3 @@
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
|
||||
|
||||
Reference in New Issue
Block a user