feat(bank-data): perbarui format alamat dan tambahkan relasi lokasi
- Memperbaiki fungsi formatAlamat untuk menggunakan kode pos dari desa. - Menambahkan relasi ke model BankData untuk desa, distrik, kota, dan provinsi. - Memperbarui controller BankDataController untuk menyertakan alamat dalam data yang diformat. - Memperbarui tampilan untuk menampilkan informasi alamat dengan format yang lebih baik.
This commit is contained in:
@@ -41,7 +41,7 @@ function formatRupiah($number,$decimals = 0)
|
|||||||
|
|
||||||
function formatAlamat($alamat)
|
function formatAlamat($alamat)
|
||||||
{
|
{
|
||||||
return ($alamat->address ? $alamat->address . ', ' : '') . (isset($alamat->village) ? $alamat->village->name . ', ' : '') . (isset($alamat->city) ? $alamat->city->name . ', ' : '') . (isset($alamat->province) ? $alamat->province->name . ', ' : '') . ($alamat->postal_code ?? '');
|
return ($alamat->address ? $alamat->address . ', ' : '') . (isset($alamat->village) ? $alamat->village->name . ', ' : '') . (isset($alamat->city) ? $alamat->city->name . ', ' : '') . (isset($alamat->province) ? $alamat->province->name . ', ' : '') . ($alamat->village->postal_code ?? '');
|
||||||
}
|
}
|
||||||
|
|
||||||
// andy add
|
// andy add
|
||||||
|
|||||||
@@ -148,6 +148,7 @@ class BankDataController extends Controller
|
|||||||
'harga' => $item->harga,
|
'harga' => $item->harga,
|
||||||
'nilai_pasar' => $item->nilai_pasar,
|
'nilai_pasar' => $item->nilai_pasar,
|
||||||
'location' => $item->kordinat_lat . ', ' . $item->kordinat_lng,
|
'location' => $item->kordinat_lat . ', ' . $item->kordinat_lng,
|
||||||
|
'address' => formatAlamat($item)
|
||||||
// Add more fields as needed
|
// Add more fields as needed
|
||||||
];
|
];
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Modules\Lpj\Models;
|
namespace Modules\Lpj\Models;
|
||||||
|
use Modules\Location\Models\City;
|
||||||
|
use Modules\Location\Models\District;
|
||||||
|
use Modules\Location\Models\Province;
|
||||||
|
use Modules\Location\Models\Village;
|
||||||
|
|
||||||
class BankData extends Base
|
class BankData extends Base
|
||||||
{
|
{
|
||||||
@@ -77,4 +81,24 @@
|
|||||||
return $query->whereBetween('tanggal', [$startDate, $endDate]);
|
return $query->whereBetween('tanggal', [$startDate, $endDate]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function village()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(Village::class, 'village_code', 'code');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function district()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(District::class, 'district_code', 'code');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function city()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(City::class, 'city_code', 'code');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function province()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(Province::class, 'province_code', 'code');
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -218,14 +218,109 @@
|
|||||||
|
|
||||||
// Create info window content
|
// Create info window content
|
||||||
const contentString = `
|
const contentString = `
|
||||||
<div>
|
<div id='content' style='width: 500px; max-width: 100%;'>
|
||||||
<h3>${item.jenis_aset}</h3>
|
<div id='siteNotice'></div>
|
||||||
<p>Tanggal: ${item.tanggal}</p>
|
<h2 class='card-title mb-5'>
|
||||||
<p>Tahun: ${item.tahun}</p>
|
${item.jenis_aset}
|
||||||
<p>Luas Tanah: ${item.luas_tanah} m²</p>
|
</h2>
|
||||||
<p>Luas Bangunan: ${item.luas_bangunan} m²</p>
|
<div class="grid gap-3">
|
||||||
<p>Harga: ${window.formatRupiah(item.harga)}</p>
|
<div class='flex items-center justify-between flex-wrap gap-1.5'>
|
||||||
<p>Nilai Pasar: ${window.formatRupiah(item.nilai_pasar)}</p>
|
<div class='flex items-center gap-1.5'>
|
||||||
|
<span class='text-sm font-normal text-gray-900'>
|
||||||
|
Tanggal Penilaian
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class='flex items-center text-sm font-medium text-gray-800 gap-6'>
|
||||||
|
<span class='lg:text-right'>
|
||||||
|
${window.formatTanggalIndonesia(item.tanggal)}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="border-t border-gray-300 border-dashed"></div>
|
||||||
|
<div class='flex items-center justify-between flex-wrap gap-1.5'>
|
||||||
|
<div class='flex items-center gap-1.5'>
|
||||||
|
<span class='text-sm font-normal text-gray-900'>
|
||||||
|
Tahun
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class='flex items-center text-sm font-medium text-gray-800 gap-6'>
|
||||||
|
<span class='lg:text-right'>
|
||||||
|
${item.tahun}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="border-t border-gray-300 border-dashed"></div>
|
||||||
|
<div class='flex items-center justify-between flex-wrap gap-1.5'>
|
||||||
|
<div class='flex items-center gap-1.5'>
|
||||||
|
<span class='text-sm font-normal text-gray-900'>
|
||||||
|
Luas Tanah
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class='flex items-center text-sm font-medium text-gray-800 gap-6'>
|
||||||
|
<span class='lg:text-right'>
|
||||||
|
${item.luas_tanah} m²
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="border-t border-gray-300 border-dashed"></div>
|
||||||
|
<div class='flex items-center justify-between flex-wrap gap-1.5'>
|
||||||
|
<div class='flex items-center gap-1.5'>
|
||||||
|
<span class='text-sm font-normal text-gray-900'>
|
||||||
|
Luas Bangunan
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class='flex items-center text-sm font-medium text-gray-800 gap-6'>
|
||||||
|
<span class='lg:text-right'>
|
||||||
|
${item.luas_bangunan} m²
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="border-t border-gray-300 border-dashed"></div>
|
||||||
|
<div class='flex items-center justify-between flex-wrap gap-1.5'>
|
||||||
|
<div class='flex items-center gap-1.5'>
|
||||||
|
<span class='text-sm font-normal text-gray-900'>
|
||||||
|
Harga
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class='flex items-center text-sm font-medium text-gray-800 gap-6'>
|
||||||
|
<span class='lg:text-right'>
|
||||||
|
${window.formatRupiah(item.harga)}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="border-t border-gray-300 border-dashed"></div>
|
||||||
|
<div class='flex items-center justify-between flex-wrap gap-1.5'>
|
||||||
|
<div class='flex items-center gap-1.5'>
|
||||||
|
<span class='text-sm font-normal text-gray-900'>
|
||||||
|
Nilai Pasar
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class='flex items-center text-sm font-medium text-gray-800 gap-6'>
|
||||||
|
<span class='lg:text-right'>
|
||||||
|
${window.formatRupiah(item.nilai_pasar)}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="border-t border-gray-300 border-dashed"></div>
|
||||||
|
<div class='flex items-start justify-between flex-wrap gap-1.5'>
|
||||||
|
<div class='flex items-start gap-1.5'>
|
||||||
|
<span class='text-sm font-normal text-gray-900'>
|
||||||
|
Location
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class='flex items-center text-sm font-medium text-gray-800 gap-6'>
|
||||||
|
<span class='text-right whitespace-normal break-words'>
|
||||||
|
${item.address.split(' ').reduce((acc, word, index, array) => {
|
||||||
|
if (index > 0 && index % 7 === 0) {
|
||||||
|
acc += '<br>';
|
||||||
|
}
|
||||||
|
acc += word + (index < array.length - 1 ? ' ' : '');
|
||||||
|
return acc;
|
||||||
|
}, '')}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
|
|
||||||
@@ -349,6 +444,7 @@
|
|||||||
// Reload the table to apply the new filters
|
// Reload the table to apply the new filters
|
||||||
dataTable.reload();
|
dataTable.reload();
|
||||||
});
|
});
|
||||||
|
|
||||||
function initializeEverything() {
|
function initializeEverything() {
|
||||||
initMap();
|
initMap();
|
||||||
initializeDataTable();
|
initializeDataTable();
|
||||||
|
|||||||
Reference in New Issue
Block a user