Module:Infobox/Fonctions/Bâtiment : Différence entre versions
< Module:Infobox | Fonctions
m |
(petite réorganisation, ajout d'un paramètre "consécration" vu qu'on a désacralisation) |
||
Ligne 4 : | Ligne 4 : | ||
local coordfunctions = require 'Module:Infobox/Fonctions/Géolocalisation' | local coordfunctions = require 'Module:Infobox/Fonctions/Géolocalisation' | ||
− | local function keydate(event, | + | local function keydate(event) |
− | + | if string.sub(event, 1, 1) == 'Q' then -- on demande un élément utilisé dans P:P793 (événement clé) | |
+ | return wikidatamod.getTheDate{property = 'P793', targetvalue = event, addcat = true, item = item} | ||
+ | elseif string.sub(event, 1, 1) == 'P' then -- on demande une propriété | ||
+ | return wikidatamod.formatAndCat{property = event, item = item} | ||
+ | end | ||
+ | end | ||
+ | |||
+ | local function daterow(args) | ||
+ | local wikidataquery | ||
+ | if args.event then | ||
+ | wikidataquery = function() return 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 reuqête Wikidata pour éviter les doublons | ||
+ | -- exemple : "ouverture" désactive la recher d'"inauguration" sur Wikidata | ||
+ | if args.blocker and templatedata[args.blocker] then | ||
+ | wikidata = false | ||
+ | elseif args.blocker and type(args.blocker) == 'table' then | ||
+ | for i, j in pairs(blocker) do | ||
+ | if templatedata[j] then | ||
+ | wikidata = false | ||
+ | break | ||
+ | end | ||
+ | end | ||
+ | end | ||
+ | |||
+ | return { | ||
+ | type = 'row', | ||
+ | label = args.label, | ||
+ | value = args.param, | ||
+ | wikidata = wikidataquery | ||
+ | } | ||
end | end | ||
Ligne 32 : | Ligne 63 : | ||
type = 'row', -- pour les régions historiques, non adminstratives | type = 'row', -- pour les régions historiques, non adminstratives | ||
value = 'région', | value = 'région', | ||
− | label = | + | label = templatedata['intitulé région'] or templatedata['lien région'] or 'Région', |
} | } | ||
end | end | ||
Ligne 42 : | Ligne 73 : | ||
{ | { | ||
type = 'row', | type = 'row', | ||
− | value = | + | value = {'subdivision', 'subdivision1'}, |
− | label = | + | label = templatedata['intitulé subdivision'] or templatedata['lien subdivision1'] or templatedata['lien subdivision'] or 'Subdivision administrative' |
− | |||
− | |||
}, | }, | ||
{ | { | ||
type = 'row', | type = 'row', | ||
value = 'subdivision2', | value = 'subdivision2', | ||
− | label = | + | label = templatedata['intitulé subdivision2'] or templatedata['lien subdivision2'] or 'Subdivision administrative' |
− | |||
− | |||
}, | }, | ||
{ | { | ||
type = 'row', | type = 'row', | ||
value = 'subdivision3', | value = 'subdivision3', | ||
− | label = | + | label = templatedata['intitulé subdivision3'] or templatedata['lien subdivision3'] or 'Subdivision administrative' |
− | |||
− | |||
}, | }, | ||
{ | { | ||
type = 'row', | type = 'row', | ||
− | value = | + | value = {'commune', 'ville'}, |
− | label = | + | label = templatedata['intitulé commune'] or templatedata['lien commune'] or 'Commune' |
− | |||
− | |||
}, | }, | ||
{ | { | ||
type = 'row', | type = 'row', | ||
value = 'quartier', | value = 'quartier', | ||
− | label = | + | label = templatedata['intitulé quartier'] or templatedata['titre quartier'] or 'Quartier' |
}, | }, | ||
{ | { | ||
Ligne 77 : | Ligne 100 : | ||
value = 'adresse', | value = 'adresse', | ||
label = 'Adresse', | label = 'Adresse', | ||
− | wikidata = | + | wikidata = require('Module:Adresse').wikidataAddress(item), |
} | } | ||
} } | } } | ||
Ligne 90 : | Ligne 113 : | ||
end | end | ||
+ | function p.construction() | ||
+ | templatedata = templatedata | ||
+ | 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 constuction" à déprécier) | ||
+ | daterow{param = {'construction', 'Construction'}, label = 'Construction', event = 'Q385378'}, | ||
+ | |||
+ | -- événement apparentés | ||
+ | daterow{param = 'ouverture', label = 'Ouverture'}, -- wikidata valeur de P793 ? | ||
+ | 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'}, | ||
+ | } | ||
+ | } | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
end | end | ||
function p.demolition() return | function p.demolition() return | ||
{type = 'multi', rows = { | {type = 'multi', rows = { | ||
− | { | + | daterow{param = 'démolition', label = 'Démolition', event = 'Q331483'}, |
− | { | + | daterow{param = 'destruction', label = 'Destruction', event = 'Q17781833'}, |
} | } | ||
} | } | ||
Ligne 144 : | Ligne 142 : | ||
function p.closure() return | function p.closure() return | ||
− | { | + | daterow{param = 'Fermeture', label = 'Fermeture', event = 'Q14954904'} |
end | end | ||
function p.usage() return | function p.usage() return | ||
− | {type = 'row', label = 'Usage', value = 'usage', wikidata = | + | { |
− | + | type = 'row', | |
− | + | label = 'Usage', | |
− | + | value = 'usage', | |
− | + | wikidata = function(item) | |
− | + | local speciallabels = { | |
− | + | Q182060 = 'bureaux', -- bureaux semble toujours pouvoir se mettre au pluriel quand c'est en P366 d'un bâtiment | |
+ | } | ||
+ | return wikidatamod.formatAndCat{entity = item, property = 'P366', speciallabels = speciallabels, link = '-'} | ||
+ | end | ||
} | } | ||
end | end | ||
Ligne 160 : | Ligne 161 : | ||
function p.operator() | function p.operator() | ||
return | return | ||
− | {type = 'row', label = 'Gestionnaire', property = 'P137', | + | { |
− | value = | + | type = 'row', |
+ | label = 'Gestionnaire', | ||
+ | property = 'P137', | ||
+ | value = templatedata['administration'] or templatedata['gestionnaire'] | ||
+ | } | ||
end | end | ||
Ligne 181 : | Ligne 186 : | ||
type = 'row', | type = 'row', | ||
label = 'Style', | label = 'Style', | ||
− | value = | + | value = {'style architectural', 'style'}, |
− | wikidata = function ( | + | wikidata = function () |
local val = wikidatamod.formatAndCat{entity = item, property = 'P149'} or wikidatamod.formatAndCat{entity = item, property = 'P135'} | local val = wikidatamod.formatAndCat{entity = item, property = 'P149'} or wikidatamod.formatAndCat{entity = item, property = 'P135'} | ||
if not val then | if not val then | ||
Ligne 197 : | Ligne 202 : | ||
-- architect | -- architect | ||
{ type = 'row', | { type = 'row', | ||
− | label = | + | label = templatedata['titre architecte'] or 'Architecte', |
value = 'architecte', | value = 'architecte', | ||
wikidata = wikidatamod.formatAndCat{entity = item, property = 'P84', showqualifiers = {'P518'}, showdate = true, qualiflink = '-'} | wikidata = wikidatamod.formatAndCat{entity = item, property = 'P84', showqualifiers = {'P518'}, showdate = true, qualiflink = '-'} | ||
Ligne 211 : | Ligne 216 : | ||
{ type = 'row', | { type = 'row', | ||
label = 'Créateur', | label = 'Créateur', | ||
− | value = function( | + | value = function() |
− | if | + | if templatedata['architecte'] then |
return nil | return nil | ||
end | end | ||
− | if | + | if templatedata['créateur'] then |
− | return | + | return templatedata['créateur'] |
end | end | ||
if item then | if item then | ||
return wikidatamod.formatAndCat{entity = item, property = 'P170', showqualifiers = {'P518'}} | return wikidatamod.formatAndCat{entity = item, property = 'P170', showqualifiers = {'P518'}} | ||
end | end | ||
− | + | end | |
}, | }, | ||
} } | } } | ||
Ligne 243 : | Ligne 248 : | ||
label = 'Propriétaire', | label = 'Propriétaire', | ||
value = 'propriétaire', | value = 'propriétaire', | ||
− | wikidata = | + | wikidata = require('Module:Propriétaire').formatFromItem(item) |
} | } | ||
} } | } } | ||
Ligne 253 : | Ligne 258 : | ||
label = 'Matériau', | label = 'Matériau', | ||
value = 'matériau', | value = 'matériau', | ||
− | wikidata = | + | wikidata = require('Module:Matériau').formatFromItem(item), |
} | } | ||
end | end | ||
− | + | function p.protection() | |
− | |||
− | |||
− | function p.protection( | ||
return { | return { | ||
type = 'row', | type = 'row', | ||
label = 'Statut patrimonial', | label = 'Statut patrimonial', | ||
value = 'classement', | value = 'classement', | ||
− | wikidata = | + | wikidata = require('Module:Classement').formattedList(item) |
} | } | ||
end | end |
Version du 14 avril 2015 à 14:46
La documentation pour ce module peut être créée à Module:Infobox/Fonctions/Bâtiment/doc
local p = {} local wikidatamod = require 'Module:Wikidata' local general = require 'Module:Infobox/Fonctions' local coordfunctions = require 'Module:Infobox/Fonctions/Géolocalisation' local function keydate(event) if string.sub(event, 1, 1) == 'Q' then -- on demande un élément utilisé dans P:P793 (événement clé) return wikidatamod.getTheDate{property = 'P793', targetvalue = event, addcat = true, item = item} elseif string.sub(event, 1, 1) == 'P' then -- on demande une propriété return wikidatamod.formatAndCat{property = event, item = item} end end local function daterow(args) local wikidataquery if args.event then wikidataquery = function() return 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 reuqête Wikidata pour éviter les doublons -- exemple : "ouverture" désactive la recher d'"inauguration" sur Wikidata if args.blocker and templatedata[args.blocker] then wikidata = false elseif args.blocker and type(args.blocker) == 'table' then for i, j in pairs(blocker) do if templatedata[j] then wikidata = false break end end end return { type = 'row', label = args.label, value = args.param, wikidata = wikidataquery } 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(default) return coordfunctions.country(default) 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() return { type = 'row', -- pour les régions historiques, non adminstratives value = 'région', label = templatedata['intitulé région'] or templatedata['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'}, label = templatedata['intitulé subdivision'] or templatedata['lien subdivision1'] or templatedata['lien subdivision'] or 'Subdivision administrative' }, { type = 'row', value = 'subdivision2', label = templatedata['intitulé subdivision2'] or templatedata['lien subdivision2'] or 'Subdivision administrative' }, { type = 'row', value = 'subdivision3', label = templatedata['intitulé subdivision3'] or templatedata['lien subdivision3'] or 'Subdivision administrative' }, { type = 'row', value = {'commune', 'ville'}, label = templatedata['intitulé commune'] or templatedata['lien commune'] or 'Commune' }, { type = 'row', value = 'quartier', label = templatedata['intitulé quartier'] or templatedata['titre quartier'] or 'Quartier' }, { type = 'row', value = 'adresse', label = 'Adresse', wikidata = require('Module:Adresse').wikidataAddress(item), } } } end function p.coordinates(coordspecs) return coordfunctions.coordinates(coordspecs) end function p.website() return general.website() end function p.construction() templatedata = templatedata 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 constuction" à déprécier) daterow{param = {'construction', 'Construction'}, label = 'Construction', event = 'Q385378'}, -- événement apparentés daterow{param = 'ouverture', label = 'Ouverture'}, -- wikidata valeur de P793 ? 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'}, } } end function p.demolition() return {type = 'multi', rows = { daterow{param = 'démolition', label = 'Démolition', event = 'Q331483'}, daterow{param = 'destruction', label = 'Destruction', event = 'Q17781833'}, } } end function p.closure() return daterow{param = 'Fermeture', label = 'Fermeture', event = 'Q14954904'} end function p.usage() return { type = 'row', label = 'Usage', value = 'usage', wikidata = function(item) local speciallabels = { Q182060 = 'bureaux', -- bureaux semble toujours pouvoir se mettre au pluriel quand c'est en P366 d'un bâtiment } return wikidatamod.formatAndCat{entity = item, property = 'P366', speciallabels = speciallabels, link = '-'} end } end function p.operator() return { type = 'row', label = 'Gestionnaire', property = 'P137', value = templatedata['administration'] or templatedata['gestionnaire'] } end function p.transport() return { {type = 'table', title = 'Accès et transport', 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 = 'bus'}, {type = 'row', label = 'Autobus', value = 'gare'}, }, } } end function p.archistyle() return { type = 'row', label = 'Style', value = {'style architectural', 'style'}, wikidata = function () local val = wikidatamod.formatAndCat{entity = item, property = 'P149'} or wikidatamod.formatAndCat{entity = 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 = templatedata['titre architecte'] or 'Architecte', value = 'architecte', wikidata = wikidatamod.formatAndCat{entity = item, property = 'P84', showqualifiers = {'P518'}, showdate = true, qualiflink = '-'} }, -- ingénieur { type = 'row', label = 'Ingénieur', value = 'ingénieur', property = 'P631', }, -- créateur (quand les autres noms ne conviennent pas) { type = 'row', label = 'Créateur', value = function() if templatedata['architecte'] then return nil end if templatedata['créateur'] then return templatedata['créateur'] end if item then return wikidatamod.formatAndCat{entity = item, property = 'P170', showqualifiers = {'P518'}} end end }, } } end function p.owner() return {type = 'multi', rows = { { type = 'row', label = 'Propriétaire initial', value = 'propriétaire initial', }, { 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 function p.material() return { type = 'row', label = 'Matériau', value = 'matériau', wikidata = require('Module:Matériau').formatFromItem(item), } end function p.protection() return { type = 'row', label = 'Statut patrimonial', value = 'classement', wikidata = require('Module:Classement').formattedList(item) } end function p.geoloc(params) return coordfunctions.geoloc(params) end return p