Cette page est semi-protégée.

Module:Infobox/Fonctions/Bâtiment

Une page de Wikipédia, l'encyclopédie libre.
Sauter à la navigation Sauter à la recherche

 Documentation[modifier] [purger]

Cette page réunit des fonctions qui peuvent être réutilisées pour construire des modules d'infobox visant à décrire un bâtiment ou un monument. Sauf mention contraire, les fonctions utilisent des données fournies en paramètre dans l'article, ou alors, lorsque celles-ci sont absentes, des données issues de Wikidata.

Fonctions exportables

p.creator()

Ligne ou ensemble de lignes présentant les personnes ayant participé à la création du bâtiment.

Libellé de la ligne (singulier) Nom du paramètre Propriété Wikidata Libellé de la ligne (pluriel)
Architecte architecte P84 (« architecte ») Architectes
Ingénieur ingénieur P631 (« ingénieur de structure ») Ingénieurs
Autres créateurs Créateur P170 (« créateur »)[1] Créateurs
  1. Désactivé lorsque les paramètres "ingénieur" ou "architecte" sont remplis (risque de doublon)


p.owner()

Ligne ou ensemble de lignes indiquant les propriétaires présents ou passés.

Libellé de la ligne (singulier) Nom du paramètre Propriété Wikidata Libellé de la ligne (pluriel) Note
Propriétaire propriétaire P127 (« propriétaire »)[1] Propriétaires
Propriétaire initial propriétaire initial - - déprécié
Propriétaire actuel propriétaire actuel - - déprécié
  1. Affichage et mise en forme définie par Module:Propriétaire

p.shape()

Ligne indiquant la forme géométrique du bâtiment

Libellé de la ligne (singulier) Nom du paramètre Propriété Wikidata Libellé de la ligne (pluriel) Note
Forme forme P1419 (« forme géométrique ») - paramètre alternatif déprécié : "aspect"


p.dimensions()

Ligne ou ensemble de lignes indiquant la longueur, la hauteur, etc. du bâtiment. Pour les données Wikidata, les valeurs sont exprimées en mètres.

Libellé de la ligne (singulier) Nom du paramètre Propriété Wikidata Libellé de la ligne (pluriel) Note
Longueur longueur P2043 (« longueur ») Propriétaires
Largeur largeur P2049 (« largeur ») -
Diamètre diamètre P2386 (« diamètre ») -
Périmètre périmètre P2547 (« périmètre ») - paramètres synonymes dépréciés : 'contour', 'circonférence'
Hauteur hauteur P2048 (« hauteur ») -
Profondeur profondeur P2610 (« épaisseur ») -
Superficie surface P2046 (« superficie ») - paramètres synonymes dépréciés : "superficie"
Volume volume P2234 (« volume ») -

p.floors()

Nombre d"étages au dessus et en dessous du sol

Libellé de la ligne (singulier) Nom du paramètre Propriété Wikidata Libellé de la ligne (pluriel) Note
Étages étages P1101 (« nombre de niveaux au dessus du sol ») - 1 unité déduite de la valeur de Wikidata pour ne pas compter le rez-de-chaussée.
Paramètre synonyme déprécié : "niveaux au-dessus du sol"
Sous-sols sous-sols P1139 (« niveaux de sous-sol ») -

p.destroyeby()

Libellé de la ligne (singulier) Nom du paramètre Propriété Wikidata Libellé de la ligne (pluriel) Note
Détruit par détruit par P770 (« cause de la destruction ») - paramètre alternatif déprécié : "cause de la destruction"

p.material()

Matériaux utilisés pour la construction

Libellé de la ligne (singulier) Nom du paramètre Propriété Wikidata Libellé de la ligne (pluriel) Note
Matériau matériau P186 (« matériau »)[1] matériaux
  1. mis en forme par Module:Matériau

p.color()

Couleur du bâtiment

Libellé de la ligne (singulier) Nom du paramètre Propriété Wikidata Libellé de la ligne (pluriel) Note
Couleur | P462 (« couleur »)[1] Couleurs paramètre alternatif déprécié : "couleurs"

p.inscription()

Libellé de la ligne (singulier) Nom du paramètre Propriété Wikidata Libellé de la ligne (pluriel) Note
Inscription | P1684 (« inscription »)[2] - paramètre alternatif déprécié : "enseigne"
  1. mis en forme par Module:Matériau
  2. seule la première valeur de la propriété est affichée

p.equipment()

Libellé de la ligne (singulier) Nom du paramètre Propriété Wikidata Libellé de la ligne (pluriel) Note
Équipement équipement P912 (« équipement ») - paramètre alternatif déprécié : "équipements"

p.replaces()

Libellé de la ligne (singulier) Nom du paramètre Propriété Wikidata Libellé de la ligne (pluriel) Note
Remplace remplace P1398 (« structure précédente ») -

p.replacedby()

Libellé de la ligne (singulier) Nom du paramètre Propriété Wikidata Libellé de la ligne (pluriel) Note
Remplacé par remplacé par P167 (« structure remplacée par ») -


p.protection()

Protection patrimoniale dont bénéficie tout ou partie du bâtiment

Libellé de la ligne (singulier) Nom du paramètre Propriété Wikidata Libellé de la ligne (pluriel) Note
Statut patrimonial protection P1435 (« statut patrimonial »)[1] - paramètre alternatif déprécié : "classement"
  1. Récupération des données et mise en forme par Module:Classement

p.adminlocation()

Retourne ensemble de lignes décrivant l'adresse et la localisation administrative du bâtiment. Cette fonction prend en compte beaucoup de paramètres hérités d'anciens modèles. Elle peut être remplacée par la fonction adminloc()

Libellé de la ligne (singulier) Nom du paramètre Propriété Wikidata Libellé de la ligne (pluriel) Note
Subdivision[1] subdivision1 - - paramètres synonymes dépréciés : "nom subdivision", "subdivision"
Subdivision subdivision2[2] - - paramètres synonymes dépréciés : "nom subdivision", "subdivision"
Subdivision subdivision3[3] - - paramètres synonymes dépréciés : "nom subdivision", "subdivision"
Commune commune[4] - - paramètre synonymesdéprécié : "ville"
Quartier quartier[5] - -
Adresse adresse P669 (« voie ») / P670 (« numéro de voirie ») -
  1. Modificable par le paramètre "intitulé" ou "lien"
  2. Modificable par le paramètre "intitulé subdivision2" ou "lien subdivision2"
  3. Modificable par le paramètre "intitulé subdivision3" ou (obsolète) "lien subdivision3"
  4. Modificable par le paramètre "intitulé commune" ou (obsolète) "lien commune"
  5. Modificable par le paramètre "intitulé quartier" ou (obsolète) "titre quartier"

p.country()

Affiche le nom du pays où se trouve le monument, accompagné d'un petit drapeau

Libellé de la ligne (singulier) Nom du paramètre Propriété Wikidata Note
Pays pays P17 (« pays »)

p.adminloc()

Alternative à l'utilisation de la fonction p.adminloc() + p.country() dans laquelle l'intégralité de la position administrative est indiquée dans un seul champ. Permet une utilisation plus massive de Wikidata.

Libellé de la ligne (singulier) Données locales Wikidata Note
Subdivision Utilise les paramètres "adresse" et "pays" Utilise les propriétés P669 (« voie »), P670 (« numéro de voirie »), P131 (« localisation administrative ») et P27 (« pays de nationalité ») par l'intermédiaire de Module:Adresse

p.geoloc()

Affiche une carte ou des cartes, avec un point indiquant l'emplacement du monument

Libellé de la ligne (singulier) Nom du paramètre Propriété Wikidata Libellé de la ligne (pluriel) Note
géolocalisation (à partir de P625 (« coordonnées géographiques ») -
local p = {}
local localdata = require( 'Module:Infobox/Localdata' )
local item = localdata.item
local wd = require "Module:Wikidata"
local general = require "Module:Infobox/Fonctions"
local linguistic = require "Module:Linguistique"
local address = require "Module:Adresse"

local function keyDate(event)
	return wd.keyDate(event, item, {conjtype = 'comma', showqualifiers = {'P518'}, link = '-'})
end

local function inclexcl(statement, params) -- formatte les qualificatifs "P518" / "P1011" (à mettre plutôt dans un sous module de Module:Wikidata, comme pour les dates ?
	local str = wd.formatSnak(statement.mainsnak, params)
	if not statement.qualifiers then
		return str
	end
	local incl = wd.getFormattedQualifiers(statement, "P518")
	local excl = wd.getFormattedQualifiers(statement, "P1011")

	if incl then
		str = str .. linguistic.inparentheses(incl .. " y compris") -- pas la formulation la plus élégante mais elle évite les problèmes d'accord grammaticaux
	end
	if excl then
		str = str .. linguistic.inparentheses("sans " .. excl) -- pas la formulation la plus élégante mais elle évite les problèmes d'accord grammaticaux
	end
	return str
end

function p.creatorQuery(prop) 
	return {
		property = prop,
		entity = localdata.item,
		showqualifiers = {'P518'},
		showdate = true,
		qualiflink = '-',
		statementformat = function(statement)
			
			local str
			-- On commence par les qualificatifs (attibué à, atelier etc.)
			local possiblequalifiers = {
				P1773 = "attribué $to $creator", 
				P1774 = "atelier $of $creator",
				P1775 = "suiveur $of $creator",
				P1776 = "cercle $of $creator",
				P1777 = "d'après $creator", -- TODO : d'après LE Maître X
				P1778 = "faux d'après $creator",
				P1779 = "$creator (?)",
				P1780 = "école $of",
				P1877 = "d'après un œuvre $of",
			}
	
			if statement.qualifiers then
				for qualif, text in pairs(possiblequalifiers) do
					local creator = wd.getFormattedQualifiers(statement, {qualif})
					if creator then
						str = text
						str = mw.ustring.gsub(str, '$to $creator', "à ".. creator)
						str = mw.ustring.gsub(str, '$of $creator', linguistic.of(creator))
						str = mw.ustring.gsub(str, '$creator', creator)
						break
					end
				end
			end
						
			-- Sinon, la voie normale
			if not str then
				str = wd.formatStatement(statement, {speciallabels = {Q4233718 = "anonyme"}}) -- speciallabels pour éviter le lien par défaut
			end
			return str
		end
	}
end

--Titrest
function p.title()
	--	local class = en-tête par défaut à définir ici ?
	return general.title()
end

--Image
function p.mainimage(cat, defaultimage)
	if not cat then 
		cat = 'Article à illustrer Bâtiment divers'
	end
	return general.mainimage(cat, defaultimage)
end

function p.country()
	return -- déprécié	
end

function p.historicalregion()
	return {
		type = 'row', -- pour les régions historiques, non adminstratives
		value = 'région',
		label = localdata['intitulé région'] or localdata['lien région'] or 'Région',
	}
end

function p.adminloc(divstr) -- affiche l'adresse complète (rue, divisions administratives pertinentes, pays) dans un champ unique

	-- pas de paramètre global pour la ligne streetstr et la ligne divstr, dépend de l'historique du modèle utilisé
	local country = localdata["pays"]
	local streetstr =  localdata['adresse']
	local val = address.fullAddress(localdata['item'], country, nil, streetstr, divstr)
	return 
		{
		type = 'row',
		label = 'Adresse',
		value = function() return val end
		}
end

function p.adminlocation() -- Fonction assez compliquée du fait des différences entre infobox. Simlifiable si on harmonise les infobox
	-- infobox à prendre en compte : bâtiment, gratte-ciel, gare, château
	
	if not (localdata['subdivision1'] or localdata['subdivision nom'] or localdata['subdivision2'] or localdata['subdivision3'] or localdata['commune'] or localdata['ville'] or localdata['quartier']) then
		return p.adminloc()
	end
	return {
		type = 'multi', 
		rows = {
			general.country(),
			p.historicalregion(),
			{
				type = 'row', 
				value = {'subdivision', 'subdivision1', 'subdivision nom'},
				label = localdata['intitulé subdivision'] or localdata['lien subdivision1'] or localdata['lien subdivision'] or localdata['subdivision type'] or 'Division administrative'
			},
			{
				type = 'row', 
				value = 'subdivision2',
				label = localdata['intitulé subdivision2'] or localdata['lien subdivision2'] or 'Subdivision administrative'
			},
			{
				type = 'row', 
				value = 'subdivision3',
				label = localdata['intitulé subdivision3'] or localdata['lien subdivision3'] or 'Subdivision administrative'
			},
			{
				type = 'row', 
				value = {'commune', 'ville'},
				label = localdata['intitulé commune'] or localdata['lien commune'] or 'Commune'
			},
			{
				type = 'row', 
				value = 'quartier',
				label = localdata['intitulé quartier'] or localdata['titre quartier'] or 'Quartier'
			},
			{
				type = 'row',
				value = 'adresse',
				label = 'Adresse',
				wikidata = require('Module:Adresse').wikidataAddress(localdata.item),
			},
		}
	}
end

function p.onshoreof()
	return {
		type = 'row',
		label = 'Baigné par',
		value = {'baigné par', 'sur les rives de'},
		wikidata = {property = 'P206', defaultlinkquery = {property = 'P361'}},
	}
end

function p.watershed()
	return {
		type = 'row',
		label = 'Bassin versant',
		value = 'bassin versant',
		wikidata = {property = 'P4614', defaultlinkquery = {property = {'P4614', 'P138'}}},
	}
end

function p.protectedarea()
	return {
		type = 'row',
		label = 'Aire protégée',
		plurallabel = 'Aires protégées',
		value = {'aire protégée', 'aires protégées'},
		property = 'P3018',
	}
end

function p.island()
	return {
		type = 'row',
		label = 'Île',
		plurallabel = 'Îles',
		value = 'île',
		property = 'P5130',
	}
end

function p.mountainrange()
	return {
		type = 'row',
		label = 'Massif',
		plurallabel = 'Massifs',
		value = {'massif', 'chaîne de montagnes'},
		wikidata = {property = 'P4552', defaultlinkquery = {property = 'P4552'}},
	}
end

function p.elevation()
	return {
		type = 'row',
		label = 'Altitude',
		value = 'altitude',
		wikidata = {property = 'P2044', targetunit = 'metre', conjtype = ' ou ', rounding = '0', numval = '2'},
	}
end

function p.coordinates(args)
	return general.coordinates(args)
end

function p.website(localparam) 
	return general.website(localparam)
end

function p.construction()
	return {
		type = 'multi', 
		rows = {

			-- début construction, fin construction (legacy infobox Stade, Infobox Château),
			{
				type = 'row',
				value = {'début construction', 'début'}, 
				label = 'Construction', 
			},
			{
				type = 'row',
				value = {'fin construction', 'fin'}, 
				label = 'Fin de construction', 
			},

			-- construction (nom de paramètre "date de construction" à déprécier)
			{
				type = 'row',
				value = {'construction', 'Construction', 'date de construction'}, 
				label = 'Construction', 
				wikidata = keyDate{'Q385378', 'P571'}
			},
		}
	}

end

function p.reconstruction()
	return {
		type = 'multi', 
		rows = {

			-- début reconstruction, fin reconstruction (legacy infobox Stade, Infobox Château),
			{
				type = 'row',
				value = {'début reconstruction', 'début'}, 
				label = 'Reconstruction', 
			},
			{
				type = 'row',
				value = {'fin reconstruction', 'fin'}, 
				label = 'Fin de reconstruction', 
			},

			-- reconstruction (nom de paramètre "date de reconstruction" à déprécier)
			{
				type = 'row',
				value = {'Reconstruction', 'reconstruction', 'date de reconstruction'}, 
				label = 'Reconstruction', 
				wikidata = keyDate{'Q1370468'}
			},
		}
	}

end

function p.opening()  --ouverture / consécration / date de mise en service (!= date de construction)
	return {
		type = 'multi', 
		rows = {
			{
				type = 'row', 
				value =  {"ouverture", "date d'ouverture", "mise en service"}, 
				label = 'Ouverture', 
				wikidata = keyDate{'P1619', 'Q15051339'} -- P1619 = ouverture officielle, pas ouverture de facto
			},
			{
				type = 'row', 
				value = 'inauguration', 
				label = 'Inauguration',
				blockers = 'Ouverture', 
				wikidata = keyDate{'Q1417098'}
			},

			{
				type = 'row', 
				value = 'consécration', 
				label = 'Consécration',
				blockers = 'inauguration',
				wikidata = keyDate{ 'Q125375'}
			},
			{
				type = 'row', 
				value = 'première lumière', 
				label = '[[Première lumière]]',
				blockers = 'Ouverture',
				wikidata = keyDate{'Q1306940'} -- P1619 = ouverture officielle, pas ouverture de facto
			},
		}
	}
end


function p.renovation()
	return {
		type = 'multi', 
		rows = {
			{
				type = 'row',
				value = 'restauration',
				label = 'Restauration',			
				wikidata = keyDate{'Q217102'},
				blockers = 'rénovation',
			},
			{
				type = 'row',
				value = 'rénovation',
				label = 'Rénovation',			
				wikidata = keyDate{'Q2144402'},
				blockers = 'restauration',
			},
			{
				type = 'row',
				value = {'extension', 'agrandissement'},
				label = 'Extension',		
				wikidata = keyDate{'Q18621193'},
				blockers = 'restauration',
			},
			{
				type = 'row',
				value = 'autres travaux',
				label = 'Autres campagnes de travaux',		
		},
	}
}
end

function p.demolition()
	return {
		type = 'multi', 
		rows = {
			{
				type = 'row',
				value = {'démolition', 'date de démolition'},
				label = 'Démolition',
				wikidata = keyDate('Q331483')
				},
				{
				type = 'row',
				value = {'destruction'},
				label = 'Destruction',
				wikidata = keyDate('Q17781833')
			}
		}
	}
end

function p.closure()
	return {
		type = 'row',
		value = {'fermeture', 'date de fermeture'},
		label = 'Fermeture',
		wikidata = keyDate{'Q14954904', 'P3999', 'P576'} -- P576: date de dissolution, plutôt réservé aux organisations
	}
end

function p.usage()
	return {
		type = 'row',
		label = 'Usage',
		value = 'usage', 
		wikidata = {
			property = 'P366',
			link = '-',
			speciallabels = {Q182060 = 'bureaux'}, -- bureaux semble toujours pouvoir se mettre au pluriel quand c'est en P366 d'un bâtiment
		}	
	}
end

function p.operator()
	return {
		type = 'row',
		label = 'Gestionnaire',
		wikidata = {property = 'P137', showdate= true},
		value = {'administration', 'gestionnaire'}
	}
end

function p.transport()
	return {
		type = 'multi', 
		rows = {
			{type = 'row', label = 'Stationnement', value = 'stationnement'},
			{type = 'row', label = 'Gare', value = 'gare'},
			{type = 'row', label = 'Métro', value = 'métro'},
			{type = 'row', label = 'Tramway', value = {'tram', 'tramway'}},
			{type = 'row', label = 'Autobus', value = 'bus'},
		},
	}
end

function p.complex() -- le complexe immobilier auquel appartient un bâtiment
	return {
		type = 'row',
		label = 'Complexe',
		value = 'complexe',
		wikidata = {
			property = 'P361',
			condition = function(claim)
				local v = wd.getMainId(claim)
				return wd.isInstance("Q1497364", v, 1)
			end,
		}
	}
end

function p.archistyle()
	return {
		type = 'row',
		label = 'Style',
		value = {'style architectural', 'style'},
		wikidata = {
			property = {'P149', 'P135'},
			labelformat = function(id)
			local label = mw.wikibase.label(id)
			if mw.ustring.match(label, "^style") then
				label = linguistic.ucfirst(linguistic.removecomplement(label))
			end
			return label
			end
		}
	}
end

function p.creator() -- toute sorte de créateurs, pourraient peut-être être partagé avec infobox oeuvre d'art
	local wdarchitect, wdengineer = p.creatorQuery("P84"), p.creatorQuery("P631")
	if wdarchitect and wdengineer then -- ne pas afficher les deux si c'est la même valeur
		if (wd.formatStatements{property = "P84", displayformat = "raw", entity= localdata.item} == wd.formatStatements{property = "P631", displayformat = "raw", entity = localdata.item}) then
			wdengineer = nil
		end
	end
	return {
		type = 'multi',
		rows = {
			-- architect
			{
				type = "row",
				label = localdata["titre architecte"] or "Architecte",
				plurallabel = "Architectes",
				value = "architecte",
				wikidata = wdarchitect,
			},
			-- ingénieur
			{
				type = "row",
				label = "Ingénieur",
				plurallabel = "Ingénieurs",
				value = "ingénieur",
				wikidata =  wdengineer,
			},
			-- créateur (quand les autres noms ne conviennent pas)
			{	type = "row",
				label = "Créateur",
				plurallabel = "Créateurs",
				value = "créateur",
				-- ne pas utiliser Wikidata si le paramètre "architecte" est renseigné (risques de doublon)
				wikidata =  p.creatorQuery("P170"),
				blockers = {'architecte'},
			},
		}
	}
end


function p.owner()
	return {
		type = 'multi', 
		rows = {
			{
				type = 'row',
				label = 'Propriétaire initial',
				plurallabel = 'Propriétaires initiaux',
				value = 'propriétaire initial',
			},
			{
				type = 'row',
				label = 'Propriétaire actuel',
				plurallabel = 'Propriétaires actuels',
				value = 'propriétaire actuel',
			},
			{
				type = 'row',
				label = 'Propriétaire',
				plurallabel = 'Propriétaires',
				value = 'propriétaire',
				wikidata = function() return require('Module:Propriétaire').formatFromItem(localdata.item, {sorttype = 'chronological', showdate = true, conjtype = 'comma', precision = 'year'}) end,
			}
		}
	}
end

function p.shape()
	return {
		type = 'row',
		label = 'Forme',
		value = {'forme', 'aspect'},
		property = 'P1419',
	}
end

function p.dimensions()
	return {
	type = 'multi', 
		rows = {
	{
		type = 'row',
		label = 'Hauteur de lʼantenne' ,
		value = 'antenne flèche',
		wikidata = {property = 'P2048', targetunit = 'm', qualifier = 'P518', qualifiervalue = {'Q131214','Q852590'}}
	},
	{
		type = 'row',
		label = 'Hauteur du toit',
		value = 'toit',
		wikidata = {property = 'P2048', targetunit = 'm', qualifier = 'P518', qualifiervalue = 'Q83180'}
	},
	{
		type = 'row',
		label = 'Hauteur du dernier étage',
		value = 'dernier étage' 
	},
--- Hauteur générique : exclut les valeurs Wikidata affichées dans une des lignes précedentes + affiche le qualificatif P518
	{
		type = 'row',
		label = 'Hauteur',
		value = 'hauteur',
		wikidata =  {property = 'P2048', targetunit = 'm', excludequalifier = {'P518', 'P794'}, excludequalifiervalue = {'Q24192182', 'Q131214','Q852590', 'Q83180'}, statementformat = function(statement) return inclexcl(statement, {targetunit = 'metre', rounding = '1'}) end}
	},
	{
		type = 'row',
		label = 'Profondeur',
		value = 'profondeur',
		wikidata =  {property = 'P2610', targetunit = 'metre', numval = '2', statementformat = function(statement) return inclexcl(statement, {targetunit = 'metre', rounding = '1'}) end},
	},
	{
		type = 'row',
		label = 'Longueur',
		value = 'longueur',
		wikidata = {property = 'P2043', targetunit = 'metre', numval = '2', statementformat = function(statement) return inclexcl(statement, {targetunit = 'metre', rounding = '1'}) end},
	},
	{
		type = 'row',
		label = 'Largeur',
		value = 'largeur',
		wikidata = {property = 'P2049', targetunit = 'metre', numval = 2, statementformat = function(statement) return inclexcl(statement, {targetunit = 'metre', rounding = '1'}) end},
	},
	{
		type = 'row',
		label = 'Envergure',
		value = 'envergure',
		wikidata = {property = 'P2050', targetunit = 'metre', conjtype = 'or', rounding = '1', numval = '2'},
	},
	{
		type = 'row',
		label = 'Diamètre',
		value = 'diamètre',
		wikidata = {property = 'P2386', targetunit = 'metre', conjtype = 'or', rounding = '1', numval = '2'},
	},
	{
		type = 'row',
		label = 'Périmètre',
		value = {'périmètre', 'contour', 'circonférence'},
		wikidata = {property = 'P2547', targetunit = 'metre', conjtype = 'or', rounding = '1', numval = '2'},
	},
	-- Hauteur (avec plusieurs différentes affichées pour les gratte-ciel, voir les bases Emporis ou skyscrapercenter
	{
		type = 'row',
		label = 'Hauteur architecturale',
		value = 'hauteur architecturale',
		wikidata =  {property = 'P2048', targetunit = 'm', qualifier = {'P794'}, {'P518', 'P794'}, qualifiervalue = {'Q24192182'}}
	},
	{
		type = 'row',
		label = 'Surface',
		value = {'surface', 'superficie'},
		wikidata = {property = 'P2046', targetunit = 'square meter', conjtype = 'or', rounding = '1', numval = '2'},
	},
	{
		type = 'row',
		label = 'Volume',
		value = 'volume',
		wikidata = {property = 'P2234', targetunit = 'cubic metre', conjtype = 'or', rounding = '1', numval = '2'},
	}
	}
}
end

function p.floors()
	return {
	type = 'multi', 
		rows = {
	{
		type = 'row',
		label = 'Niveaux',
		value = {'niveaux au-dessus du sol', 'niveaux'},
		property = 'P1101',
	},
	{
		type = 'row',
		label = 'Sous-sols',
		value = 'sous-sols',
		property = 'P1139',
	}
	}
}
end

function p.destroyedby()
	return {
		type = 'row',
		label = 'Détruit par',
		value = {'détruit par', 'cause de la destruction'}, 
		property = 'P770',
	}
end

function p.material()
	return {
		type = 'row',
		label = 'Matériau',
		plurallabel = 'Matériaux',
		value = 'matériau', 
		wikidata = require('Module:Matériau').formatFromItem(localdata.item),
	}
end

function p.colour()
	return {
		type = 'row',
		label = 'Couleur',
		plurallabel = 'Couleurs',
		value = {'couleur', 'couleurs'},
		property = 'P462',
	}
end

function p.inscription()
	return {
		type = 'row',
		label = 'Inscription',
		value = {'inscription', 'enseigne'},
		wikidata = {property = 'P1684', numval = '1'},
	}
end

function p.equipment()
	return {
		type = 'row',
		label = 'Équipement',
		plurallabel = 'Équipements',
		value = {'équipement', 'équipements'},
		property = 'P912',
	}
end

function p.replaces()
	return {
		type = 'row',
		label = 'Remplace',
		value = 'remplace',
		property = 'P1398',
	}
end

function p.replacedby()
	return {
		type = 'row',
		label = 'Remplacé par',
		value = 'remplacé par',
		property = 'P167',
	}
end

function p.visitors()
	return {
		type = 'row',
		label = 'Visiteurs par an',
		value = {'visiteurs', 'visiteurs par an', 'fréquentation', 'fréquentation annuelle'},
		wikidata = {property = 'P1174', showdate = 'true', numval = 1, sorttype = "inverted"},
	}
end

function p.protection()
	return {
		type = 'row',
		label = 'Statut patrimonial',
		value = {'classement', 'protection'},
		wikidata = require('Module:Classement').formattedList(localdata.item)
	}
end

function p.unesco() -- pour remplacer [[Modèle:Infobox Patrimoine Mondial]] à ajouter : paramètres extension, patrimoine en péril, retrait, gestion des monuments faisant partie d'un ensemble
	local id = localdata['identifiant patrimoine mondial']
	if (id == '-') then
		return nil
	end
	if id then
		id = '[http://whc.unesco.org/fr/list/' .. id .. ' ' .. id .. ']'

	else
		id = wd.formatAndCat{entity = item, property = 'P757',  urlpattern = 'http://whc.unesco.org/fr/list/$1'}

	end
	if (not id) then
		return nil
	end
	return 
	{type = 'table', title = '[[Fichier:World Heritage Emblem.svg|15px|alt=Logo du patrimoine mondial|link=Patrimoine mondial]] Patrimoine mondial', rows = {
		{type = 'row', label = 'Désignation', value = 'nom unesco'},
		{type = 'row', label = "Type de bien", value = 'type unesco', wikidata = {property = 'P1435', targetvalue = {'Q16617071', 'Q52683527', 'Q52683530'}}},
		{type = 'row', label = "Date d'entrée", value = 'date patrimoine mondial', wikidata = {property = 'P1435', targetvalue = {'Q9259', 'Q16617071', 'Q52683527', 'Q52683530'}, showonlyqualifier = {'P580'}}},
		{
		type = 'row',
		label = "Identifiant",
		value = function() return id end,
		},
		{	
		type = 'row',
		label = "Critères",
		singularlabel = "Critère",
		value = function(localdata)
			if localdata['critères patrimoine mondial'] then
					return '[http://whc.unesco.org/fr/criteres/' .. localdata['critères patrimoine mondial'] .. ']'
			end
			end, 
		wikidata = function(item)
			local str, numclaims = wd.formatStatements{entity = item, property = 'P2614', link = '-', conjtype = ' ', returnnumberofvalues = true}
			if str then
				return wd.formatAndCat{value = '[http://whc.unesco.org/fr/criteres/$1 ' .. str .. ']', entity = item, property = 'P2614'}, numclaims
			end
			end
		},
		{type = 'row', label = 'Surface', value = 'surface unesco'},
		{type = 'row', label = 'Zone tampon', value = 'surface zone tampon unesco'},
	}
}
end

function p.geoloc(params)
	return general.geoloc(params)
end

return p