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):
|
def swap_latlon2(coords):
|
||||||
try:
|
try:
|
||||||
sample = coords[0][0][0]
|
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 [
|
return [
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
@ -30,7 +32,6 @@ def swap_latlon2(coords):
|
|||||||
] for polygon in coords
|
] for polygon in coords
|
||||||
]
|
]
|
||||||
else:
|
else:
|
||||||
# Sudah benar [lon, lat]
|
|
||||||
return coords
|
return coords
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"[swap_latlon] Error during coordinate swap: {e}")
|
print(f"[swap_latlon] Error during coordinate swap: {e}")
|
||||||
|
|||||||
@ -119,11 +119,11 @@
|
|||||||
<div class="row form-group">
|
<div class="row form-group">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<div class="input-group-prepend">
|
<!-- <div class="input-group-prepend">
|
||||||
<span class="input-group-text" style="width: 150px;">
|
<span class="input-group-text" style="width: 150px;">
|
||||||
Provinsi
|
Provinsi
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div> -->
|
||||||
<select class="form-control select2 border border-primary" name="provinsiDropdown" id="provinsiDropdown"
|
<select class="form-control select2 border border-primary" name="provinsiDropdown" id="provinsiDropdown"
|
||||||
data-placeholder="Provinsi ......">
|
data-placeholder="Provinsi ......">
|
||||||
<option></option>
|
<option></option>
|
||||||
@ -137,11 +137,11 @@
|
|||||||
<div class="row form-group">
|
<div class="row form-group">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<div class="input-group-prepend">
|
<!-- <div class="input-group-prepend">
|
||||||
<span class="input-group-text" style="width: 150px;">
|
<span class="input-group-text" style="width: 150px;">
|
||||||
Kabupaten/Kota
|
Kabupaten/Kota
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div> -->
|
||||||
<select class="form-control select2" name="kabkotaDropdown" id="kabkotaDropdown"
|
<select class="form-control select2" name="kabkotaDropdown" id="kabkotaDropdown"
|
||||||
data-placeholder="Kabupaten/Kota ....." >
|
data-placeholder="Kabupaten/Kota ....." >
|
||||||
<option></option>
|
<option></option>
|
||||||
@ -154,11 +154,11 @@
|
|||||||
<div class="row form-group">
|
<div class="row form-group">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<div class="input-group-prepend">
|
<!-- <div class="input-group-prepend">
|
||||||
<span class="input-group-text" style="width: 150px;">
|
<span class="input-group-text" style="width: 150px;">
|
||||||
Kecamatan
|
Kecamatan
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div> -->
|
||||||
<select class="form-control select2" name="kecamatanDropdown" id="kecamatanDropdown"
|
<select class="form-control select2" name="kecamatanDropdown" id="kecamatanDropdown"
|
||||||
data-placeholder="Kecamatan .....">
|
data-placeholder="Kecamatan .....">
|
||||||
<option></option>
|
<option></option>
|
||||||
@ -274,14 +274,14 @@
|
|||||||
if (url.includes("/provinsi")) {
|
if (url.includes("/provinsi")) {
|
||||||
const provinsiId = feature.properties.id;
|
const provinsiId = feature.properties.id;
|
||||||
localStorage.setItem('kode_provinsi', provinsiId);
|
localStorage.setItem('kode_provinsi', provinsiId);
|
||||||
|
updateDropdown('provinsi',kode)
|
||||||
updateDropdown('provinsi',feature.properties.id)
|
|
||||||
} else if (currentLevel === 'kabupatenkota') {
|
} else if (currentLevel === 'kabupatenkota') {
|
||||||
|
let province_id = localStorage.getItem('kode_provinsi')
|
||||||
localStorage.setItem('kode_kabupatenkota',feature.properties.id)
|
localStorage.setItem('kode_kabupatenkota',feature.properties.id)
|
||||||
updateDropdown('kabupatenkota',feature.properties.id)
|
updateDropdown('kabupatenkota',kode)
|
||||||
}else if(currentLevel === 'kecamatan'){
|
}else if(currentLevel === 'kecamatan'){
|
||||||
localStorage.setItem('kode_kecamatan',feature.properties.id)
|
localStorage.setItem('kode_kecamatan',feature.properties.id)
|
||||||
updateDropdown('kecamatan',feature.properties.id)
|
updateDropdown('kabupatenkota',kode)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Single click → Tampilkan popup
|
// Single click → Tampilkan popup
|
||||||
@ -730,61 +730,69 @@
|
|||||||
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
function updateDropdown(level, kode) {
|
const dropdownMap = {
|
||||||
const dropdownId = {
|
provinsi: '#provinsiDropdown',
|
||||||
'provinsi': '#provinsiDropdown',
|
kabupatenkota: '#kabkotaDropdown',
|
||||||
'kabupatenkota': '#kabkotaDropdown',
|
kecamatan: '#kecamatanDropdown'
|
||||||
'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]
|
|
||||||
}));
|
|
||||||
|
|
||||||
// Tambahkan ke dropdown kabupaten
|
const apiURLMap = {
|
||||||
$('#kabkotaDropdown').select2({
|
provinsi: "{{ url_for('main.get_master_kabkota') }}",
|
||||||
data: results,
|
kabupatenkota: "{{ url_for('main.get_master_kecamatan') }}"
|
||||||
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]
|
|
||||||
}));
|
|
||||||
|
|
||||||
// Tambahkan ke dropdown kabupaten
|
const dataKeyMap = {
|
||||||
$('#kecamatanDropdown').select2({
|
provinsi: 'provinsi_id',
|
||||||
data: results,
|
kabupatenkota: 'kabkota_id'
|
||||||
placeholder: 'Pilih Kecamatan',
|
};
|
||||||
allowClear: true
|
|
||||||
});
|
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)
|
fetch(url)
|
||||||
.then(res => res.json())
|
.then(res => res.json())
|
||||||
.then(data => {
|
.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)
|
fetch(url)
|
||||||
.then(res => res.json())
|
.then(res => res.json())
|
||||||
.then(data => {
|
.then(data => {
|
||||||
document.getElementById('tot_sr').textContent = parseDanBulatkanKeMiliar(data['serapan_per_m'])
|
if(data){
|
||||||
document.getElementById('pr_sr').textContent = data['persentage'] + "%"
|
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-container">
|
||||||
<div class="report-header">
|
<div class="report-header">
|
||||||
<!-- <h1 class="recent-Articles">Recent Articles</h1>
|
|
||||||
<button class="view">View All</button> -->
|
|
||||||
<div class="box-container">
|
<div class="box-container">
|
||||||
<div class="box box1">
|
<div class="box box1">
|
||||||
<div class="text">
|
<div class="text">
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user