From 4d693b5cf2cdfe39286d040ca016bf48f223203f Mon Sep 17 00:00:00 2001 From: Saulo Benigno Date: Sat, 28 Mar 2026 12:26:50 -0300 Subject: [PATCH 1/5] feat(weather): allow manual latitude/longitude input - Remove readonly attribute from latitude and longitude inputs so users can type coordinates directly without using the map picker - Re-read coordinate inputs when opening the map modal so manually entered values are respected; validated with Number.isFinite - Recalculate zoom level based on whether coordinates are present, matching mini_weather behavior (4.5 if set, 2.5 if not) - Reinitialize map view and marker position when the map is already initialized and reopened with updated coordinates --- src/plugins/weather/settings.html | 39 ++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/src/plugins/weather/settings.html b/src/plugins/weather/settings.html index 8e137ef86..3a26b2f62 100644 --- a/src/plugins/weather/settings.html +++ b/src/plugins/weather/settings.html @@ -5,11 +5,11 @@
Latitude - +
Longitude - +
@@ -169,16 +169,31 @@

Select Location

const $mapModal = document.querySelector('#mapModal'); const $closeMap = document.querySelector('#closeMap'); - let latitude = +$latitude.value; - let longitude = +$longitude.value; - let zoom = latitude && longitude ? 4.5 : 2.5; + let latitude = Number($latitude.value) || 0; + let longitude = Number($longitude.value) || 0; + let zoom = $latitude.value && $longitude.value ? 4.5 : 2.5; let selectedTitle = 'location'; let weatherProvider = 'OpenMeteo'; let map, marker; $openMap.addEventListener('click', () => { - openModal('mapModal') + // Re-read the current latitude/longitude inputs in case the user + // edited them manually after the page loaded. + const latInput = document.getElementById('latitude').value; + const longInput = document.getElementById('longitude').value; + const parsedLat = Number(latInput); + const parsedLong = Number(longInput); + + if (Number.isFinite(parsedLat) && Number.isFinite(parsedLong)) { + latitude = parsedLat; + longitude = parsedLong; + } + + // Recompute zoom based on whether coordinates are present + zoom = (document.getElementById('latitude').value && document.getElementById('longitude').value) ? 4.5 : 2.5; + + openModal('mapModal'); setTimeout(() => { if (!map) { map = L.map('map').setView([latitude, longitude], zoom); @@ -188,6 +203,10 @@

Select Location

map.on('click', event => { marker.setLatLng(event.latlng); }); + } else { + map.invalidateSize(); + map.setView([latitude, longitude], zoom); + marker.setLatLng([latitude, longitude]); } }, 100); }); @@ -200,8 +219,8 @@

Select Location

}); if (loadPluginSettings) { - document.getElementById('latitude').value = pluginSettings.latitude; - document.getElementById('longitude').value = pluginSettings.longitude; + document.getElementById('latitude').value = pluginSettings.latitude || ''; + document.getElementById('longitude').value = pluginSettings.longitude || ''; document.getElementById('units').value = pluginSettings.units; @@ -255,6 +274,10 @@

Select Location

document.getElementById('weatherTimeZone').value = "locationTimeZone"; } + latitude = Number(document.getElementById('latitude').value) || 0; + longitude = Number(document.getElementById('longitude').value) || 0; + zoom = document.getElementById('latitude').value && document.getElementById('longitude').value ? 4.5 : 2.5; + document.getElementById('weatherProvider').value = weatherProvider; document.querySelector(`input[name="titleSelection"][value="${selectedTitle}"]`).checked = true; updateTitleOptions(weatherProvider) From ac3ee1d689c13b7fa10d3a209c7118017e2e3610 Mon Sep 17 00:00:00 2001 From: Saulo Benigno Date: Sat, 28 Mar 2026 12:48:57 -0300 Subject: [PATCH 2/5] feat(weather): enhance coordinate handling with validation functions --- src/plugins/weather/settings.html | 55 ++++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 15 deletions(-) diff --git a/src/plugins/weather/settings.html b/src/plugins/weather/settings.html index 3a26b2f62..417144f89 100644 --- a/src/plugins/weather/settings.html +++ b/src/plugins/weather/settings.html @@ -117,6 +117,16 @@

Select Location