MediaWiki:Common.js: Difference between revisions
MediaWiki interface page
More actions
Eloise Zomia (talk | contribs) Created page with "→Any JavaScript here will be loaded for all users on every page load.: →Landrace map bootstrap (Common.js): (function () { var LVER = '1.9.4', CDN = 'https://unpkg.com/leaflet@' + LVER + '/dist/'; function addCSS(href,id){if(id&&document.getElementById(id))return;var l=document.createElement('link');l.rel='stylesheet';l.href=href;if(id)l.id=id;document.head.appendChild(l);} function addJS(src,cb){if(window.L)return cb();var s=document.createElement('script..." |
Eloise Zomia (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
/* | /* Landrace.wiki – Interactive map bootstrap (Common.js) */ | ||
(function () { | |||
var LVER = '1.9.4'; | |||
var CDN = 'https://unpkg.com/leaflet@' + LVER + '/dist/'; | |||
/* | /* --- tiny helpers to load Leaflet --- */ | ||
function addCSS(href, id) { | |||
if (id && document.getElementById(id)) return; | |||
function addCSS(href,id){if(id&&document.getElementById(id))return;var l=document.createElement('link');l.rel='stylesheet';l.href=href;if(id)l.id=id;document.head.appendChild(l);} | var l = document.createElement('link'); | ||
function addJS(src,cb){if(window.L)return cb();var s=document.createElement('script');s.src=src;s.onload=cb;document.head.appendChild(s);} | l.rel = 'stylesheet'; l.href = href; if (id) l.id = id; | ||
function statusColor(s){return({Stable:'#2ecc71',Vulnerable:'#f1c40f',Endangered:'#e67e22',Critical:'#e74c3c',Lost:'#95a5a6'})[s]||'#3498db';} | document.head.appendChild(l); | ||
function popup(kind,p){ | } | ||
if(kind==='accessions'){ | function addJS(src, cb) { | ||
var t=[p.accession_id,p.local_name].filter(Boolean).join(' — '); | if (window.L) return cb(); | ||
var link=p.page_url?`<br><a href="${p.page_url}">Open accession</a>`:''; | var s = document.createElement('script'); | ||
s.src = src; s.onload = cb; | |||
document.head.appendChild(s); | |||
} | |||
/* --- UI helpers --- */ | |||
function statusColor(s) { | |||
return ({ | |||
Stable:'#2ecc71', Vulnerable:'#f1c40f', | |||
Endangered:'#e67e22', Critical:'#e74c3c', Lost:'#95a5a6' | |||
})[s] || '#3498db'; | |||
} | |||
function popup(kind, p) { | |||
if (kind === 'accessions') { | |||
var t = [p.accession_id, p.local_name].filter(Boolean).join(' — '); | |||
var link = p.page_url ? `<br><a href="${p.page_url}">Open accession</a>` : ''; | |||
return `<b>${t}</b><br>${p.status||''}${link}`; | return `<b>${t}</b><br>${p.status||''}${link}`; | ||
} | } | ||
return `<b>${p.name||''}</b><br>${(p.level||kind)} • ${p.status||''}`; | return `<b>${p.name||''}</b><br>${(p.level||kind)} • ${p.status||''}`; | ||
} | } | ||
function initOne(el){ | |||
if(el.dataset.init) return; el.dataset.init='1'; | function initOne(el) { | ||
var map=L.map(el).setView([20,85],3); | if (el.dataset.init) return; el.dataset.init = '1'; | ||
L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png',{attribution:'© OSM'}).addTo(map); | |||
var map = L.map(el).setView([20, 85], 3); | |||
L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution:'© OSM' }).addTo(map); | |||
// in-map legend (matches site colors) | |||
var legend = L.control({ position:'bottomleft' }); | |||
legend.onAdd = function () { | |||
var | var div = L.DomUtil.create('div', 'lw-legend-map'); | ||
var items = [ | |||
['#2ecc71','Stable'], ['#f1c40f','Vulnerable'], | |||
['#e67e22','Endangered'], ['#e74c3c','Critical'], | |||
['#95a5a6','Lost'] | |||
].map(([c,l]) => `<span class= | |||
Revision as of 07:43, 24 August 2025
/* Landrace.wiki – Interactive map bootstrap (Common.js) */ (function () { var LVER = '1.9.4'; var CDN = 'https://unpkg.com/leaflet@' + LVER + '/dist/'; /* --- tiny helpers to load Leaflet --- */ function addCSS(href, id) { if (id && document.getElementById(id)) return; var l = document.createElement('link'); l.rel = 'stylesheet'; l.href = href; if (id) l.id = id; document.head.appendChild(l); } function addJS(src, cb) { if (window.L) return cb(); var s = document.createElement('script'); s.src = src; s.onload = cb; document.head.appendChild(s); } /* --- UI helpers --- */ function statusColor(s) { return ({ Stable:'#2ecc71', Vulnerable:'#f1c40f', Endangered:'#e67e22', Critical:'#e74c3c', Lost:'#95a5a6' })[s] || '#3498db'; } function popup(kind, p) { if (kind === 'accessions') { var t = [p.accession_id, p.local_name].filter(Boolean).join(' — '); var link = p.page_url ? `<br><a href="${p.page_url}">Open accession</a>` : ''; return `<b>${t}</b><br>${p.status||''}${link}`; } return `<b>${p.name||''}</b><br>${(p.level||kind)} • ${p.status||''}`; } function initOne(el) { if (el.dataset.init) return; el.dataset.init = '1'; var map = L.map(el).setView([20, 85], 3); L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution:'© OSM' }).addTo(map); // in-map legend (matches site colors) var legend = L.control({ position:'bottomleft' }); legend.onAdd = function () { var div = L.DomUtil.create('div', 'lw-legend-map'); var items = [ ['#2ecc71','Stable'], ['#f1c40f','Vulnerable'], ['#e67e22','Endangered'], ['#e74c3c','Critical'], ['#95a5a6','Lost'] ].map(([c,l]) => `<span class=