map dropdown
This commit is contained in:
parent
9d9a23f995
commit
8e84a142c7
Binary file not shown.
@ -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}")
|
||||
|
||||
@ -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'] + "%"
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@ -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">
|
||||
|
||||
Loading…
Reference in New Issue
Block a user