MediaWiki:Gadget-WikidataCoords.js
Utseende
OBS: Efter du har publicerat sidan kan du behöva tömma din webbläsares cache för att se ändringarna.
- Firefox / Safari: Håll ned Skift och klicka på Uppdatera sidan eller tryck Ctrl-F5 eller Ctrl-R (⌘-R på Mac)
- Google Chrome: Tryck Ctrl-Skift-R (⌘-Skift-R på Mac)
- Edge Håll ned Ctrl och klicka på Uppdatera eller tryck Ctrl-F5.
- Opera: Tryck Ctrl-F5.
//<nowiki>
$( function() {
'use strict';
var v = mw.config.get();
var api = new mw.Api();
var iwapi = new mw.ForeignApi( 'https://www.wikidata.org/w/api.php' );
function decToDms( dec ) {
var absdec = Math.abs(dec);
var d = Math.floor( absdec );
var m = Math.floor( 60 * ( absdec - d ) );
var s = Math.round( 3600 * ( absdec - d ) - 60 * m );
if ( s === 60 ) {
m = m + 1;
s = 0;
}
if ( m === 60 ) {
d = d + 1;
m = 0;
}
var d_with_sign = d;
if (dec<0) {
d_with_sign = -1*d;
}
return [ d_with_sign, m, s ];
}
if ( v.wgWikibaseItemId ) {
if ( !$( '#mw-indicator-coordinates' ).length ) {
iwapi.get( {
action: 'wbgetentities',
ids: v.wgWikibaseItemId,
props: 'claims',
formatversion: 2
} ).done( function( wikidatares ) {
var entitiesobj = wikidatares.entities;
var entityobj;
var claimsobj;
var geoarr;
var geoobj;
var snakobj;
var datavalueobj;
var valueobj;
if ( entitiesobj ) {
entityobj = entitiesobj[ v.wgWikibaseItemId ];
if ( entityobj ) {
claimsobj = entityobj.claims;
if ( claimsobj ) {
geoarr = claimsobj.P625;
if ( Array.isArray( geoarr ) ) {
geoobj = geoarr[ 0 ];
if ( geoobj ) {
snakobj = geoobj.mainsnak;
if ( snakobj ) {
datavalueobj = snakobj.datavalue;
if ( datavalueobj ) {
valueobj = datavalueobj.value;
if ( valueobj ) {
if ( valueobj.globe ) {
$.getJSON( v.wgScript + '?title=MediaWiki:Gadget-WikidataCoords.json&action=raw&ctype=text/json', function( globenames ) {
var latCard = 'N';
var lonCard = 'E';
var tpl = '{{Coord';
var lat;
var lon;
var latArr;
var lonArr;
var latD;
var lonD;
var globe;
if ( globenames ) {
globe = globenames[ valueobj.globe.match( /Q[0-9]+$/ ) ];
if ( valueobj.hasOwnProperty( 'latitude' ) && valueobj.hasOwnProperty( 'longitude' ) ) {
lat = valueobj.latitude;
lon = valueobj.longitude;
latArr = decToDms( lat );
lonArr = decToDms( lon );
latD = latArr[ 0 ];
lonD = lonArr[ 0 ];
if ( latD < 0 ) {
latCard = 'S';
}
if ( lonD < 0 ) {
lonCard = 'W';
}
latD = Math.abs( latD );
lonD = Math.abs( lonD );
tpl += '|' + latD + '|' + latArr[ 1 ] + '|' + latArr[ 2 ] + '|' + latCard;
tpl += '|' + lonD + '|' + lonArr[ 1 ] + '|' + lonArr[ 2 ] + '|' + lonCard;
tpl += '|display=title';
if ( globe ) {
tpl += '|globe:' + globe;
}
tpl += '}}';
api.get( {
action: 'parse',
title: v.wgPageName,
text: tpl,
prop: 'indicators',
formatversion: 2
} ).done( function( parseres ) {
var parseobj = parseres.parse;
var indicatorsobj;
var coords;
var coordsElem;
var indicatorElem;
if ( parseobj ) {
indicatorsobj = parseobj.indicators;
if ( indicatorsobj ) {
coords = indicatorsobj.coordinates;
if ( coords ) {
coordsElem = $( coords );
indicatorElem = coordsElem.wrap( '<div id="mw-indicator-coordinates" class="mw-indicator gadget-wikidatacoords"></div>' ).parent();
$( '.mw-indicators' ).prepend( indicatorElem );
mw.hook( 'coordinatesadded' ).fire();
}
}
}
} );
}
}
} );
}
}
}
}
}
}
}
}
}
} );
}
}
} );
//</nowiki>