Module:Infobox/Fonctions/Bâtiment : Différence entre versions

De Lagny-sur-Marne Wiki
Aller à : navigation, rechercher
(+)
Ligne 26 : Ligne 26 :
 
function p.historicalregion()
 
function p.historicalregion()
 
return {
 
return {
type = 'mixed', -- pour les régions historiques, non adminstratives
+
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 = 'mixed',  
+
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 = 'mixed',  
+
type = 'row',  
 
value = 'subdivision2',
 
value = 'subdivision2',
 
label = function(localdata, item) return
 
label = function(localdata, item) return
Ligne 51 : Ligne 51 :
 
},
 
},
 
{
 
{
type = 'mixed',  
+
type = 'row',  
 
value = 'subdivision3',
 
value = 'subdivision3',
 
label = function(localdata, item) return
 
label = function(localdata, item) return
Ligne 58 : Ligne 58 :
 
},
 
},
 
{
 
{
type = 'mixed',  
+
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 = 'mixed',  
+
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 = 'mixed',
+
type = 'row',
 
value = 'adrress',
 
value = 'adrress',
 
label = 'Adresse',
 
label = 'Adresse',
Ligne 87 : Ligne 87 :
  
  
function p.opening() return
+
function p.construction() return
 
{type = 'multi', rows = {
 
{type = 'multi', rows = {
{type = 'mixed', label = 'Ouverture', value = 'ouverture'}, -- valeur de P793 pour ouverture
+
-- début construction (legacy infobox Stade)
{type = 'mixed', label = 'Inauguration', value = 'inauguration',
+
{ 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
+
if localdata['ouverture'] then
return wikidatamod.getTheDate{property = 'P793', targetvalue = 'Q1417098', addcat = true, item=item}
+
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 = 'mixed', label = 'Fermeture', value = function(localdata, item)
+
{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 = 'mixed', label = 'Gestionnaire', property = 'P137',
+
{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 = 'mixed', label = 'Stationnement', value = 'stationnement'},
+
{type = 'row', label = 'Stationnement', value = 'stationnement'},
{type = 'mixed', label = 'Gare', value = 'gare'},
+
{type = 'row', label = 'Gare', value = 'gare'},
{type = 'mixed', label = 'Métro', value = 'métro'},
+
{type = 'row', label = 'Métro', value = 'métro'},
{type = 'mixed', label = 'Tramway', value = 'bus'},
+
{type = 'row', label = 'Tramway', value = 'bus'},
{type = 'mixed', label = 'Autobus', value = 'gare'},
+
{type = 'row', label = 'Autobus', value = 'gare'},
 
},
 
},
 
}
 
}
Ligne 127 : Ligne 151 :
 
function p.archistyle()
 
function p.archistyle()
 
return {
 
return {
type = 'mixed',
+
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 = 'mixed',
+
type = 'row',
label = function(localdata, item) return localdata['titre architecte'] or 'Architecte' end,
+
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 = 'mixed',
+
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 = 'mixed',
+
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 = 'mixed',
+
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 = 'mixed',
+
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