bps-rw/Views/DataRumahRw/Index.cshtml

456 lines
20 KiB
Plaintext

@{
ViewData["Title"] = "Data Rumah RW";
}
<div class="breadcrumbs text-sm">
<ul>
<li class="text-gray-500"><a>Data Rumah</a></li>
<li><a>Rumah RW</a></li>
</ul>
</div>
<div class="grid grid-cols-1 gap-4 lg:grid-cols-2">
<!-- Header -->
<div class="prose">
<h3 class="mb-2">Data Rumah RW</h3>
</div>
<div class="justify-self-end lg:self-center flex flex-wrap gap-3">
<button id="btn-tambah-rumah" type="button" class="btn btn-primary rounded-full text-white border-0">
<span class="icon icon-fill me-2">add</span>
Tambah
</button>
<button onclick="modal_filter.showModal()" class="btn rounded-full bg-white">
<span class="icon icon-fill me-2">filter_list</span>
Filter
</button>
</div>
</div>
<div class="h-8"></div>
<div class="card bg-white shadow-sm">
<div class="card-body p-0">
<table class="table-zebra table" id="example">
<thead>
<tr>
<th class="w-[5%]">No</th>
<th class="w-[5%]">RT</th>
<th class="w-[5%]">RW</th>
<th class="w-[35%] whitespace-normal">Alamat</th>
<th class="w-[15%]">Kota</th>
<th class="w-[10%]">Nama Pemilik</th>
<th class="w-[10%]">Status</th>
<th class="w-[10%]">Checklist</th>
<th class="w-[10%]">Aksi</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
</div>
<!-- Create Modal -->
<dialog id="modal_create" class="modal modal-bottom sm:modal-middle">
<div class="modal-box w-full sm:max-w-lg">
<div class="flex items-start justify-between">
<div>
<h3 class="text-lg font-semibold">Tambah Rumah</h3>
<p class="text-sm text-gray-500">Lengkapi informasi rumah sebelum menyimpan.</p>
</div>
<form method="dialog">
<button type="submit" class="btn btn-sm btn-circle btn-ghost">✕</button>
</form>
</div>
<form id="form-create-rumah" class="space-y-4 mt-6">
<fieldset class="fieldset">
<legend class="fieldset-legend">No RT <span class="text-red-500">*</span></legend>
<input id="create-rt" name="rt" type="text" class="input w-full" placeholder="Masukkan No RT" required />
</fieldset>
<fieldset class="fieldset">
<legend class="fieldset-legend">Nama Pemilik Rumah <span class="text-red-500">*</span></legend>
<input id="create-nama-pemilik" name="nama_pemilik" type="text" class="input w-full" placeholder="Masukkan nama pemilik rumah"/>
</fieldset>
<fieldset class="fieldset">
<legend class="fieldset-legend">Alamat <span class="text-red-500">*</span></legend>
<textarea id="create-alamat" name="alamat" class="textarea w-full" rows="4" placeholder="Masukkan alamat" required></textarea>
</fieldset>
<div class="grid grid-cols-2 gap-4">
<fieldset class="fieldset">
<legend class="fieldset-legend">Longitude <span class="text-red-500">*</span></legend>
<input id="create-longitude" name="longitude" type="text" class="input w-full" placeholder="Masukkan longitude" required />
</fieldset>
<fieldset class="fieldset">
<legend class="fieldset-legend">Latitude <span class="text-red-500">*</span></legend>
<input id="create-latitude" name="latitude" type="text" class="input w-full" placeholder="Masukkan latitude" required />
</fieldset>
</div>
<div class="modal-action">
<button type="button" class="btn rounded-full" onclick="modal_create.close()">
<span class="icon me-1">cancel</span>
Batal
</button>
<button id="BtnSimpanRumahRw" type="submit" class="btn btn-primary rounded-full text-white">
<span class="icon me-1">save</span>
Simpan
</button>
</div>
</form>
</div>
</dialog>
<!-- Filter Modal -->
<dialog id="modal_filter" class="modal modal-bottom sm:modal-middle">
<div class="modal-box w-full sm:max-w-sm">
<div class="flex items-center justify-between">
<h3 class="text-lg font-bold">Filter</h3>
<button type="button" class="btn btn-sm btn-circle btn-ghost" onclick="modal_filter.close()">✕</button>
</div>
<form action="#" method="get" class="space-y-4 mt-4">
<fieldset class="fieldset max-w-sm">
<legend class="fieldset-legend">Status</legend>
<select class="select w-full">
<option disabled selected>Pilih Status</option>
<option>Aktif</option>
<option>Tidak Aktif</option>
</select>
</fieldset>
<fieldset class="fieldset max-w-sm">
<legend class="fieldset-legend">RT</legend>
<select id="rtSelect" class="w-full">
<option value="">Pilih RT</option>
<option value="001">001</option>
<option value="002">002</option>
<option value="003">003</option>
<option value="004">004</option>
<option value="005">005</option>
</select>
</fieldset>
<div class="modal-action">
<button type="button" class="btn" onclick="modal_filter.close()">Bersihkan</button>
<button type="submit" class="btn btn-neutral">Terapkan Filter</button>
</div>
</form>
</div>
</dialog>
<!-- Detail Modal -->
<dialog id="modal_detail" class="modal modal-bottom sm:modal-middle">
<div class="modal-box w-full sm:max-w-md">
<div class="flex items-center justify-between mb-4">
<h3 class="text-lg font-semibold">Detail Rumah</h3>
<button type="button" class="btn btn-sm btn-circle btn-ghost" onclick="modal_detail.close()">✕</button>
</div>
<div class="space-y-3 text-sm">
<div>
<p class="text-gray-500">No. RT</p>
<p id="detail-rt" class="font-medium"></p>
</div>
<div>
<p class="text-gray-500">Nama Pemilik Rumah</p>
<p id="detail-nama" class="font-medium"></p>
</div>
<div>
<p class="text-gray-500">Alamat</p>
<p id="detail-alamat" class="font-medium whitespace-normal"></p>
</div>
</div>
<div class="modal-action mt-6">
<button type="button" class="btn" onclick="modal_detail.close()">Tutup</button>
</div>
</div>
</dialog>
<!-- Input NIK Modal -->
<dialog id="modal_input_nik" class="modal modal-bottom sm:modal-middle">
<div class="modal-box w-full sm:max-w-3xl rounded-2xl p-6">
<div class="flex justify-between items-center mb-6">
<h3 class="text-xl font-semibold">Input NIK</h3>
<form method="dialog">
<button class="btn btn-sm btn-circle btn-ghost">✕</button>
</form>
</div>
<form id="form-input-nik" class="space-y-5">
<div class="grid grid-cols-12 gap-4">
<div class="col-span-9">
<fieldset class="fieldset">
<legend class="fieldset-legend">No KTP</legend>
<input name="nik" id="nik" class="input w-full" placeholder="Masukkan NIK" />
</fieldset>
</div>
<div class="col-span-3">
<fieldset class="fieldset">
<legend class="fieldset-legend opacity-0">.</legend>
<button type="button" id="btn-cek-data" class="btn btn-info w-full rounded-full text-white">
<span class="icon icon-fill me-1">search</span>
Cek Data
</button>
</fieldset>
</div>
</div>
<div class="grid grid-cols-2 gap-4">
<fieldset class="fieldset">
<legend class="fieldset-legend">Nama Kepala Rumah Tangga</legend>
<input id="nama_kepala" class="input w-full" placeholder="Masukkan nama kepala rumah tangga" />
</fieldset>
<fieldset class="fieldset">
<legend class="fieldset-legend">Alamat</legend>
<input id="alamat" class="input w-full" placeholder="Masukkan alamat" />
</fieldset>
</div>
<div class="grid grid-cols-12 gap-4">
<div class="col-span-6">
<fieldset class="fieldset">
<legend class="fieldset-legend">Nama Pemilik KTP</legend>
<input id="nama_pemilik_ktp" class="input w-full" placeholder="Masukkan nama" />
</fieldset>
</div>
<div class="col-span-3">
<fieldset class="fieldset">
<legend class="fieldset-legend">RT</legend>
<input id="rt" readonly class="input w-full bg-gray-100 text-gray-500" placeholder="RT" />
</fieldset>
</div>
<div class="col-span-3">
<fieldset class="fieldset">
<legend class="fieldset-legend">RW</legend>
<input id="rw" readonly class="input w-full bg-gray-100 text-gray-500" placeholder="RW" />
</fieldset>
</div>
</div>
<div class="grid grid-cols-2 gap-4">
<fieldset class="fieldset">
<legend class="fieldset-legend">Kelurahan</legend>
<input id="kelurahan" readonly class="input w-full bg-gray-100 text-gray-500" placeholder="Cijantung" />
</fieldset>
<fieldset class="fieldset">
<legend class="fieldset-legend">Kecamatan</legend>
<input id="kecamatan" readonly class="input w-full bg-gray-100 text-gray-500" placeholder="Pasar Rebo" />
</fieldset>
</div>
<div class="grid grid-cols-2 gap-4">
<fieldset class="fieldset">
<legend class="fieldset-legend">Kota</legend>
<input id="kota" readonly class="input w-full bg-gray-100 text-gray-500" />
</fieldset>
<fieldset class="fieldset">
<legend class="fieldset-legend">Bangunan ID</legend>
<input id="bangunan_id" class="input w-full" placeholder="Masukkan ID Bangunan" />
</fieldset>
</div>
<fieldset class="fieldset">
<legend class="fieldset-legend">Nasabah Status</legend>
<input id="status" class="input w-full" placeholder="Tidak Aktif" />
</fieldset>
<div class="flex justify-end gap-3 pt-4">
<button type="button" onclick="modal_input_nik.close()" class="btn h-11 rounded-full px-6 bg-gray-100 border border-gray-300 text-gray-700">
<span class="icon icon-fill me-1">cancel</span>
Batalkan
</button>
<button id="BtnSimpanNik" type="submit" class="btn btn-primary h-11 rounded-full px-6 text-white">
<span class="icon icon-fill me-1">save</span>
Simpan
</button>
</div>
</form>
</div>
</dialog>
<!-- Edit Modal -->
<dialog id="modal_edit" class="modal modal-bottom sm:modal-middle">
<div class="modal-box w-full sm:max-w-lg">
<div class="flex items-start justify-between">
<div>
<h3 class="text-lg font-semibold">Edit Rumah</h3>
<p class="text-sm text-gray-500">Perbarui informasi rumah sebelum menyimpan.</p>
</div>
<form method="dialog">
<button type="submit" class="btn btn-sm btn-circle btn-ghost">✕</button>
</form>
</div>
<form id="form-edit-rumah" class="space-y-4 mt-6">
<fieldset class="fieldset">
<legend class="fieldset-legend">No RT <span class="text-red-500">*</span></legend>
<input id="edit-rt" name="rt" type="text" class="input w-full" placeholder="Masukkan No RT" required />
</fieldset>
<fieldset class="fieldset">
<legend class="fieldset-legend">Nama Pemilik Rumah <span class="text-red-500">*</span></legend>
<input id="edit-nama-pemilik" name="nama_pemilik" type="text" class="input w-full" placeholder="Masukkan nama pemilik rumah" required />
</fieldset>
<fieldset class="fieldset">
<legend class="fieldset-legend">Alamat <span class="text-red-500">*</span></legend>
<textarea id="edit-alamat" name="alamat" class="textarea w-full" rows="4" placeholder="Masukkan alamat" required></textarea>
</fieldset>
<div class="grid grid-cols-2 gap-4">
<fieldset class="fieldset">
<legend class="fieldset-legend">Longitude <span class="text-red-500">*</span></legend>
<input id="edit-longitude" name="longitude" type="text" class="input w-full" placeholder="Masukkan longitude" required />
</fieldset>
<fieldset class="fieldset">
<legend class="fieldset-legend">Latitude <span class="text-red-500">*</span></legend>
<input id="edit-latitude" name="latitude" type="text" class="input w-full" placeholder="Masukkan latitude" required />
</fieldset>
</div>
<div class="modal-action">
<button type="button" class="btn rounded-full" onclick="modal_edit.close()">
<span class="icon me-1">cancel</span>
Batal
</button>
<button id="BtnUpdateRumahRw" type="submit" class="btn btn-primary rounded-full text-white">
<span class="icon me-1">save</span>
Simpan
</button>
</div>
</form>
</div>
</dialog>
<script src="/lib/jquery/jquery-3.7.1.js"></script>
<script src="/lib/datatables/dataTables.js"></script>
<script src="/plugins/datatables/dataTables.tailwindcss.js"></script>
<script src="/lib/sweetalert2/sweetalert2-11.26.4.js"></script>
<link href="https://cdn.jsdelivr.net/npm/tom-select@2.2.2/dist/css/tom-select.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/tom-select@2.2.2/dist/js/tom-select.complete.min.js"></script>
<script type="text/javascript">
var table;
$(document).ready(function () {
new TomSelect("#rtSelect", {
closeAfterSelect: true,
maxItems: 1,
placeholder: "Pilih RT",
});
table = new DataTable('#example', {
ajax: '@Url.Action("Table", "DataRumahRw")',
scrollX: true,
autoWidth: true,
initComplete: function () {
$('div.dt-scroll-body thead').css('visibility', 'collapse');
},
columns: [
{ data: null, render: (d, t, r, m) => m.row + 1, orderable: false, searchable: false },
{ data: 'rt' },
{ data: 'rw' },
{ data: 'alamat' },
{ data: 'kota' },
{ data: 'nama_pemilik' },
{ data: 'status' },
{ data: 'checklist' },
{ data: 'aksi', orderable: false, searchable: false }
],
columnDefs: [
{ className: "whitespace-normal", targets: 3 }
]
});
$('#btn-tambah-rumah').on('click', function () {
document.getElementById('modal_create').showModal();
});
$('#example tbody').on('click', '.btn-detail-rumah', function () {
let row = table.row($(this).closest('tr')).data();
$('#detail-rt').text(row.rt);
$('#detail-nama').text(row.nama_pemilik);
$('#detail-alamat').text(row.alamat);
modal_detail.showModal();
});
$('#example tbody').on('click', '.btn-input-nik', function () {
let row = table.row($(this).closest('tr')).data();
$('#rt').val(row.rt);
$('#rw').val(row.rw);
$('#kota').val(row.kota);
modal_input_nik.showModal();
});
$('#example tbody').on('click', '.btn-edit-rumah', function () {
let row = table.row($(this).closest('tr')).data();
$('#edit-rt').val(row.rt);
$('#edit-nama-pemilik').val(row.nama_pemilik);
$('#edit-alamat').val(row.alamat);
modal_edit.showModal();
});
$('#form-create-rumah').on('submit', function (e) {
e.preventDefault();
modal_create.close();
Swal.fire({
title: 'Simpan Data Rumah?',
text: "Pastikan semua data sudah benar.",
icon: 'question',
showCancelButton: true,
confirmButtonColor: '#22c55e',
cancelButtonColor: '#6b7280',
confirmButtonText: 'Simpan',
cancelButtonText: 'Batal'
}).then((result) => {
if (result.isConfirmed) {
Swal.fire({
title: 'Berhasil!',
text: 'Data Rumah berhasil disimpan.',
icon: 'success',
confirmButtonText: 'OK',
confirmButtonColor: '#22c55e'
});
}
});
});
$('#form-edit-rumah').on('submit', function (e) {
e.preventDefault();
modal_edit.close();
Swal.fire({
title: 'Simpan Perubahan?',
text: "Pastikan semua data sudah benar.",
icon: 'question',
showCancelButton: true,
confirmButtonColor: '#22c55e',
cancelButtonColor: '#6b7280',
confirmButtonText: 'Simpan',
cancelButtonText: 'Batal'
}).then((result) => {
if (result.isConfirmed) {
Swal.fire({
title: 'Berhasil!',
text: 'Data Rumah berhasil diperbarui.',
icon: 'success',
confirmButtonText: 'OK',
confirmButtonColor: '#22c55e'
});
}
});
});
$('#BtnSimpanNik').on('click', function (e) {
e.preventDefault();
modal_input_nik.close();
Swal.fire({
title: 'Simpan Data NIK?',
text: "Pastikan semua data sudah benar.",
icon: 'question',
showCancelButton: true,
confirmButtonColor: '#22c55e',
cancelButtonColor: '#6b7280',
confirmButtonText: 'Simpan',
cancelButtonText: 'Batal'
}).then((result) => {
if (result.isConfirmed) {
Swal.fire({
title: 'Berhasil!',
text: 'Data NIK berhasil disimpan.',
icon: 'success',
confirmButtonText: 'OK',
confirmButtonColor: '#22c55e'
});
}
});
});
});
</script>