Aller au contenu

Module:Infobox/Fonctions/Centrale électrique

Une page de Wikipédia, l'encyclopédie libre.

 Documentation[voir] [modifier] [historique] [purger]

Cette page définit un module d'infobox.


local p = {}
local general = require "Module:Infobox/Fonctions"
local localdata = require "Module:Infobox/Localdata"
local wikidata = require "Module:Wikidata"
local address = require "Module:Adresse"
local countrymodule = require "Module:Country data"
local linguistique = require "Module:Linguistique"

function p.operateur() -- si l'operateur est le même que le propriétaire dans wikidata : ne pas afficher
	if localdata['opérateur'] then
		return {type = 'row', label = 'Opérateur', value = 'opérateur'}
	elseif localdata['concessionnaire'] then
		return {type = 'row', label = 'Opérateur', value = 'concessionnaire'}
	elseif (wikidata.formatStatements{property = "P127", displayformat = "raw", entity= localdata.item} == wikidata.formatStatements{property = "P137", displayformat = "raw", entity = localdata.item}) then
		return nil
	else
		return {type = 'row', label = 'Opérateur', value = 'opérateur', property = 'P137'}
	end
end

function p.facteurcharge() --facteur de charge : valeur dans 'Facteur charge' ou calcul a partir de P4131 et P2109
	if localdata['facteur charge'] then
		return {type = 'row', label = '[[Facteur de charge (électricité)|Facteur de charge]]', value = 'facteur charge'}
	elseif localdata['Facteur charge'] then
		return {type = 'row', label = '[[Facteur de charge (électricité)|Facteur de charge]]', value = 'Facteur charge'}
	elseif localdata['facteur_utilisation'] then
		return {type = 'row', label = '[[Facteur de charge (électricité)|Facteur de charge]]', value = 'facteur_utilisation'}
	elseif localdata['facteur_utilisation 2'] then
		return {type = 'row', label = '[[Facteur de charge (électricité)|Facteur de charge]]', value = 'facteur_utilisation 2'}
	else
		local production = wikidata.formatStatements{entity = localdata.item, property = 'P4131', numval = 1, sorttype = "inverted", showunit = '-', targetunit = 'Wh', displayformat = "raw"}
		local puissance = wikidata.formatStatements{entity = localdata.item, property = 'P2109', numval = 1, sorttype = "inverted", showunit = '-', targetunit = 'w', displayformat = "raw"}
		if tonumber(production) and tonumber(puissance) then
			local fcharge = tonumber(production) / (tonumber(puissance) * 365 * 24)*100
			return {type = 'row', label = '[[Facteur de charge (électricité)|Facteur de charge]]', value = function() return math.floor(fcharge+0.5).." %" end}
		else
			return nil
		end
	end
end

function p.densitepuissance() --densité de puissance : valeur dans 'Densité puissance' ou calcul a partir de P4131 et P2046
	if localdata['densité puissance'] then
		return {type = 'row', label = '[[Densité de puissance surfacique|Densité de puissance]]', value = 'densité puissance'}
	elseif localdata['Densité puissance'] then
		return {type = 'row', label = '[[Densité de puissance surfacique|Densité de puissance]]', value = 'Densité puissance'}
	else
		local production = wikidata.formatStatements{entity = localdata.item, property = 'P4131', numval = 1, sorttype = "inverted", showunit = '-', targetunit = 'Wh', displayformat = "raw"}
		local surface = wikidata.formatStatements{entity = localdata.item, property = 'P2046', numval = 1, sorttype = "inverted", showunit = '-', targetunit = 'sqm', displayformat = "raw"}
		if tonumber(production) and tonumber(surface) then
			local dpuis = tonumber(production) / (tonumber(surface) * 365 * 24)
			return {type = 'row', label = '[[Densité de puissance surfacique|Densité de puissance]]', value = function() return math.floor(dpuis+0.5).." W/m²" end}
		else
			return nil
		end
	end
end

function p.adminlocation() -- Fonction copiée de Module:Infobox/Fonctions/Bâtiment et adaptée à l'infobox barrage et centrale
	
	if not (localdata['province'] or localdata['subdivision 1'] or localdata['subdivision 2'] or localdata['subdivision 3'] or localdata['Subdivision 1'] or localdata['Subdivision 2'] or localdata['Subdivision 3']) then
		local country = wikidata.getIds(localdata.item, {property = "P17"})
		if country and #country > 1 then
			 local countries = {}
			for i, j in pairs(country) do
				newcountry = countrymodule.standarddisplay(j)
				table.insert(countries, newcountry)
			end
			return {type = 'row', label = "Pays", value = function() return linguistique.conj(countries, 'new line') end }
		else
			return {type = 'row', label = "Localisation", value = function() return address.fullAddress(localdata.item) end }
		end
	end
	local function formatCountry(country)
		if not country then
			return nil
		end
		local val, success = countrymodule.standarddisplay(country) -- val = nil si country n'est pas reconnu
		if success then
			return val
		end
	end
	local countries = {}
	newcountry = formatCountry(localdata['pays']) or formatCountry(localdata['Pays']) or localdata['pays'] or localdata['Pays']
	table.insert(countries, newcountry)
	if localdata['pays 2'] or localdata['Pays 2'] then
		newcountry = formatCountry(localdata['pays 2']) or formatCountry(localdata['Pays 2']) or localdata['pays 2'] or localdata['Pays 2']
		table.insert(countries, newcountry)
	end
	return {
		type = 'multi', 
		rows = {
			{type = 'row', label = "Pays", value = function() return linguistique.conj(countries, 'new line') end },
			{type = 'row', label = 'Province', value = 'province'},
			{
				type = 'row', 
				label = function ( localdata )
					return localdata[ "nom subdivision 1" ] or localdata[ "Subdivision 1 type" ]
				end,
				value = function ( localdata )
					return localdata[ "subdivision 1" ] or localdata[ "Subdivision 1" ]
				end,
			},
			{
				type = 'row',
				label = function ( localdata )
					return localdata[ "nom subdivision 2" ] or localdata[ "Subdivision 2 type" ]
				end,
				value = function ( localdata )
					return localdata[ "subdivision 2" ] or localdata[ "Subdivision 2" ]
				end,
			},
			{
				type = 'row',
				label = function ( localdata )
					return localdata[ "nom subdivision 3" ] or localdata[ "Subdivision 3 type" ]
				end,
				value = function ( localdata )
					return localdata[ "subdivision 3" ] or localdata[ "Subdivision 3" ]
				end,
			},
			{
				type = 'row',
				label = function ( localdata )
					return localdata[ "nom subdivision 4" ] or localdata[ "Subdivision 4 type" ]
				end,
				value = function ( localdata )
					return localdata[ "subdivision 4" ] or localdata[ "Subdivision 4" ]
				end,
			},
		}
	}
end

return p