« Module:Infobox/Fonctions/Géolocalisation » : différence entre les versions
Aucun résumé des modifications |
option "defaultmaps" |
||
(41 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
local | local localdata = require( 'Module:Infobox/Localdata' ) | ||
local | local item = localdata.item | ||
local wd = require "Module:Interface Wikidata".fromLua | |||
-- Modules chargés si necessaire : | |||
-- local countrymodule = require "Module:Country data" | |||
-- local coord = require "Module:Coordinates" | |||
local p = {} | local p = {} | ||
function p.country() | |||
local function formatCountry(country) | |||
if not country then | |||
return nil | |||
end | |||
local countrymodule = require "Module:Country data" | |||
local val, success = countrymodule.standarddisplay(country) -- val = nil si country n'est pas reconnu | |||
if success then | |||
return val | |||
end | |||
end | |||
return { | return { | ||
type = 'mixed', | type = 'mixed', | ||
label = 'Pays', | label = 'Pays', | ||
value = function() return | value = function() return formatCountry(localdata['pays']) or localdata['pays'] end, | ||
wikidata = function() return | wikidata = { | ||
property = 'P17', | |||
conjtype = 'new line', | |||
displayformat = function(snak) | |||
local id = wd.getid(snak) | |||
return formatCountry(id) or wd.formatSnak(snak) | |||
end | |||
} | |||
} | } | ||
end | end | ||
function p.coordvalue(moduleparams) -- valeurs des coordonnées, sans mise en infoboîte | |||
local | local coord = require "Module: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 | return true | ||
end | end | ||
-- | -- paramètres Wikidata | ||
local wikidata = tostring(toboolean(localdata['wikidata'] or true)) -- doit être string dans Module:Coordinates | |||
local maxdistance = moduleparams.maxdistance | |||
local wikidataquery = moduleparams.wikidataquery or {property = 'P625'} | |||
if not wikidataquery.entity then | |||
wikidataquery.entity = item | |||
end | end | ||
-- paramètres d'affichage | |||
local displayformat = localdata['format coordonnées'], moduleparams.displayformat | |||
displaytitle = ' | local displayplace = '' | ||
local displayinline = toboolean(localdata['coords en ligne'] or moduleparams.displayinline or true) | |||
-- par défaut : on met dans les coordonnées de l'infobox principale en titre | |||
local displaytitle = localdata['coords en titre'] | |||
or moduleparams.displaytitle | |||
or (localdata['infoboxrank'] == 'main') | |||
if displayinline and (displayinline ~= '-') then | |||
displayplace = displayplace .. 'inline' | |||
end | end | ||
if | if displaytitle and (displaytitle ~= '-') then | ||
displayplace = displayplace .. 'title,' | |||
end | end | ||
-- données sur géograhiques | |||
local globe = localdata['globe'] or localdata['planète'] or moduleparams['globe'] or 'earth' | |||
local latitude = localdata['latitude'] | local latitude = localdata['latitude'] | ||
local longitude = localdata['longitude'] | local longitude = localdata['longitude'] | ||
if | |||
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 | end | ||
if val and latitude and longitude and localdata['référence géolocalisation'] then | if val and latitude and longitude and localdata['référence géolocalisation'] then | ||
val = val .. ' ' .. localdata['référence géolocalisation'] | val = val .. ' ' .. localdata['référence géolocalisation'] | ||
end | end | ||
if val and not localdata['latitude'] then | |||
if displayinline == | 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 | return -- type: external text pour ne pas avoir de ligne vide en infobox | ||
{ | { | ||
type = 'external text', | type = 'external text', | ||
sortkey = sortkey, | sortkey = sortkey, | ||
value = val | value = val | ||
Ligne 96 : | Ligne 108 : | ||
else | else | ||
return val | return val | ||
end | end | ||
end | end | ||
function p.coordinates(moduleparams) | function p.coordinates(moduleparams) | ||
if not moduleparams then | |||
moduleparams = {} | |||
end | |||
-- paramètre coordonnées a la priorité sur "géolocalisation" (=carte) | |||
local relevant = localdata['coordonnées'] or localdata['géolocalisation'] | |||
if relevant == '-' or relevant == 'non' then | |||
return nil | |||
end | |||
-- initialise les paramètres avec les valeurs du module d'infobox (moduleparams) | -- initialise les paramètres avec les valeurs du module d'infobox (moduleparams) | ||
return { | return { | ||
type = 'mixed', | type = 'mixed', | ||
label = 'Coordonnées', | label = 'Coordonnées', | ||
maintenancecat = 'Page géolocalisable sans coordonnées paramétrées', | maintenancecat = moduleparams.maintenancecat or 'Page géolocalisable sans coordonnées paramétrées', | ||
sortkey = sortkey, | sortkey = moduleparams.sortkey, | ||
value = | value = function (localdata) return p.coordvalue(moduleparams) end | ||
} | |||
end | end | ||
function p.geoloc( | function p.geoloc(params) | ||
if not params then | |||
params = {} | |||
end | |||
if (localdata['géolocalisation'] == '-') or (localdata['géolocalisation'] == 'pas pertinent') then | |||
return nil | |||
end | |||
return { | return { | ||
type = 'map', | type = 'map', | ||
latitude = 'latitude', | latitude = 'latitude', | ||
longitude = 'longitude', | longitude = 'longitude', | ||
wikidata = | wikidata = {property = 'P625'}, | ||
maps = | entity = item, | ||
maps = function() return localdata['géolocalisation'] or params.defaultmaps 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['planète'] or params.globe, | |||
marker = params.marker, | |||
default_zoom = params.default_zoom, | |||
params = {guessmaps = params.guessmaps} -- = quelles cartes utiliser en l'absence de données fournies dans |gélocalisation | |||
} | |||
globe = localdata | |||
end | end | ||
function p. | function p.locationmap(size) | ||
return { | return { | ||
type = ' | type = 'images', | ||
imageparameters = {'carte'}, | |||
sizeparameter = 'taille carte', | |||
defaultsize = size, | |||
property = 'P242', | |||
numval = 1, | |||
} | |||
end | end | ||
return p | return p |
Dernière version du 25 mai 2017 à 18:46
local localdata = require( 'Module:Infobox/Localdata' ) local item = localdata.item local wd = require "Module:Interface Wikidata".fromLua -- Modules chargés si necessaire : -- local countrymodule = require "Module:Country data" -- local coord = require "Module:Coordinates" local p = {}
function p.country() local function formatCountry(country) if not country then return nil end local countrymodule = require "Module: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['pays']) or localdata['pays'] 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: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['wikidata'] or true)) -- doit être string dans Module: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['format coordonnées'], moduleparams.displayformat
local displayplace = local displayinline = toboolean(localdata['coords en ligne'] or moduleparams.displayinline or true) -- par défaut : on met dans les coordonnées de l'infobox principale en titre local displaytitle = localdata['coords en titre'] or moduleparams.displaytitle or (localdata['infoboxrank'] == '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['globe'] or localdata['planète'] or moduleparams['globe'] or 'earth' local latitude = localdata['latitude'] local longitude = localdata['longitude']
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['référence géolocalisation'] then val = val .. ' ' .. localdata['référence géolocalisation'] end if val and not localdata['latitude'] 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['coordonnées'] or localdata['géolocalisation'] 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 = 'Coordonnées', 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['géolocalisation'] == '-') or (localdata['géolocalisation'] == 'pas pertinent') then return nil end
return { type = 'map', latitude = 'latitude', longitude = 'longitude', wikidata = {property = 'P625'}, entity = item, maps = function() return localdata['géolocalisation'] or params.defaultmaps 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['planète'] or params.globe, marker = params.marker, default_zoom = params.default_zoom, 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