« Module:Infobox/Fonctions/Bâtiment » : différence entre les versions

De Lagny-sur-Marne Wiki
Aller à la navigation Aller à la recherche
0x010D (discussion | contributions)
corr
0x010D (discussion | contributions)
P3999 per talk page
 
(27 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
local p = {}
local p = {}
local util = require 'Module:Utilitaire Wikidata'
local localdata = require( 'Module:Infobox/Localdata' )
local wd = require( 'Module:Interface Wikidata' ).fromLua
local general = require 'Module:Infobox/Fonctions'
local general = require 'Module:Infobox/Fonctions'
local coordfunctions = require 'Module:Infobox/Fonctions/Géolocalisation'
local linguistic = require "Module:Linguistique"


local function daterow(args)
local function daterow(args)
local wikidataquery
local wikidataquery
if args.event then
if args.event then
wikidataquery = function() return util.keydate(args.event) end
wikidataquery = function() return wd.keyDate(args.event) end
end
end
-- blocker définit des événements proches de celui recherché, s'il sont rensignés localement, on désactive la reuqête Wikidata pour éviter les doublons  
-- blocker définit des événements proches de celui recherché, s'il sont rensignés localement, on désactive la requête Wikidata pour éviter les doublons  
-- exemple : "ouverture" désactive la recher d'"inauguration" sur Wikidata
-- exemple : "ouverture" désactive la recher d'"inauguration" sur Wikidata
if args.blocker and localdata[args.blocker] then
if args.blocker and localdata[args.blocker] then
wikidata = false
wikidataquery = nil
elseif args.blocker and type(args.blocker) == 'table' then
elseif args.blocker and type(args.blocker) == 'table' then
for i, j in pairs(blocker) do  
for i, j in pairs(blocker) do  
if localdata[j] then
if localdata[j] then
wikidata = false
wikidataquery = nil
break
break
end
end
Ligne 28 : Ligne 29 :
value =  args.param,
value =  args.param,
wikidata = wikidataquery
wikidata = wikidataquery
}
end
function p.creatorQuery(prop)
return {
property = prop,
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
end
Ligne 45 : Ligne 90 :
end
end


function p.country(default)
function p.country()
return coordfunctions.country(default)
return general.country()
end
end


function p.address() return nil end -- pour éviter un bug de tansitions, si vous lisez cela vous pouvez effacer la fonctions


function p.historicalregion()
function p.historicalregion()
Ligne 61 : Ligne 105 :
function p.adminlocation() -- Fonction assez compliquée du fait des différences entre infobox. Simlifiable si on harmonise les infobox
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
-- infobox à prendre en compte : bâtiment, gratte-ciel, gare, château
return  
return {
{type = 'multi', rows = {
type = 'multi',  
rows = {
{
{
type = 'row',  
type = 'row',  
Ligne 88 : Ligne 133 :
label = localdata['intitulé quartier'] or localdata['titre quartier'] or 'Quartier'
label = localdata['intitulé quartier'] or localdata['titre quartier'] or 'Quartier'
},
},
{
{
type = 'row',
type = 'row',
value = 'adresse',
value = 'adresse',
label = 'Adresse',
label = 'Adresse',
wikidata = require('Module:Adresse').wikidataAddress(item),
wikidata = require('Module:Adresse').wikidataAddress(localdata.item),
},
}
}
} }
}
end
end


function p.coordinates(coordspecs)
function p.onshoreof()
return coordfunctions.coordinates(coordspecs)
return {
type = 'row',
label = 'Baigné par',
value = {'baigné par', 'sur les rives de'},
property = 'P206',
}
end
 
function p.protectedarea()
return {
type = 'row',
label = 'Aire protégée',
plurallabel = 'Aire protégée',
value = {'aire protégée', 'aires protégées'},
property = 'P3018',
}
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
end


Ligne 106 : Ligne 180 :


function p.construction()
function p.construction()
return
return {
{type = 'multi', rows = {
type = 'multi',  
-- début construction, fin construction (legacy infobox Stade, Infobox Château),
rows = {
-- début construction, fin construction (legacy infobox Stade, Infobox Château),
daterow{param = 'début construction', label = 'Début de construction'},
daterow{param = 'début construction', label = 'Début de construction'},
daterow{param = 'fin construction', label = 'Fin de construction'},
daterow{param = 'fin construction', label = 'Fin de construction'},


-- construction (nom de paramètre "date de construction" à déprécier)
-- construction (nom de paramètre "date de construction" à déprécier)
daterow{param = {'construction', 'Construction', 'date de construction'}, label = 'Construction', event = {'Q385378', 'P571'}},
daterow{
 
param = {'construction', 'Construction', 'date de construction'},  
label = 'Construction',  
event = {'Q385378', 'P571'}
},
}
}
}
}
Ligne 120 : Ligne 198 :
end
end


function p.opening() return --ouverture / consécration / date de mise en service (!= date de construction)
function p.opening() --ouverture / consécration / date de mise en service (!= date de construction)
{type = 'multi', rows = {
return {
daterow{param =  {"ouverture", "date d'ouverture"}, label = 'Ouverture', event = 'P1619'}, -- P1619 = ouverture officielle, pas ouverture de facto
type = 'multi',  
rows = {
daterow{
param =  {"ouverture", "date d'ouverture", "mise en service"},  
label = 'Ouverture',  
event = {'P1619', 'Q15051339'} -- P1619 = ouverture officielle, pas ouverture de facto
},
daterow{param = 'inauguration', label = 'Inauguration', event = 'Q1417098', blocker = 'ouverture'}, -- désactivé si "ouverture" est renseigné : risques de doublon  
daterow{param = 'inauguration', label = 'Inauguration', event = 'Q1417098', blocker = 'ouverture'}, -- désactivé si "ouverture" est renseigné : risques de doublon  
daterow{param = 'consécration', label = 'Consécration', event = 'Q125375', blocker = 'inauguration'},
daterow{param = 'consécration', label = 'Consécration', event = 'Q125375', blocker = 'inauguration'},
Ligne 131 : Ligne 215 :




function p.renovation() return
function p.renovation()
{type = 'multi', rows = {
return {
daterow{param = 'restauration', label = 'Restauration', event = 'Q217102', blocker = 'rénovation'},
type = 'multi',  
daterow{param = 'rénovation', label = 'Rénovation', event = 'Q2144402', blocker = 'restauration'},
rows = {
daterow{param = 'agrandissement', label = 'Extension', event = 'Q18621193'},
daterow{param = 'restauration', label = 'Restauration', event = 'Q217102', blocker = 'rénovation'},
daterow{param = 'autres travaux', label = 'Autres campagnes de travaux'},
daterow{param = 'rénovation', label = 'Rénovation', event = 'Q2144402', blocker = 'restauration'},
daterow{param = {'extension', 'agrandissement'}, label = 'Extension', event = 'Q18621193'},
daterow{param = 'autres travaux', label = 'Autres campagnes de travaux'},
}
}
}
}
end
end


function p.demolition() return
function p.demolition()
{type = 'multi', rows = {
return {
daterow{param = {'démolition', 'date de démolition'}, label = 'Démolition', event = 'Q331483'},
type = 'multi',  
daterow{param = 'destruction', label = 'Destruction', event = 'Q17781833'},
rows = {
}
daterow{param = {'démolition', 'date de démolition'}, label = 'Démolition', event = 'Q331483'},
daterow{param = 'destruction', label = 'Destruction', event = 'Q17781833'},
}
}
}
end
end


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


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


function p.operator()
function p.operator()
return  
return {
{
type = 'row',
type = 'row',
label = 'Gestionnaire',
label = 'Gestionnaire',
wikidata = function() return util._formatStatements{property = 'P137', entity = item, showdate= true} end,
wikidata = {property = 'P137', showdate= true},
value = localdata['administration'] or localdata['gestionnaire']
value = {'administration', 'gestionnaire'}
}
}
end
end
Ligne 179 : Ligne 269 :
function p.transport()
function p.transport()
return {
return {
{type = 'table', title = 'Accès et transport', rows = {
type = 'multi',  
{type = 'row', label = 'Stationnement', value = 'stationnement'},
rows = {
{type = 'row', label = 'Gare', value = 'gare'},
{type = 'row', label = 'Stationnement', value = 'stationnement'},
{type = 'row', label = 'Métro', value = 'métro'},
{type = 'row', label = 'Gare', value = 'gare'},
{type = 'row', label = 'Tramway', value = 'tramway'},
{type = 'row', label = 'Métro', value = 'métro'},
{type = 'row', label = 'Autobus', value = 'bus'},
{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,
}
}
}
}
Ligne 196 : Ligne 301 :
value = {'style architectural', 'style'},
value = {'style architectural', 'style'},
wikidata = function ()
wikidata = function ()
local val = util.formatAndCat{entity = item, property = 'P149'} or util.formatAndCat{entity = item, property = 'P135'}
local val = wd.formatAndCat{entity = localdata.item, property = 'P149'}
or wd.formatAndCat{entity = localdata.item, property = 'P135'}
if not val then
if not val then
return nil
return nil
Ligne 202 : Ligne 308 :
val = mw.ustring.gsub(val, "\|style ", "\|")
val = mw.ustring.gsub(val, "\|style ", "\|")
return val
return val
end
end
}
}
end
end


function p.creator() -- toute sorte de créateurs, pourraient peut-être être partagé avec infobox oeuvre d'art
function p.creator() -- toute sorte de créateurs, pourraient peut-être être partagé avec infobox oeuvre d'art
return {type = 'multi', rows = {
return {
-- architect
type = 'multi',  
{ type = 'row',
rows = {
label = localdata['titre architecte'] or 'Architecte',
-- architect
value = 'architecte',
{
wikidata = util.formatAndCat{entity = item, property = 'P84', showqualifiers = {'P518'}, showdate = true, qualiflink = '-'}
type = "row",
label = localdata["titre architecte"] or "Architecte",
value = "architecte",
wikidata = p.creatorQuery("P84"),
},
-- ingénieur
{
type = "row",
label = "Ingénieur",
value = "ingénieur",
wikidata =  p.creatorQuery("P631"),
},
-- créateur (quand les autres noms ne conviennent pas)
{ type = "row",
label = "Créateur",
value = "créateur",
-- ne pas utiliser Wikidata si le paramètre "architecte" est renseigné (risques de doublon)
wikidata = function()
if (not localdata["architecte"]) then
return wd.formatAndCat( p.creatorQuery("P170"))
end
end,
},
}
}
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 = require('Module:Propriétaire').formatFromItem(localdata.item)
}
}
}
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 = 'Longueur',
value = 'longueur',
wikidata = {property = 'P2043', targetunit = 'metre', conjtype = ' ou ', rounding = '1', numval = '2'},
},
},
-- ingénieur
{
{
type = 'row',
type = 'row',
label = 'Ingénieur',
label = 'Largeur',
value = 'ingénieur',
value = 'largeur',
property = 'P631',
wikidata = {property = 'P2049', targetunit = 'metre', conjtype = ' ou ', rounding = '1', numval = '2'},
},
},
-- créateur (quand les autres noms ne conviennent pas)
{
{ type = 'row',
type = 'row',
label = 'Créateur',
label = 'Diamètre',
value = function()
value = 'diamètre',
if localdata['architecte'] then
wikidata = {property = 'P2386', targetunit = 'metre', conjtype = ' ou ', rounding = '1', numval = '2'},
return nil
},
end
{
if localdata['créateur'] then
type = 'row',
return localdata['créateur']
label = 'Périmètre',
end
value = {'périmètre', 'contour', 'circonférence'},
if item then
wikidata = {property = 'P2547', targetunit = 'metre', conjtype = ' ou ', rounding = '1', numval = '2'},
return util.formatAndCat{entity = item, property = 'P170', showqualifiers = {'P518'}}
},
end
{
end
type = 'row',
label = 'Hauteur',
value = 'hauteur',
wikidata = {property = 'P2048', targetunit = 'metre', conjtype = ' ou ', rounding = '1', numval = '2'},
},
{
type = 'row',
label = 'Profondeur',
value = 'profondeur',
wikidata = {property = 'P2610', targetunit = 'metre', conjtype = ' ou ', rounding = '1', numval = '2'},
},
{
type = 'row',
label = 'Superficie',
value = {'superficie', 'surface'},
wikidata = {property = 'P2046', targetunit = 'square metre', conjtype = ' ou ', rounding = '1', numval = '2'},
},
},
} }
{
type = 'row',
label = 'Volume',
value = 'volume',
wikidata = {property = 'P2234', targetunit = 'cubic metre', conjtype = ' ou ', rounding = '1', numval = '2'},
}
}
}
end
end


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


function p.owner()
function p.destroyedby()
return {type = 'multi', rows = {
return {
{
type = 'row',
type = 'row',
label = 'Détruit par',
label = 'Propriétaire initial',
value = {'détruit par', 'cause de la destruction'},  
value = 'propriétaire initial',
property = 'P770',
},
}
{
type = 'row',
label = 'Propriétaire actuel',
value = 'propriétaire actuel',
},
{
type = 'row',
label = 'Propriétaire',
value = 'propriétaire',
wikidata = require('Module:Propriétaire').formatFromItem(item)
}
} }
end
end


Ligne 265 : Ligne 471 :
type = 'row',
type = 'row',
label = 'Matériau',
label = 'Matériau',
plurallabel = 'Matériaux',
value = 'matériau',  
value = 'matériau',  
wikidata = require('Module:Matériau').formatFromItem(item),
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
end
Ligne 275 : Ligne 529 :
label = 'Statut patrimonial',
label = 'Statut patrimonial',
value = {'classement', 'protection'},
value = {'classement', 'protection'},
wikidata = require('Module:Classement').formattedList(item)
wikidata = require('Module:Classement').formattedList(localdata.item)
}
}
end
end


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


return p
return p

Dernière version du 3 juin 2017 à 10:51

local p = {} local localdata = require( 'Module:Infobox/Localdata' ) local wd = require( 'Module:Interface Wikidata' ).fromLua local general = require 'Module:Infobox/Fonctions' local linguistic = require "Module:Linguistique"

local function daterow(args) local wikidataquery if args.event then wikidataquery = function() return wd.keyDate(args.event) end end

-- blocker définit des événements proches de celui recherché, s'il sont rensignés localement, on désactive la requête Wikidata pour éviter les doublons -- exemple : "ouverture" désactive la recher d'"inauguration" sur Wikidata if args.blocker and localdata[args.blocker] then wikidataquery = nil elseif args.blocker and type(args.blocker) == 'table' then for i, j in pairs(blocker) do if localdata[j] then wikidataquery = nil break end end end

return { type = 'row', label = args.label, value = args.param, wikidata = wikidataquery } end

function p.creatorQuery(prop) return { property = prop, 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 general.country() 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.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 return { type = 'multi', rows = { { 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'}, property = 'P206', } end

function p.protectedarea() return { type = 'row', label = 'Aire protégée', plurallabel = 'Aire protégée', value = {'aire protégée', 'aires protégées'}, property = 'P3018', } 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() return general.website() end

function p.construction() return { type = 'multi', rows = { -- début construction, fin construction (legacy infobox Stade, Infobox Château), daterow{param = 'début construction', label = 'Début de construction'}, daterow{param = 'fin construction', label = 'Fin de construction'},

-- construction (nom de paramètre "date de construction" à déprécier) daterow{ param = {'construction', 'Construction', 'date de construction'}, label = 'Construction', event = {'Q385378', 'P571'} }, } }

end

function p.opening() --ouverture / consécration / date de mise en service (!= date de construction) return { type = 'multi', rows = { daterow{ param = {"ouverture", "date d'ouverture", "mise en service"}, label = 'Ouverture', event = {'P1619', 'Q15051339'} -- P1619 = ouverture officielle, pas ouverture de facto }, daterow{param = 'inauguration', label = 'Inauguration', event = 'Q1417098', blocker = 'ouverture'}, -- désactivé si "ouverture" est renseigné : risques de doublon daterow{param = 'consécration', label = 'Consécration', event = 'Q125375', blocker = 'inauguration'}, daterow{param = 'première lumière', label = 'Première lumière', event = 'Q1306940'}, } } end


function p.renovation() return { type = 'multi', rows = { daterow{param = 'restauration', label = 'Restauration', event = 'Q217102', blocker = 'rénovation'}, daterow{param = 'rénovation', label = 'Rénovation', event = 'Q2144402', blocker = 'restauration'}, daterow{param = {'extension', 'agrandissement'}, label = 'Extension', event = 'Q18621193'}, daterow{param = 'autres travaux', label = 'Autres campagnes de travaux'}, } } end

function p.demolition() return { type = 'multi', rows = { daterow{param = {'démolition', 'date de démolition'}, label = 'Démolition', event = 'Q331483'}, daterow{param = 'destruction', label = 'Destruction', event = 'Q17781833'}, } } end

function p.closure() return daterow{ param = {'fermeture', 'date de fermeture'}, label = 'Fermeture', event = {'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 = function () local val = wd.formatAndCat{entity = localdata.item, property = 'P149'} or wd.formatAndCat{entity = localdata.item, property = 'P135'} if not val then return nil end val = mw.ustring.gsub(val, "\|style ", "\|") return val end } end

function p.creator() -- toute sorte de créateurs, pourraient peut-être être partagé avec infobox oeuvre d'art return { type = 'multi', rows = { -- architect { type = "row", label = localdata["titre architecte"] or "Architecte", value = "architecte", wikidata = p.creatorQuery("P84"), }, -- ingénieur { type = "row", label = "Ingénieur", value = "ingénieur", wikidata = p.creatorQuery("P631"), }, -- créateur (quand les autres noms ne conviennent pas) { type = "row", label = "Créateur", value = "créateur", -- ne pas utiliser Wikidata si le paramètre "architecte" est renseigné (risques de doublon) wikidata = function() if (not localdata["architecte"]) then return wd.formatAndCat( p.creatorQuery("P170")) end end, }, } } 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 = require('Module:Propriétaire').formatFromItem(localdata.item) } } } 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 = 'Longueur', value = 'longueur', wikidata = {property = 'P2043', targetunit = 'metre', conjtype = ' ou ', rounding = '1', numval = '2'}, }, { type = 'row', label = 'Largeur', value = 'largeur', wikidata = {property = 'P2049', targetunit = 'metre', conjtype = ' ou ', rounding = '1', numval = '2'}, }, { type = 'row', label = 'Diamètre', value = 'diamètre', wikidata = {property = 'P2386', targetunit = 'metre', conjtype = ' ou ', rounding = '1', numval = '2'}, }, { type = 'row', label = 'Périmètre', value = {'périmètre', 'contour', 'circonférence'}, wikidata = {property = 'P2547', targetunit = 'metre', conjtype = ' ou ', rounding = '1', numval = '2'}, }, { type = 'row', label = 'Hauteur', value = 'hauteur', wikidata = {property = 'P2048', targetunit = 'metre', conjtype = ' ou ', rounding = '1', numval = '2'}, }, { type = 'row', label = 'Profondeur', value = 'profondeur', wikidata = {property = 'P2610', targetunit = 'metre', conjtype = ' ou ', rounding = '1', numval = '2'}, }, { type = 'row', label = 'Superficie', value = {'superficie', 'surface'}, wikidata = {property = 'P2046', targetunit = 'square metre', conjtype = ' ou ', rounding = '1', numval = '2'}, }, { type = 'row', label = 'Volume', value = 'volume', wikidata = {property = 'P2234', targetunit = 'cubic metre', conjtype = ' ou ', rounding = '1', numval = '2'}, } } } end

function p.floors() return { type = 'multi', rows = { { type = 'row', label = 'Étages', value = {'niveaux au-dessus du sol', 'étages'}, 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.protection() return { type = 'row', label = 'Statut patrimonial', value = {'classement', 'protection'}, wikidata = require('Module:Classement').formattedList(localdata.item) } end

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

return p