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 - | 📍 MIPPEDIA DATA - ULTIMATE TEXT-TO-MAP LOCATOR | ||
Fitur: Deteksi lokasi dari teks dengan database label lengkap | |||
========================================================== */ | ========================================================== */ | ||
(function() { | (function() { | ||
$(document).ready(function() { | $(document).ready(function() { | ||
var locationText = ""; | var locationText = ""; | ||
// | // --- DAFTAR LABEL SUPER LENGKAP & MASUK AKAL --- | ||
$('.wikitable tr, .infobox tr').each(function() { | var locationLabels = [ | ||
var label = $(this).find('th').text().toLowerCase(); | // Umum & Geografis | ||
'lokasi', 'tempat', 'wilayah', 'daerah', 'koordinat', 'alamat', | |||
// Orang (Biografi) | |||
return false; // Stop | '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) { | if (locationText && locationText.length > 2) { | ||
var $mapWrapper = $('<div>').css({ | var $mapWrapper = $('<div>').css({ | ||
'margin': '15px 0', | 'margin': '15px 0', | ||
'padding': ' | 'padding': '12px', | ||
'border': '1px solid # | 'border': '1px solid #ddd', | ||
'background': '#ffffff', | 'background': '#ffffff', | ||
'border-radius': ' | 'border-radius': '10px', | ||
'box-shadow': '0 | '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;">' + | |||
$mapWrapper.append('<div style="font-weight:bold; font-size:0.9em; margin-bottom: | '<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 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': ' | 'height': '280', | ||
'frameborder': '0', | 'frameborder': '0', | ||
'style': 'border-radius: | 'style': 'border-radius: 8px; border: 1px solid #eee;' | ||
}); | }); | ||
$mapWrapper.append($iframe); | $mapWrapper.append($iframe); | ||
// Link | // Link eksternal yang lebih rapi | ||
$mapWrapper.append('<div style="text-align:right; margin-top: | 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) { | if ($('#mip-desc-section').length) { | ||
$('#mip-desc-section').after($mapWrapper); | $('#mip-desc-section').after($mapWrapper); | ||