mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 08:51:09 -05:00
54 lines
2.3 KiB
JavaScript
54 lines
2.3 KiB
JavaScript
document.addEventListener('DOMContentLoaded', function() {
|
|
const useLocationBtn = document.getElementById('use-my-location');
|
|
const latInput = document.getElementById('lat-input');
|
|
const lngInput = document.getElementById('lng-input');
|
|
const locationInput = document.getElementById('location-input');
|
|
|
|
if (useLocationBtn && 'geolocation' in navigator) {
|
|
useLocationBtn.addEventListener('click', function() {
|
|
this.textContent = '📍 Getting location...';
|
|
this.disabled = true;
|
|
|
|
navigator.geolocation.getCurrentPosition(
|
|
function(position) {
|
|
latInput.value = position.coords.latitude;
|
|
lngInput.value = position.coords.longitude;
|
|
locationInput.value = `${position.coords.latitude.toFixed(6)}, ${position.coords.longitude.toFixed(6)}`;
|
|
useLocationBtn.textContent = '✅ Location set';
|
|
setTimeout(() => {
|
|
useLocationBtn.textContent = '📍 Use My Location';
|
|
useLocationBtn.disabled = false;
|
|
}, 2000);
|
|
},
|
|
function(error) {
|
|
useLocationBtn.textContent = '❌ Location failed';
|
|
console.error('Geolocation error:', error);
|
|
setTimeout(() => {
|
|
useLocationBtn.textContent = '📍 Use My Location';
|
|
useLocationBtn.disabled = false;
|
|
}, 2000);
|
|
}
|
|
);
|
|
});
|
|
} else if (useLocationBtn) {
|
|
useLocationBtn.style.display = 'none';
|
|
}
|
|
|
|
// Autocomplete for location search
|
|
if (locationInput) {
|
|
locationInput.addEventListener('input', function() {
|
|
const query = this.value;
|
|
if (query.length < 3) {
|
|
return;
|
|
}
|
|
|
|
fetch(`/search/location/suggestions/?q=${query}`)
|
|
.then(response => response.json())
|
|
.then(data => {
|
|
// This is a simplified example. A more robust solution would use a library like Awesomplete or build a custom dropdown.
|
|
console.log('Suggestions:', data.suggestions);
|
|
})
|
|
.catch(error => console.error('Error fetching suggestions:', error));
|
|
});
|
|
}
|
|
}); |