Jump to content

MediaWiki:Common.js: Difference between revisions

From Costa Sano MediaWiki
No edit summary
No edit summary
Line 1: Line 1:
console.log("Common.js loaded");
console.log("Common.js loaded");


// Watch for dynamically inserted form fields
// The form is already present in the DOM, so we can run immediately
const observer = new MutationObserver(() => {
$(function() {
     const addr = document.querySelector('input[name="address"]');
     const addr = $('input[name="Place[address]"]');
     if (addr) {
     const lat  = $('input[name="Place[latitude]"]');
        console.log("Address field detected!");
    const lon  = $('input[name="Place[longitude]"]');


        // Stop observing once found
    console.log("Address fields found:", addr.length);
        observer.disconnect();


        const lat = document.querySelector('input[name="latitude"]');
    if (addr.length === 0) {
         const lon = document.querySelector('input[name="longitude"]');
         console.log("Address field not found");
        return;
    }


        // Attach geocoding
    addr.on('change', function() {
        addr.addEventListener('change', () => {
        const q = encodeURIComponent(addr.val());
            const q = encodeURIComponent(addr.value);
        if (!q) return;
            if (!q) return;


            const url = 'https://nominatim.openstreetmap.org/search?format=json&q=' + q;
        const url = 'https://nominatim.openstreetmap.org/search?format=json&q=' + q;


            fetch(url)
        $.getJSON(url, function(data) {
                .then(r => r.json())
            if (data && data.length > 0) {
                .then(data => {
                lat.val(data[0].lat);
                    if (data && data.length > 0) {
                lon.val(data[0].lon);
                        lat.value = data[0].lat;
            }
                        lon.value = data[0].lon;
                    }
                });
         });
         });
     }
     });
});
});
// Start observing the whole document
observer.observe(document.body, { childList: true, subtree: true });

Revision as of 14:53, 14 February 2026

console.log("Common.js loaded");

// The form is already present in the DOM, so we can run immediately
$(function() {
    const addr = $('input[name="Place[address]"]');
    const lat  = $('input[name="Place[latitude]"]');
    const lon  = $('input[name="Place[longitude]"]');

    console.log("Address fields found:", addr.length);

    if (addr.length === 0) {
        console.log("Address field not found");
        return;
    }

    addr.on('change', function() {
        const q = encodeURIComponent(addr.val());
        if (!q) return;

        const url = 'https://nominatim.openstreetmap.org/search?format=json&q=' + q;

        $.getJSON(url, function(data) {
            if (data && data.length > 0) {
                lat.val(data[0].lat);
                lon.val(data[0].lon);
            }
        });
    });
});