From 8c356399d96e40e9c0417220464881920970b604 Mon Sep 17 00:00:00 2001 From: arieeefajar Date: Thu, 12 Jun 2025 14:22:20 +0700 Subject: [PATCH] fix(master-rule): set time request api --- .../customJs/master-data/lahan/create.js | 77 +++++++++++++++++-- 1 file changed, 71 insertions(+), 6 deletions(-) diff --git a/public/assets/js/pages/customJs/master-data/lahan/create.js b/public/assets/js/pages/customJs/master-data/lahan/create.js index d29ede4..6b5cf43 100644 --- a/public/assets/js/pages/customJs/master-data/lahan/create.js +++ b/public/assets/js/pages/customJs/master-data/lahan/create.js @@ -67,6 +67,19 @@ function initMap() { }); } +function fetchWithTimeout(url, options = {}, timeout = 10000) { + return Promise.race([ + fetch(url, options), + new Promise((_, reject) => + setTimeout( + () => + reject(new Error("Request timeout, periksa koneksi Anda")), + timeout + ) + ), + ]); +} + function getLocation() { if (!navigator.geolocation) { alert("Geolocation tidak didukung oleh browser ini."); @@ -89,7 +102,7 @@ function getLocation() { var lat = position.coords.latitude; var lng = position.coords.longitude; - fetch( + fetchWithTimeout( `https://nominatim.openstreetmap.org/reverse?lat=${lat}&lon=${lng}&format=json&accept-language=id` ) .then((response) => response.json()) @@ -99,10 +112,17 @@ function getLocation() { mapContainer.style.display = "block"; map.invalidateSize(); - var address = `Desa ${data.address.village}, Kecamatan ${ - data.address.township ? data.address.township : `-` - }, Kabupaten ${data.address.city}, Provinsi ${ - data.address.state + console.log(data); + + var address = `Desa ${ + data.address.village || "-" + }, Kecamatan ${ + data.address.township || + data.address.suburb || + data.address.city_district || + "-" + }, Kabupaten ${data.address.city || "-"}, Provinsi ${ + data.address.state || "-" }`; addressField.value = address; @@ -129,8 +149,53 @@ function getLocation() { lngField.value = lng; }) .catch((error) => { - alert("Error: " + error.message); + btnLocation.disabled = false; + btnLocation.innerHTML = ` Dapatkan Lokasi Lahan!`; + alert("Terjadi kesalahan: " + error.message); }); + + // fetch( + // `https://nominatim.openstreetmap.org/reverse?lat=${lat}&lon=${lng}&format=json&accept-language=id` + // ) + // .then((response) => response.json()) + // .then((data) => { + // btnLocation.classList.add("d-none"); + // addressContainer.style.display = "block"; + // mapContainer.style.display = "block"; + // map.invalidateSize(); + + // var address = `Desa ${data.address.village}, Kecamatan ${ + // data.address.township ? data.address.township : `-` + // }, Kabupaten ${data.address.city}, Provinsi ${ + // data.address.state + // }`; + // addressField.value = address; + + // map.setView([lat, lng], 16); + + // if (currentMarker) { + // map.removeLayer(currentMarker); + // } + + // currentMarker = L.marker([lat, lng], { + // icon: iconMarker, + // draggable: true, + // }).addTo(map); + + // currentMarker.on("dragend", onPointerDragend); + + // currentMarker + // .bindPopup( + // `
Anda berada di sini
Silahkan tentukan petak lahan.
Pastikan lokasi anda sudah benar.
` + // ) + // .openPopup(); + + // latField.value = lat; + // lngField.value = lng; + // }) + // .catch((error) => { + // alert("Error: " + error.message); + // }); }, function (error) { alert("Error: " + error.message);