Module:Infobox/Fonctions/Division administrative
< Module:Infobox | Fonctions
Cette page définit un module d'infobox.
La documentation de ce module est générée par le modèle {{Documentation module}}.
Elle est incluse depuis la page Modèle:Documentation module d'infobox. Veuillez placer les catégories sur cette page-là.
Les éditeurs peuvent travailler dans le bac à sable (modifier).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
local wikidata = require('Module:Wikidata')
local p = {}
function p.population() -- retourne la table de données population / densité
local function popnum(localdata)
local pop, popdate
if localdata['population'] then
pop = localdata['population']
popdate = localdata['année_pop'] or ''
elseif localdata.item then
local popdata = wikidata.getClaims{entity= localdata.item, property = 'P1082'}
if popdata and popdata[1].mainsnak.snaktype == 'value' then
pop = popdata[1].mainsnak.datavalue.value.amount
if popdata[1].qualifiers
and popdata[1].qualifiers.P585
and popdata[1].qualifiers.P585[1].snaktype == 'value'
then
popdate = popdata[1].qualifiers.P585[1].datavalue.value.time
popdate = popdate:sub( 2, 5 )
end
end
end
return tonumber(pop), popdate
end
local function population(localdata)
local pop, date = popnum(localdata)
if pop then
if date then
return mw.getContentLanguage():formatNum(pop) .. ' (' .. date .. ')'
else
return mw.getContentLanguage():formatNum(pop)
end
end
end
local function density(localdata)
local area = tonumber(localdata.superficie)
local pop = popnum(localdata)
if area and pop then
return pop / area
end
end
return {
type = 'table',
title = 'Population',
rows = {
{type='mixed', label = 'Population', value = population},
{type='mixed', label = label, value = density},
}
}
end
local function wikidataDivRows() -- liste de lignes de divisions administrative basée sur des données de Wikidata
if not localdata.item then
return nil
end
-- on cherche le pays pour être sûr de s'arrêter avant
local country = wikidata.stringTable{entity = localdata.item, property = "P17", displayformat = "raw"}
local countryid
if country then
countryid = country[1]
end
-- récupération des valeurs
local list = wikidata.transitiveVals(localdata.item, {property = "P131"}, 3, 5, countryid)
if not list then
return nil
end
-- création des colonnes
local rows = {}
for i, div in pairs(list) do
if (div == countryid) then
break
end
local label = wikidata.formatStatements{
entity = div,
property = "P31",
numval = 1,
defaultlinkquery = {property = "P2354"},-- si pas de lien, lier vers la page de liste e.g liste des Etats de Califorie
defaultlink = "-", -- si aucun lien Wikipédia, pas de lien Wikidata
labelformat = function(id)
local str = wikidata.getLabel(id)
return removeComplement(str)
end
}
local val = wikidata.formatEntity(div)
table.insert(rows, 1, {type = "row", label = label, value = function() return val end})
end
return rows
end
return p