map dropdown

This commit is contained in:
='fauz 2025-07-03 00:41:31 +07:00
parent 9d9a23f995
commit 8e84a142c7
4 changed files with 85 additions and 70 deletions

View File

@ -21,7 +21,9 @@ def swap_latlon(coords):
def swap_latlon2(coords):
try:
sample = coords[0][0][0]
if not (-180 <= sample[0] <= 180 and -90 <= sample[1] <= 90):
lat, lon = sample
# if not (-180 <= sample[0] <= 180 and -90 <= sample[1] <= 90):
if -90 <= lat <= 90 and -180 <= lon <= 180:
return [
[
[
@ -30,7 +32,6 @@ def swap_latlon2(coords):
] for polygon in coords
]
else:
# Sudah benar [lon, lat]
return coords
except Exception as e:
print(f"[swap_latlon] Error during coordinate swap: {e}")

View File

@ -119,11 +119,11 @@
<div class="row form-group">
<div class="col-md-12">
<div class="input-group">
<div class="input-group-prepend">
<!-- <div class="input-group-prepend">
<span class="input-group-text" style="width: 150px;">
Provinsi
</span>
</div>
</div> -->
<select class="form-control select2 border border-primary" name="provinsiDropdown" id="provinsiDropdown"
data-placeholder="Provinsi ......">
<option></option>
@ -137,11 +137,11 @@
<div class="row form-group">
<div class="col-md-12">
<div class="input-group">
<div class="input-group-prepend">
<!-- <div class="input-group-prepend">
<span class="input-group-text" style="width: 150px;">
Kabupaten/Kota
</span>
</div>
</div> -->
<select class="form-control select2" name="kabkotaDropdown" id="kabkotaDropdown"
data-placeholder="Kabupaten/Kota ....." >
<option></option>
@ -154,11 +154,11 @@
<div class="row form-group">
<div class="col-md-12">
<div class="input-group">
<div class="input-group-prepend">
<!-- <div class="input-group-prepend">
<span class="input-group-text" style="width: 150px;">
Kecamatan
</span>
</div>
</div> -->
<select class="form-control select2" name="kecamatanDropdown" id="kecamatanDropdown"
data-placeholder="Kecamatan .....">
<option></option>
@ -274,14 +274,14 @@
if (url.includes("/provinsi")) {
const provinsiId = feature.properties.id;
localStorage.setItem('kode_provinsi', provinsiId);
updateDropdown('provinsi',feature.properties.id)
updateDropdown('provinsi',kode)
} else if (currentLevel === 'kabupatenkota') {
let province_id = localStorage.getItem('kode_provinsi')
localStorage.setItem('kode_kabupatenkota',feature.properties.id)
updateDropdown('kabupatenkota',feature.properties.id)
updateDropdown('kabupatenkota',kode)
}else if(currentLevel === 'kecamatan'){
localStorage.setItem('kode_kecamatan',feature.properties.id)
updateDropdown('kecamatan',feature.properties.id)
updateDropdown('kabupatenkota',kode)
}
} else {
// Single click → Tampilkan popup
@ -730,61 +730,69 @@
<script>
function updateDropdown(level, kode) {
const dropdownId = {
'provinsi': '#provinsiDropdown',
'kabupatenkota': '#kabkotaDropdown',
'kecamatan': '#kecamatanDropdown'
}[level];
const nextLevel = {
'provinsi': '#provinsiDropdown',
'kabupatenkota': '#kabkotaDropdown',
'kecamatan': '#kecamatanDropdown'
}[level];
if ($(dropdownId).length) {
$(dropdownId).val(kode).trigger('change.select2');
if(level == 'provinsi'){
// Ambil kabupaten berdasarkan provinsi
const kabkotaURL = "{{ url_for('main.get_master_kabkota') }}";
$.ajax({
url: kabkotaURL,
data: { provinsi_id: $(dropdownId).val() },
dataType: 'json',
success: function (data) {
const results = data.map(kabupaten => ({
id: kabupaten[0],
text: kabupaten[1]
}));
const dropdownMap = {
provinsi: '#provinsiDropdown',
kabupatenkota: '#kabkotaDropdown',
kecamatan: '#kecamatanDropdown'
};
// Tambahkan ke dropdown kabupaten
$('#kabkotaDropdown').select2({
data: results,
placeholder: 'Pilih Kabupaten/Kota',
allowClear: true
});
}
});
}else if(level == 'kabupatenkota'){
// Ambil kabupaten berdasarkan provinsi
const kabkotaURL = "{{ url_for('main.get_master_kecamatan') }}";
$.ajax({
url: kabkotaURL,
data: { kabkota_id: $(dropdownId).val() },
dataType: 'json',
success: function (data) {
const results = data.map(kecamatan => ({
id: kecamatan[0],
text: kecamatan[1]
}));
const apiURLMap = {
provinsi: "{{ url_for('main.get_master_kabkota') }}",
kabupatenkota: "{{ url_for('main.get_master_kecamatan') }}"
};
// Tambahkan ke dropdown kabupaten
$('#kecamatanDropdown').select2({
data: results,
placeholder: 'Pilih Kecamatan',
allowClear: true
});
}
});
const dataKeyMap = {
provinsi: 'provinsi_id',
kabupatenkota: 'kabkota_id'
};
function getNextLevel(level) {
const order = ['provinsi', 'kabupatenkota', 'kecamatan'];
const index = order.indexOf(level);
return order[index + 1];
}
function capitalize(str) {
return str.charAt(0).toUpperCase() + str.slice(1);
}
function updateDropdown(level, kode,autoSelectKodeNext = null) {
const dropdownId = dropdownMap[level];
if (!dropdownId || !$(dropdownId).length) return;
// Set value dan trigger select2
$(dropdownId).val(kode).trigger('change.select2');
console.log(dropdownId,kode);
// Ambil level berikutnya
const nextLevel = getNextLevel(level);
const targetDropdownId = dropdownMap[nextLevel];
// Kalau ada level berikutnya, ambil datanya via AJAX
if (nextLevel && apiURLMap[level]) {
const targetDropdownId = dropdownMap[getNextLevel(level)];
const apiURL = apiURLMap[level];
const paramKey = dataKeyMap[level];
const paramVal = $(dropdownId).val();
$.ajax({
url: apiURL,
data: { [paramKey]: paramVal },
dataType: 'json',
success: function (data) {
const results = data.map(item => ({
id: item[0],
text: item[1]
}));
$(targetDropdownId).empty().select2({
data: results,
placeholder: `Pilih ${capitalize(getNextLevel(level))}`,
allowClear: true
});
}
});
if (autoSelectKodeNext) {
$(targetDropdownId).val(autoSelectKodeNext).trigger('change.select2');
}
}
}
@ -833,7 +841,12 @@
fetch(url)
.then(res => res.json())
.then(data => {
total_dd_container.textContent = parseDanBulatkanKeMiliar(data)
if(typeof (data) == 'object'){
//total_dd_container.textContent = parseDanBulatkanKeMiliar(data.jumlah_per_m)
}else{
//total_dd_container.textContent = parseDanBulatkanKeMiliar(data)
}
})
}
@ -841,8 +854,11 @@
fetch(url)
.then(res => res.json())
.then(data => {
document.getElementById('tot_sr').textContent = parseDanBulatkanKeMiliar(data['serapan_per_m'])
document.getElementById('pr_sr').textContent = data['persentage'] + "%"
if(data){
console.log("fetch serapan:", data)
//document.getElementById('tot_sr').textContent = parseDanBulatkanKeMiliar(data['serapan_per_m'])
//document.getElementById('pr_sr').textContent = data['persentage'] + "%"
}
})
}

View File

@ -72,8 +72,6 @@
<div class="report-container">
<div class="report-header">
<!-- <h1 class="recent-Articles">Recent Articles</h1>
<button class="view">View All</button> -->
<div class="box-container">
<div class="box box1">
<div class="text">