Moduulin Fr:Infobox/Fonctions/Géolocalisation käyttöohje
Tämä sivu on kopio. Tätä ohjetta muokataan muokkaamalla suomenkielisessä Wikipediassa olevaa alkuperäistä versiota jonka muutokset kopioituvat automaattisesti tälle sivulle. Tämä moduuli on osa ranskankielisestä Wikipediasta kopioitua Wikidata ja Interface Wikidata -moduulikokonaisuutta (ks. ohjeet ja esimerkit). Listauksen kaikista tähän liittyvistä moduuleista löydät Ranskankielisen Wikipedian Wikidata-moduulit -sivulta.
|
local localdata = require( 'Module:Fr:Infobox/Localdata' )
local item = localdata.item
local id
if item then
id = item.id
end
local wd = require "Module:Fr:Interface Wikidata".fromLua
-- Modules chargés si necessaire :
-- local countrymodule = require "Module:Fr:Country data"
-- local coord = require "Module:Fr:Coordinates"
local p = {}
function p.country()
local function formatCountry(country)
if not country then
return nil
end
local countrymodule = require "Module:Fr:Country data"
local val, success = countrymodule.standarddisplay(country) -- val = nil si country n'est pas reconnu
if success then
return val
end
end
return {
type = 'mixed',
label = 'Pays',
value = function() return formatCountry(localdata) or localdata end,
wikidata = {
property = 'P17',
conjtype = 'new line',
displayformat = function(snak)
local id = wd.getid(snak)
return formatCountry(id) or wd.formatSnak(snak)
end
}
}
end
function p.coordvalue(moduleparams) -- valeurs des coordonnées, sans mise en infoboîte
local coord = require "Module:Fr:Coordinates"
if not moduleparams then
moduleparams = {}
end
local function toboolean(val) -- transforme un "-" en false au moment voulu
if val == '-' or val == 'non' then
return false
end
return true
end
-- paramètres Wikidata
local wikidata = tostring(toboolean(localdata or true)) -- doit être string dans Module:Fr:Coordinates
local maxdistance = moduleparams.maxdistance
local wikidataquery = moduleparams.wikidataquery or {property = 'P625'}
if not wikidataquery.entity then
wikidataquery.entity = item
end
-- paramètres d'affichage
local displayformat = localdata, moduleparams.displayformat
local displayplace = ''
local displayinline = toboolean(localdata or moduleparams.displayinline or true)
-- par défaut : on met dans les coordonnées de l'infobox principale en titre
local displaytitle = localdata
or moduleparams.displaytitle
or (localdata == 'main')
if displayinline and (displayinline ~= '-') then
displayplace = displayplace .. 'inline'
end
if displaytitle and (displaytitle ~= '-') then
displayplace = displayplace .. 'title,'
end
-- données sur géograhiques
local globe = localdata or localdata or moduleparams or 'earth'
local latitude = localdata
local longitude = localdata
local parameterlist = {
latitude = latitude,
longitude = longitude,
displayformat = displayformat,
display= displayplace,
globe = globe,
wikidata = wikidata,
wikidataquery = wikidataquery,
maxdistance = maxdistance,
}
local val = coord._coord(parameterlist)
if (not val) and moduleparams.fallbackquery then -- si pas de valeur, essayer la query de sustitution
parameterlist.wikidataquery = moduleparams.fallbackquery
parameterlist.wikidataquery.entity = item
val = coord._coord(parameterlist)
end
if val and latitude and longitude and localdata then
val = val .. ' ' .. localdata
end
if val and not localdata then
val = wd.addLinkback(val, item, wikidataquery.property)
end
if displayinline == false then
return -- type: external text pour ne pas avoir de ligne vide en infobox
{
type = 'external text',
sortkey = sortkey,
value = val
}
else
return val
end
end
function p.coordinates(moduleparams)
if not moduleparams then
moduleparams = {}
end
-- paramètre coordonnées a la priorité sur "géolocalisation" (=carte)
local relevant = localdata or localdata
if relevant == '-' or relevant == 'non' then
return nil
end
-- initialise les paramètres avec les valeurs du module d'infobox (moduleparams)
return {
type = 'mixed',
label = 'Koordinaatit',
maintenancecat = moduleparams.maintenancecat or 'Page géolocalisable sans coordonnées paramétrées',
sortkey = moduleparams.sortkey,
value = function (localdata) return p.coordvalue(moduleparams) end
}
end
function p.geoloc(params)
if not params then
params = {}
end
if (localdata == '-') or (localdata == 'pas pertinent') then
return nil
end
local function guesszoom(item)
local area = wd.formatStatements{entity = item, property = "P2046", targetunit = "square kilometer", displayformat = "raw"}
if (not area) or not(tonumber(area)) then
return 7
end
area = tonumber(area)
if area > 100000 then
return 3
end
if area > 10000 then
return 4
end
if area > 1000 then
return 5
end
if area > 100 then
return 6
end
return 7
end
return {
type = 'map',
latitude = 'latitude',
longitude = 'longitude',
wikidata = {property = 'P625'},
entity = em,
maps = function() return localdata or params.defaultmaps or "interactive" end, -- paramètre pour la liste des cartes à utiliser
staticmaps = 'carte', -- carte en mode image simple
staticmapsWD = {property = "P242", numval = 1}, -- p
pointtype = params.pointtype,
maptype = params.maptype,
globe = localdata.globe or localdata or params.globe,
marker = params.marker,
default_zoom = localdata or params.default_zoom or guesszoom(item),
ids = params.ids or id,
params = {guessmaps = params.guessmaps} -- = quelles cartes utiliser en l'absence de données fournies dans |gélocalisation
}
end
function p.locationmap(size)
return {
type = 'images',
imageparameters = {'carte'},
sizeparameter = 'taille carte',
defaultsize = size,
property = 'P242',
numval = 1,
}
end
return p