Module:Infobox/Fonctions/Géolocalisation : Différence entre versions

De Lagny-sur-Marne Wiki
Aller à : navigation, rechercher
(enlève les fonctions test. Ajout d'un rétrolien vers Wikidata mais sur les très petits écrans, ça ajoute une ligne. Je réduirais volontiers la taille de l'affichage des coordonnées, mais ça risque de ne pas plaire :[es)
Ligne 113 : Ligne 113 :
 
end
 
end
  
function p.geoloc(maplist)
+
function p.geoloc(maptype, guessmaps)
 
return  {
 
return  {
 
type = 'map',
 
type = 'map',
 
latitude = 'latitude',
 
latitude = 'latitude',
class =  "infobox_v3",
 
 
longitude = 'longitude',
 
longitude = 'longitude',
wikidata = function(localdata, item) return wikidatamod.getClaims{item = item, property = 'P625'} end,
+
wikidata = function(item) return wikidatamod.getClaims{item = item, property = 'P625'} end,
maps = 'géolocalisation'
+
maps = 'géolocalisation', -- paramètre pour la liste des cartes à utiliser
 +
params = {guessmaps = guessmaps} -- = quelles cartes utiliser en l'absence de données fournies dans |gélocalisation
 
     }
 
     }
 
   
 
   
 
end
 
end
 
return p
 
return p

Version du 25 mars 2015 à 09:25

La documentation pour ce module peut être créée à Module:Infobox/Fonctions/Géolocalisation/doc

local coord = require('Module:Coordinates')
local wikidatamod = require('Module:Wikidata')
local p = {}


local p = {}
function p.country(country, label, flagdate, size) -- à faire : gestion des dates, mapping Wikidata/modèles, peut-être mettre une partie de la fonction dans un module séparé
	return function(localdata, item)
	if localdata['pays'] then -- priorité aux données locales
		country =  localdata['pays']
	end
	local countrymodule = require('Module:Country data')
	country = countrymodule.standarddisplay(country)
	local wikidatacountry = wikidatamod.formatAndCat{
		item = item,
		property = 'P17',
		displayformat = function(snak)
			local id = 'Q' .. snak.datavalue.value['numeric-id']
			local formattedval, success
			if snak.snaktype == 'value' then
				formattedval, success = countrymodule.standarddisplay(id)
			end
			if success then return
				formattedval
			else
				return wikidatamod.formatSnak(snak)
			end
		end
	}
	return  {
		type = 'mixed',
		label = 'Pays',
		value = function() return country end,
		wikidata = function() return wikidatacountry end
	}
	end
end

local function coordcore(moduleparams)
	local globe = moduleparams.globe
	local displayinline = moduleparams.displayinline
	local displaytitle = moduleparams.displaytitle
	local displayformat = moduleparams.displayformat
	if (not displaytitle and not distantitem) then displaytitle = 'title' end -- displayinline et displaytitle sont des chaînes à utiliser dans le paramètre "display" de coord
	--distantitem veut dire que le sujet de l'infobox ne correspond pas au sujet de l'article
	if not displayinline then displayinline = 'inline' end

	return function(localdata, item)
		
		-- vérifie qu'il faut afficher les coordonnées
	if localdata["géolocalisation"] == 'pas pertinent' or localdata['géolocalisation'] == 'non' and not (localdata['coordonnées'] == 'oui') then
		return nil
	end
		
	-- si paramètres donnés dans l'article, écrasent les autres
	if localdata['format coordonnées'] then
		displayformat = localdata['format coordonnées']
	end
	
	displaytitle = 'title'
	if localdata['infoboxrank'] == 'secondary' then
		displaytitle = ''
	end
	if localdata['coords en titre'] == 'oui' then
		displaytitle = 'title'
	end
	if localdata['coords en titre'] == 'non' or  localdata['coords en titre'] == '-' then
		displaytitle = ''
	end
	if localdata['coords en en ligne'] == 'oui' then
		displayinline = 'inline'
	end
	if localdata['coords en en ligne'] == 'non' or localdata['coords en en ligne'] == '-' then
		displayinline = ''
	end
	local displayplace = displaytitle .. ',' .. displayinline
	local latitude = localdata['latitude']
	local longitude = localdata['longitude']
	if localdata['globe'] then
		globe = localdata['globe']
	end
	local wikidata = localdata['wikidata'] or 'true'
	local val = coord._coord({latitude = latitude, longitude = longitude, displayformat = displayformat, display= displayplace, globe = globe, wikidata =wikidata})
	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 = wikidatamod.addLinkback(val, item, 'P625')
	end
	if displayinline == '' then
		return -- type: external text pour ne pas avoir de ligne vide en infobox
		{
		type = 'external text',
		maintenancecat = 'Page géolocalisable sans coordonnées paramétrées',
		sortkey = sortkey,
 		value = val
 		}
 	else 
 		return val
 	end
 	end
end
function p.coordinates(moduleparams)
	-- initialise les paramètres avec les valeurs du module d'infobox (moduleparams)
	if not moduleparams then moduleparams = {} end
	return {
		type = 'mixed',
		label = 'Coordonnées',
		maintenancecat = 'Page géolocalisable sans coordonnées paramétrées',
		sortkey = sortkey,
 		value = coordcore(moduleparams)
 		}	
end

function p.geoloc(maptype, guessmaps)
	return   {
		type = 'map',
		latitude = 'latitude',
		longitude = 'longitude',
		wikidata = function(item) return wikidatamod.getClaims{item = item, property = 'P625'} end,
		maps = 'géolocalisation', -- paramètre pour la liste des cartes à utiliser
		params = {guessmaps = guessmaps} -- = quelles cartes utiliser en l'absence de données fournies dans |gélocalisation
     }
 
end
return p