MediaWiki:Common.js: Perbedaan antara revisi

Tidak ada ringkasan suntingan
Tanda: Suntingan perangkat seluler Suntingan peramban seluler
Tidak ada ringkasan suntingan
Tanda: Suntingan perangkat seluler Suntingan peramban seluler
Baris 531: Baris 531:


/* ==========================================================
/* ==========================================================
   📍 MIPPEDIA DATA - AUTO TEXT-TO-MAP LOCATOR
   📍 MIPPEDIA DATA - ULTIMATE TEXT-TO-MAP LOCATOR
   Otomatis mengubah teks nama tempat menjadi peta visual
   Fitur: Deteksi lokasi dari teks dengan database label lengkap
   ========================================================== */
   ========================================================== */
(function() {
(function() {
     $(document).ready(function() {
     $(document).ready(function() {
        // 1. Tentukan target teks yang mau dijadiin peta
        // Kita cari di tabel data yang biasanya berisi info lokasi
         var locationText = "";
         var locationText = "";
          
          
         // Cari di baris tabel yang punya kata kunci lokasi/tempat
         // --- DAFTAR LABEL SUPER LENGKAP & MASUK AKAL ---
         $('.wikitable tr, .infobox tr').each(function() {
        var locationLabels = [
             var label = $(this).find('th').text().toLowerCase();
            // Umum & Geografis
             if (label.includes('lokasi') || label.includes('tempat') || label.includes('pusat') || label.includes('asal')) {
            'lokasi', 'tempat', 'wilayah', 'daerah', 'koordinat', 'alamat',
                 locationText = $(this).find('td').text().split(',')[0].trim(); // Ambil kata pertama sebelum koma
            // Orang (Biografi)
                 return false; // Stop pencarian kalau udah dapet
            'tempat lahir', 'asal', 'kediaman', 'domisili', 'negara asal',
            // Organisasi & Perusahaan
            'kantor pusat', 'markas', 'cabang utama', 'titik operasi',
            // Makanan & Budaya
            'asal wilayah', 'daerah asal', 'negara sumber', 'kawasan',
            // Sejarah & Bangunan
            'situs', 'letak', 'posisi', 'titik temu', 'orbit'
        ];
 
        // Jalankan pencarian di tabel data (infobox atau wikitable)
         $('.wikitable tr, .infobox tr, .mip-data-table tr').each(function() {
             var label = $(this).find('th').text().toLowerCase().trim();
             // Hilangkan karakter spesial kayak titik dua biar matching-nya akurat
            label = label.replace(/[:]/g, '');
 
            var isMatch = locationLabels.some(function(target) {
                return label === target || label.includes(target);
            });
 
            if (isMatch) {
                 var rawValue = $(this).find('td').text().trim();
                // Ambil bagian utama sebelum tanda koma, kurung, atau titik koma
                // Misal: "Bandung, Jawa Barat" -> ambil "Bandung"
                locationText = rawValue.split(/[,(\[;]/)[0].trim();  
                  
                if (locationText.length > 2) return false; // Stop jika sudah ketemu yang valid
             }
             }
         });
         });


         // 2. Kalau nemu teks lokasi (misal: "Jakarta" atau "Bandung")
         // Eksekusi Render Peta
         if (locationText && locationText.length > 2) {
         if (locationText && locationText.length > 2) {
           
             var $mapWrapper = $('<div>').css({
             var $mapWrapper = $('<div>').css({
                 'margin': '15px 0',
                 'margin': '15px 0',
                 'padding': '10px',
                 'padding': '12px',
                 'border': '1px solid #ccc',
                 'border': '1px solid #ddd',
                 'background': '#ffffff',
                 'background': '#ffffff',
                 'border-radius': '8px',
                 'border-radius': '10px',
                 'box-shadow': '0 2px 5px rgba(0,0,0,0.1)'
                 'box-shadow': '0 4px 12px rgba(0,0,0,0.08)'
             });
             });


            // Judul kecil di atas peta
             $mapWrapper.append('<div style="font-weight:bold; font-size:0.9em; margin-bottom:10px; color:#444; display:flex; align-items:center;">' +
             $mapWrapper.append('<div style="font-weight:bold; font-size:0.9em; margin-bottom:8px; color:#333;">📍 Pratinjau Lokasi: ' + locationText + '</div>');
                              '<span style="margin-right:8px;">📍</span> Pratinjau Lokasi: ' + locationText + '</div>');


             // Iframe menggunakan Nominatim (pencarian teks ke peta)
             // Embed URL dengan pencarian teks (Nominatim)
            // Kita pake fitur search OpenStreetMap biar teks "Bandung" langsung jadi titik
             var embedUrl = "https://www.openstreetmap.org/export/embed.html?layer=mapnik&q=" + encodeURIComponent(locationText);
             var embedUrl = "https://www.openstreetmap.org/export/embed.html?layer=mapnik&q=" + encodeURIComponent(locationText);


Baris 571: Baris 592:
                 'src': embedUrl,
                 'src': embedUrl,
                 'width': '100%',
                 'width': '100%',
                 'height': '250',
                 'height': '280',
                 'frameborder': '0',
                 'frameborder': '0',
                 'style': 'border-radius: 6px; border: 1px solid #eee;'
                 'style': 'border-radius: 8px; border: 1px solid #eee;'
             });
             });


             $mapWrapper.append($iframe);
             $mapWrapper.append($iframe);
              
              
             // Link tambahan ke Google Maps buat user yang mau navigasi
             // Link eksternal yang lebih rapi
             $mapWrapper.append('<div style="text-align:right; margin-top:5px;"><a href="https://www.google.com/maps/search/' + encodeURIComponent(locationText) + '" target="_blank" style="font-size:0.8em; color:#6a5acd; font-weight:bold; text-decoration:none;">Lihat di Google Maps →</a></div>');
            var gMapsUrl = "https://www.google.com/maps/search/" + encodeURIComponent(locationText);
             $mapWrapper.append('<div style="text-align:right; margin-top:8px;">' +
                              '<a href="' + gMapsUrl + '" target="_blank" style="font-size:0.75em; color:#6a5acd; font-weight:bold; text-decoration:none; text-transform:uppercase; letter-spacing:0.5px;">Buka di Google Maps →</a></div>');


             // 3. Masukkan ke halaman (di bawah deskripsi otomatis)
             // Masukkan ke bawah section deskripsi otomatis
             if ($('#mip-desc-section').length) {
             if ($('#mip-desc-section').length) {
                 $('#mip-desc-section').after($mapWrapper);
                 $('#mip-desc-section').after($mapWrapper);