This commit is contained in:
2025-08-22 09:41:04 +07:00
parent 949e98ca4a
commit 8fa2d2cdf7
705 changed files with 130767 additions and 24 deletions
@@ -0,0 +1,121 @@
@extends('template.admin.base')
@push('css')
<link href="{{ asset('assets/admin/vendor/libs/select2/select2.css') }}" rel="stylesheet" />
@endpush
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
<div class="card">
<div class="card-header d-flex justify-content-between align-items-center">
<h5 class="card-title m-0">Kabupaten/Kota Baru</h5>
<div id="buttons">
<a href="{{ route('admin.kabupaten-kota.index') }}" class="btn btn-dark">
<i class="icon-base ti tabler-arrow-left me-sm-1"></i> Kembali ke Daftar
</a>
</div>
</div>
<div class="card-body">
@if ($errors->any())
<div class="alert alert-danger d-flex align-items-baseline" role="alert">
<span class="alert-icon rounded">
<i class="icon-base ti tabler-ban icon-md w-px-30"></i>
</span>
<div class="d-flex flex-column ps-1">
<h5 class="alert-heading mb-2">Input data gagal tervalidasi</h5>
<ul class="mb-0">
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
</div>
@endif
<form id="formCreate" action="{{ route('admin.kabupaten-kota.store') }}" method="POST">
@csrf
<div class="row mb-3">
<div class="col-xl-3 col-md-6 col-sm-6">
<label for="nama" class="form-label">Nama Kabupaten/Kota</label>
<input type="text" class="form-control" id="nama" name="nama" value="{{ old('nama') }}" />
</div>
<div class="col-xl-3 col-md-6 col-sm-6">
<label for="kode" class="form-label">Kode Kabupaten/Kota</label>
<input type="text" class="form-control" id="kode" name="kode" value="{{ old('kode') }}" />
</div>
<div class="col-xl-3 col-md-6 col-sm-6">
<label for="provinsi_id" class="form-label">Provinsi</label>
<select class="select2 form-select" data-allow-clear="true" id="provinsi_id" name="provinsi_id">
</select>
</div>
</div>
<button type="submit" class="btn btn-primary">Simpan</button>
</form>
</div>
</div>
</div>
@endsection
@push('js')
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.21.0/jquery.validate.min.js"
integrity="sha512-KFHXdr2oObHKI9w4Hv1XPKc898mE4kgYx58oqsc/JqqdLMDI4YjOLzom+EMlW8HFUd0QfjfAvxSL6sEq/a42fQ=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="{{ asset('assets/admin/vendor/libs/select2/select2.js') }}"></script>
<script>
$(function () {
$("#provinsi_id").select2({
placeholder: "Pilih Provinsi",
allowClear: true,
ajax: {
url: "{{ route('admin.provinsi.list') }}",
type: 'POST',
data: function (params) {
var query = {
search: params.term,
page: params.page || 1,
_token:'{{ csrf_token() }}'
}
return query;
},
processResults: function (data) {
var results = $.map(data.data, function (obj) {
obj.id = obj.id;
obj.text = obj.kode + ' - ' + obj.nama;
return obj;
});
return {
results: results,
pagination: {
more: data.last_page > data.current_page
}
};
}
}
});
$('#formCreate').validate({
rules: {
nama: {
required: true,
},
kode: {
required: true,
digits: true,
minlength: 4,
maxlength: 4,
},
provinsi_id: {
required: true,
}
},
messages: {
nama: 'Nama Kabupaten/Kota wajib diisi',
kode: 'Kode Kabupaten/Kota wajib diisi dengan angka 4 digit',
provinsi_id: 'Provinsi wajib diisi'
}
});
});
</script>
@endpush
@@ -0,0 +1,124 @@
@extends('template.admin.base')
@push('css')
<link href="{{ asset('assets/admin/vendor/libs/select2/select2.css') }}" rel="stylesheet" />
@endpush
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
<div class="card">
<div class="card-header d-flex justify-content-between align-items-center">
<h5 class="card-title m-0">Edit Kabupaten/Kota</h5>
<div id="buttons">
<a href="{{ route('admin.kabupaten-kota.index') }}" class="btn btn-dark">
<i class="icon-base ti tabler-arrow-left me-sm-1"></i> Kembali ke Daftar
</a>
</div>
</div>
<div class="card-body">
@if ($errors->any())
<div class="alert alert-danger d-flex align-items-baseline" role="alert">
<span class="alert-icon rounded">
<i class="icon-base ti tabler-ban icon-md w-px-30"></i>
</span>
<div class="d-flex flex-column ps-1">
<h5 class="alert-heading mb-2">Edit data gagal tervalidasi</h5>
<ul class="mb-0">
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
</div>
@endif
<form id="formCreate" action="{{ route('admin.kabupaten-kota.update', $kabupatenKota->id) }}" method="POST">
@method('PUT')
@csrf
<div class="row mb-3">
<div class="col-xl-3 col-md-6 col-sm-6">
<label for="nama" class="form-label">Nama Kabupaten/Kota</label>
<input type="text" class="form-control" id="nama" name="nama" value="{{ old('nama', $kabupatenKota->nama) }}" />
</div>
<div class="col-xl-3 col-md-6 col-sm-6">
<label for="kode" class="form-label">Kode Kabupaten/Kota</label>
<input type="text" class="form-control" id="kode" name="kode" value="{{ old('kode', $kabupatenKota->kode) }}" />
</div>
<div class="col-xl-3 col-md-6 col-sm-6">
<label for="provinsi_id" class="form-label">Provinsi</label>
<select class="select2 form-select" data-allow-clear="true" id="provinsi_id" name="provinsi_id">
<option value="{{ old('provinsi_id', $kabupatenKota->provinsi_id) }}" selected="selected">
{{ $kabupatenKota->provinsi->kode }} - {{ $kabupatenKota->provinsi->nama }}</option>
</select>
</div>
</div>
<button type="submit" class="btn btn-primary">Simpan</button>
</form>
</div>
</div>
</div>
@endsection
@push('js')
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.21.0/jquery.validate.min.js"
integrity="sha512-KFHXdr2oObHKI9w4Hv1XPKc898mE4kgYx58oqsc/JqqdLMDI4YjOLzom+EMlW8HFUd0QfjfAvxSL6sEq/a42fQ=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="{{ asset('assets/admin/vendor/libs/select2/select2.js') }}"></script>
<script>
$(function () {
$("#provinsi_id").select2({
placeholder: "Pilih Provinsi",
allowClear: true,
ajax: {
url: "{{ route('admin.provinsi.list') }}",
type: 'POST',
data: function (params) {
var query = {
search: params.term,
page: params.page || 1,
_token:'{{ csrf_token() }}'
}
return query;
},
processResults: function (data) {
var results = $.map(data.data, function (obj) {
obj.id = obj.id;
obj.text = obj.kode + ' - ' + obj.nama;
return obj;
});
return {
results: results,
pagination: {
more: data.last_page > data.current_page
}
};
}
}
});
$('#formCreate').validate({
rules: {
nama: {
required: true,
},
kode: {
required: true,
digits: true,
minlength: 4,
maxlength: 4,
},
provinsi_id: {
required: true,
}
},
messages: {
nama: 'Nama Kabupaten/Kota wajib diisi',
kode: 'Kode Kabupaten/Kota wajib diisi dengan angka 4 digit',
provinsi_id: 'Provinsi wajib diisi'
}
});
});
</script>
@endpush
@@ -0,0 +1,148 @@
@extends('template.admin.base')
@push('css')
<link rel="stylesheet" href="{{ asset('assets/admin/vendor/libs/datatables-bs5/datatables.bootstrap5.css') }}" />
<link rel="stylesheet" href="{{ asset('assets/admin/vendor/libs/datatables-responsive-bs5/responsive.bootstrap5.css') }}" />
@endpush
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
<div class="card">
<div class="card-header d-flex justify-content-between align-items-center">
<h5 class="card-title m-0">Daftar Kabupaten/Kota</h5>
<div id="buttons">
<a href="{{ route('admin.kabupaten-kota.create') }}" class="btn btn-primary">
<i class="icon-base ti tabler-plus me-sm-1"></i> Kabupaten/Kota Baru
</a>
</div>
</div>
<div class="card-datatable table-responsive pt-0">
@if (session('success'))
<div class="alert alert-dismissible alert-success d-flex align-items-center" role="alert">
<span class="alert-icon rounded me-2">
<i class="icon-base ti tabler-check icon-md w-px-30"></i>
</span>
{{ session('success') }}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
@endif
<table class="datatables-basic table" id="table">
<thead>
<tr>
<th>Nama</th>
<th>Kode</th>
<th>Provinsi</th>
<th>Aksi</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
</div>
</div>
<div class="modal fade" id="deleteConfirmModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form id="formDelete" action="{{ route('admin.kabupaten-kota.destroy', ':id') }}" method="POST">
@csrf
@method('DELETE')
<div class="modal-header">
<h5 class="modal-title" id="deleteConfirmModalLabel">Konfirmasi Menghapus Data</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<p>Apakah data tersebut benar akan dihapus?</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-label-secondary" data-bs-dismiss="modal">
Batal
</button>
<button type="submit" class="btn btn-danger">Hapus</button>
</div>
</form>
</div>
</div>
</div>
@endsection
@push('js')
<script src="{{ asset('assets/admin/vendor/libs/datatables-bs5/datatables-bootstrap5.js') }}"></script>
<script>
$(function () {
$('#table').DataTable({
'responsive': true,
'lengthChange': true,
'autoWidth': false,
'processing': true,
'serverSide': true,
'ajax': function(data, callback, settings) {
var order = '';
if (data.order.length > 0) {
order = data.order[0].dir == 'desc' ? '-' : '';
order = order + data.columns[data.order[0].column].data;
}
$.ajax({
url: "{{ route('admin.kabupaten-kota.list') }}",
data: {
size: data.length,
page: (data.start / data.length) + 1,
search: data.search.value,
sort: order,
_token:'{{ csrf_token() }}'
},
type: "POST",
success: function(res) {
callback({
recordsTotal: res.total,
recordsFiltered: res.total,
data: res.data
});
}
});
},
'columns': [
{ data: 'nama' },
{ data: 'kode' },
{ data: 'provinsi.nama' },
{
data: 'id',
orderable: false,
searchable: false,
targets: -1,
render: function (data, type, full, meta) {
var urlEdit = '{{ route("admin.kabupaten-kota.edit", ":id") }}';
urlEdit = urlEdit.replace(':id', data);
var renderValue =
'<a href="' + urlEdit + '" class="btn btn-sm btn-icon">' +
' <i class="text-primary icon-base ti tabler-pencil"></i>' +
'</a>' +
'<button type="button" class="btn btn-sm btn-icon delete" data-id="' + data + '">' +
' <i class="text-danger icon-base ti tabler-trash"></i>' +
'</button>';
return renderValue;
}
}
],
});
$('#table tbody').on( 'click', 'button.delete', function (e) {
e.preventDefault();
var form = $('#formDelete');
var action = form.attr('action');
action = action.replace(':id', $(this).data('id'));
form.attr('action', action);
$('#deleteConfirmModal').modal('show');
});
});
</script>
@endpush