document.addEventListener("DOMContentLoaded", function () { const KM_TO_MILES = 0.621371; function setupKilometreRadius() { const radiusInput = document.getElementById("city_filter_radius_miles"); if (!radiusInput || radiusInput.dataset.kmSetup === "true") { return; } radiusInput.dataset.kmSetup = "true"; // ----------------------------------------- // Change "Radius (miles)" to "Radius (km)" // ----------------------------------------- const container = radiusInput.parentElement; if (container) { const label = container.querySelector(".label"); if (label) { label.textContent = "Radius (km)"; } } // ----------------------------------------- // Make the field behave as kilometres // ----------------------------------------- radiusInput.placeholder = "25"; // Niceboard allows up to 300 miles. // Equivalent maximum is approximately 483 km. radiusInput.min = "1"; radiusInput.max = "483"; // ----------------------------------------- // Convert km -> miles when search is submitted // ----------------------------------------- const form = radiusInput.closest("form"); if (form && form.dataset.kmRadiusSetup !== "true") { form.dataset.kmRadiusSetup = "true"; form.addEventListener("submit", function () { const km = parseFloat(radiusInput.value); if (!isNaN(km)) { const miles = km * KM_TO_MILES; // Niceboard receives miles radiusInput.value = miles.toFixed(2); } }); } } // Initial page load setupKilometreRadius(); // Niceboard may dynamically rebuild search controls const observer = new MutationObserver(function () { setupKilometreRadius(); }); observer.observe(document.body, { childList: true, subtree: true });});