Module:Infobox/Fonctions/Bâtiment : Différence entre versions
< Module:Infobox | Fonctions
(+) |
|||
Ligne 26 : | Ligne 26 : | ||
function p.historicalregion() | function p.historicalregion() | ||
return { | return { | ||
− | type = ' | + | type = 'row', -- pour les régions historiques, non adminstratives |
value = 'région', | value = 'région', | ||
label = 'Région', | label = 'Région', | ||
Ligne 37 : | Ligne 37 : | ||
{type = 'multi', rows = { | {type = 'multi', rows = { | ||
{ | { | ||
− | type = ' | + | type = 'row', |
value = function(localdata, item) return localdata['subdivision'] or localdata['subdivision1']end, | value = function(localdata, item) return localdata['subdivision'] or localdata['subdivision1']end, | ||
label = function(localdata, item) return | label = function(localdata, item) return | ||
Ligne 44 : | Ligne 44 : | ||
}, | }, | ||
{ | { | ||
− | type = ' | + | type = 'row', |
value = 'subdivision2', | value = 'subdivision2', | ||
label = function(localdata, item) return | label = function(localdata, item) return | ||
Ligne 51 : | Ligne 51 : | ||
}, | }, | ||
{ | { | ||
− | type = ' | + | type = 'row', |
value = 'subdivision3', | value = 'subdivision3', | ||
label = function(localdata, item) return | label = function(localdata, item) return | ||
Ligne 58 : | Ligne 58 : | ||
}, | }, | ||
{ | { | ||
− | type = ' | + | type = 'row', |
value = function(localdata, item) return localdata['commune'] or localdata['ville'] end, | value = function(localdata, item) return localdata['commune'] or localdata['ville'] end, | ||
label = function(localdata, item) return | label = function(localdata, item) return | ||
Ligne 65 : | Ligne 65 : | ||
}, | }, | ||
{ | { | ||
− | type = ' | + | type = 'row', |
value = 'quartier', | value = 'quartier', | ||
label = function(localdata, item) return localdata['intitulé quartier'] or localdata['titre quartier'] or 'Quartier' end | label = function(localdata, item) return localdata['intitulé quartier'] or localdata['titre quartier'] or 'Quartier' end | ||
}, | }, | ||
{ | { | ||
− | type = ' | + | type = 'row', |
value = 'adrress', | value = 'adrress', | ||
label = 'Adresse', | label = 'Adresse', | ||
Ligne 87 : | Ligne 87 : | ||
− | function p. | + | function p.construction() return |
{type = 'multi', rows = { | {type = 'multi', rows = { | ||
− | {type = 'mixed', label = 'Ouverture', value = 'ouverture' | + | -- début construction (legacy infobox Stade) |
− | {type = ' | + | { type = 'mixed', |
+ | label = 'Début de construction', | ||
+ | value = 'début construction', | ||
+ | }, | ||
+ | -- construction | ||
+ | { type = 'mixed', | ||
+ | label = 'Date de construction', | ||
+ | value = 'date de construction' or 'construction', | ||
+ | wikidata = | ||
+ | wikidatamod.getTheDate{property = 'P793', targetvalue = 'Q385378', addcat = true} | ||
+ | or | ||
+ | wikidatamod.formatAndCat{item = item, property = 'P571', showqualifiers = {'P518'}} | ||
+ | }, | ||
+ | -- ouverture | ||
+ | { type = 'row', | ||
+ | label = 'Ouverture', | ||
+ | value = 'ouverture', | ||
+ | --wikidata valeur de P793 ? | ||
+ | }, | ||
+ | -- inauguration | ||
+ | { type = 'row', | ||
+ | label = 'Inauguration', | ||
+ | value = 'inauguration', | ||
wikidata = function(localdata, item) -- déactivé si le paramètre "ouverture" este renseigné : risques de doublon | wikidata = function(localdata, item) -- déactivé si le paramètre "ouverture" este renseigné : risques de doublon | ||
− | + | if localdata['ouverture'] then | |
− | + | return nil | |
+ | end | ||
+ | return wikidatamod.getTheDate{property = 'P793', targetvalue = 'Q1417098', addcat = true, item=item} | ||
end | end | ||
} | } | ||
Ligne 100 : | Ligne 124 : | ||
function p.closure() return | function p.closure() return | ||
− | {type = ' | + | {type = 'row', label = 'Fermeture', value = function(localdata, item) |
return wikidatamod.getTheDate{property = 'P793', targetvalue = 'Q14954904', addcat = true, item=item} | return wikidatamod.getTheDate{property = 'P793', targetvalue = 'Q14954904', addcat = true, item=item} | ||
end | end | ||
Ligne 108 : | Ligne 132 : | ||
function p.operator() | function p.operator() | ||
return | return | ||
− | {type = ' | + | {type = 'row', label = 'Gestionnaire', property = 'P137', |
value = function(localdata, item) return localdata['administration'] or localdata['gestionnaire'] end} | value = function(localdata, item) return localdata['administration'] or localdata['gestionnaire'] end} | ||
end | end | ||
Ligne 115 : | Ligne 139 : | ||
return { | return { | ||
{type = 'table', title = 'Accès et transport', rows = { | {type = 'table', title = 'Accès et transport', rows = { | ||
− | {type = ' | + | {type = 'row', label = 'Stationnement', value = 'stationnement'}, |
− | {type = ' | + | {type = 'row', label = 'Gare', value = 'gare'}, |
− | {type = ' | + | {type = 'row', label = 'Métro', value = 'métro'}, |
− | {type = ' | + | {type = 'row', label = 'Tramway', value = 'bus'}, |
− | {type = ' | + | {type = 'row', label = 'Autobus', value = 'gare'}, |
}, | }, | ||
} | } | ||
Ligne 127 : | Ligne 151 : | ||
function p.archistyle() | function p.archistyle() | ||
return { | return { | ||
− | type = ' | + | type = 'row', |
label = 'Style architectural', | label = 'Style architectural', | ||
value = function(localdata, item) return localdata['style architectural'] or localdata['style'] end, | value = function(localdata, item) return localdata['style architectural'] or localdata['style'] end, | ||
Ligne 136 : | Ligne 160 : | ||
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 = function(localdata, item) return localdata['titre architecte'] or 'Architecte' end, | ||
+ | value = 'architecte', | ||
+ | wikidata = wikidatamod.formatAndCat{item = item, property = 'P84', showqualifiers = {'P518'}, showdate = true} | ||
+ | }, | ||
+ | -- 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 = 'architecte', | ||
+ | wikidata = wikidatamod.formatAndCat{item = item, property = 'P170', showqualifiers = {'P518'}, showdate = true}, | ||
+ | }, | ||
+ | } } | ||
+ | end | ||
+ | |||
+ | -- fonctions p.architect et p.engineer : dépréciées | ||
function p.architect() | function p.architect() | ||
return { | return { | ||
− | type = ' | + | type = 'row', |
− | label = | + | label = 'architecte', |
value = 'architecte', | value = 'architecte', | ||
wikidata = wikidatamod.formatAndCat{item = item, property = 'P84', showqualifiers = {'P518'}, showdate = true} | wikidata = wikidatamod.formatAndCat{item = item, property = 'P84', showqualifiers = {'P518'}, showdate = true} | ||
Ligne 147 : | Ligne 196 : | ||
function p.engineer() | function p.engineer() | ||
return { | return { | ||
− | type = ' | + | type = 'row', |
label = 'Ingénieur', | label = 'Ingénieur', | ||
value = 'ingénieur', | value = 'ingénieur', | ||
Ligne 156 : | Ligne 205 : | ||
function p.owner() | function p.owner() | ||
return { | return { | ||
− | type = ' | + | type = 'row', |
label = 'Propriétaire', | label = 'Propriétaire', | ||
value = 'propriétaire', | value = 'propriétaire', | ||
Ligne 165 : | Ligne 214 : | ||
function p.material() | function p.material() | ||
return { | return { | ||
− | type = ' | + | type = 'row', |
label = 'Matériau', | label = 'Matériau', | ||
value = 'matériau', | value = 'matériau', | ||
Ligne 217 : | Ligne 266 : | ||
function p.protection(localdata, item) | function p.protection(localdata, item) | ||
return { | return { | ||
− | type = ' | + | type = 'row', |
label = 'Protection', | label = 'Protection', | ||
value = 'classement', | value = 'classement', |
Version du 5 mars 2015 à 19:23
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' --Titre 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 = '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 = function(localdata, item) return localdata['subdivision'] or localdata['subdivision1']end, label = function(localdata, item) return localdata['intitulé subdivision'] or localdata['lien subdivision1'] or localdata['lien subdivision'] or 'Subdivision administrative' end }, { type = 'row', value = 'subdivision2', label = function(localdata, item) return localdata['intitulé subdivision2'] or localdata['lien subdivision2'] or 'Subdivision administrative' end }, { type = 'row', value = 'subdivision3', label = function(localdata, item) return localdata['intitulé subdivision3'] or localdata['lien subdivision3'] or 'Subdivision administrative' end }, { type = 'row', value = function(localdata, item) return localdata['commune'] or localdata['ville'] end, label = function(localdata, item) return localdata['intitulé commune'] or localdata['lien commune'] or 'Commune' end }, { type = 'row', value = 'quartier', label = function(localdata, item) return localdata['intitulé quartier'] or localdata['titre quartier'] or 'Quartier' end }, { type = 'row', value = 'adrress', label = 'Adresse', wikidata = function(localdata, item) return require('Module:Adresse').wikidataAddress(item) end, } } } end function p.coordinates(coordspecs) return coordfunctions.coordinates(coordspecs) end function p.website() return general.website() end function p.construction() return {type = 'multi', rows = { -- début construction (legacy infobox Stade) { type = 'mixed', label = 'Début de construction', value = 'début construction', }, -- construction { type = 'mixed', label = 'Date de construction', value = 'date de construction' or 'construction', wikidata = wikidatamod.getTheDate{property = 'P793', targetvalue = 'Q385378', addcat = true} or wikidatamod.formatAndCat{item = item, property = 'P571', showqualifiers = {'P518'}} }, -- ouverture { type = 'row', label = 'Ouverture', value = 'ouverture', --wikidata valeur de P793 ? }, -- inauguration { type = 'row', label = 'Inauguration', value = 'inauguration', wikidata = function(localdata, item) -- déactivé si le paramètre "ouverture" este renseigné : risques de doublon if localdata['ouverture'] then return nil end return wikidatamod.getTheDate{property = 'P793', targetvalue = 'Q1417098', addcat = true, item=item} end } } } end function p.closure() return {type = 'row', label = 'Fermeture', value = function(localdata, item) return wikidatamod.getTheDate{property = 'P793', targetvalue = 'Q14954904', addcat = true, item=item} end } end function p.operator() return {type = 'row', label = 'Gestionnaire', property = 'P137', value = function(localdata, item) return localdata['administration'] or localdata['gestionnaire'] end} 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 architectural', value = function(localdata, item) return localdata['style architectural'] or localdata['style'] end, wikidata = function (locadata, item) return wikidatamod.formatAndCat{item = item, property = 'P149'} or wikidatamod.formatAndCat{item = item, property = 'P135'} 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 = function(localdata, item) return localdata['titre architecte'] or 'Architecte' end, value = 'architecte', wikidata = wikidatamod.formatAndCat{item = item, property = 'P84', showqualifiers = {'P518'}, showdate = true} }, -- 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 = 'architecte', wikidata = wikidatamod.formatAndCat{item = item, property = 'P170', showqualifiers = {'P518'}, showdate = true}, }, } } end -- fonctions p.architect et p.engineer : dépréciées function p.architect() return { type = 'row', label = 'architecte', value = 'architecte', wikidata = wikidatamod.formatAndCat{item = item, property = 'P84', showqualifiers = {'P518'}, showdate = true} } end function p.engineer() return { type = 'row', label = 'Ingénieur', value = 'ingénieur', property = 'P631' } end function p.owner() return { type = 'row', label = 'Propriétaire', value = 'propriétaire', property = 'P631' } end function p.material() return { type = 'row', label = 'Matériau', value = 'matériau', wikidata = wikidatamod.formatAndCat{item = item, property = 'P186', showqualifiers = {'P518'}, showdate = true} } end local function protectionline(localdata, item) local logos = require('Module:Classement/Logo') local texts = require('Module:Classement/Texte') local claims = wikidatamod.getClaims({item=item, property = 'P1435', exludespecial = true}) if not claims then return nil end local statuses = {}-- nouvelle table pour ne pas afficher séparément deux statements décrivant le même statut for i, j in pairs(claims) do local pstatus = wikidatamod.getmainid(j) if not statuses[pstatus] then statuses[pstatus] = {j} else table.insert(statuses[pstatus], j) end end local stringtable = {} -- liste des chaînes à retourner for i, j in pairs(statuses) do local mainstr = texts[i] or wikidatamod.formatEntity(i) -- nom de la protection local logostr = '' -- logo local logo = logos[i] if logo then logostr = '[[File:' .. logo .. '|x18px]] ' end local t = {} -- informations complémentaires sur les dates et les parties concernées for k, l in pairs(j) do local protectiondate = wikidatamod.getFormattedQualifiers(l, {'P580'}, {precision = 'year'}) if protectiondate then table.insert(t, protectiondate) end end local details = table.concat(t, ", ") if details ~= '' then details = ' <small>(' .. details .. ')</small>' else details = '' end table.insert(stringtable, logostr .. mainstr .. details) end return table.concat(stringtable, '<br />') .. '[[Catégorie:Page utilisant des données de Wikidata/P1435]]' end function p.protection(localdata, item) return { type = 'row', label = 'Protection', value = 'classement', wikidata = protectionline(locadata, item) } end function p.geoloc(params) return coordfunctions.geoloc(params) end return p