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 632: | Baris 632: | ||
}); | }); | ||
})(jQuery, mediaWiki); | })(jQuery, mediaWiki); | ||
/* ========================================================== | |||
📍 MIPPEDIA DATA - ULTIMATE TEXT-TO-MAP LOCATOR | |||
Fitur: Deteksi lokasi dari teks dengan database label lengkap | |||
========================================================== */ | |||
(function() { | |||
$(document).ready(function() { | |||
var locationText = ""; | |||
// --- DAFTAR LABEL SUPER LENGKAP & MASUK AKAL --- | |||
var locationLabels = [ | |||
// Umum & Geografis | |||
'lokasi', 'tempat', 'wilayah', 'daerah', 'koordinat', 'alamat', | |||
// Orang (Biografi) | |||
'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 | |||
} | |||
}); | |||
// Eksekusi Render Peta | |||
if (locationText && locationText.length > 2) { | |||
var $mapWrapper = $('<div>').css({ | |||
'margin': '15px 0', | |||
'padding': '12px', | |||
'border': '1px solid #ddd', | |||
'background': '#ffffff', | |||
'border-radius': '10px', | |||
'box-shadow': '0 4px 12px rgba(0,0,0,0.08)' | |||
}); | |||
$mapWrapper.append('<div style="font-weight:bold; font-size:0.9em; margin-bottom:10px; color:#444; display:flex; align-items:center;">' + | |||
'<span style="margin-right:8px;">📍</span> Pratinjau Lokasi: ' + locationText + '</div>'); | |||
// Embed URL dengan pencarian teks (Nominatim) | |||
var embedUrl = "https://www.openstreetmap.org/export/embed.html?layer=mapnik&q=" + encodeURIComponent(locationText); | |||
var $iframe = $('<iframe>').attr({ | |||
'src': embedUrl, | |||
'width': '100%', | |||
'height': '280', | |||
'frameborder': '0', | |||
'style': 'border-radius: 8px; border: 1px solid #eee;' | |||
}); | |||
$mapWrapper.append($iframe); | |||
// Link eksternal yang lebih rapi | |||
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>'); | |||
// Masukkan ke bawah section deskripsi otomatis | |||
if ($('#mip-desc-section').length) { | |||
$('#mip-desc-section').after($mapWrapper); | |||
} | |||
} | |||
}); | |||
})(); | |||