Module:Disque

De Poképédia
Aller à la navigation Aller à la recherche

Fonction « tableau »[modifier]

Paramètres[modifier]

Légende des icônes
Certains paramètres sont accompagnés d'une ou plusieurs icône indiquant leur(s) caractéristique(s) :
 : Ce paramètre est facultatif, et n'a donc pas besoin d'être systématiquement défini.
 : Ce paramètre classe automatiquement l'article dans une catégorie.
 : Ce paramètre influe sur les données sémantiques présentes en pied de page.


  • génération : numéro de la génération en chiffres arabes (1, 2, 3…)
  • jeu  : si la capacité présente dans une Disque varie dans les jeux d'une même génération, il faut utiliser plusieurs fois le module. Dans ce cas, on utilise ce paramètre pour préciser à quel jeu de la génération le tableau se rapporte.
  • capacité : nom de la capacité.
  • jeux : liste des abréviations des jeux dans lesquels le disque est présent tels que définies dans le Modèle:Jeu. Chaque jeu est séparé par un « / ».
    • abréviation_du_jeu-emplacement  : emplacement du disque. À répéter pour chaque jeu.
    • abréviation_du_jeu-achat  : prix d'achat du disque. À répéter pour chaque jeu.
    • abréviation_du_jeu-achat-unité  : unité du prix d'achat du disque, par exemple « jetons ». Par défaut, le module considère qu'il s'agit de Pokédollars (Poké Dollar). À répéter pour chaque jeu.
    • abréviation_du_jeu-vente  : prix de vente du disque. À répéter pour chaque jeu.
  • imagenuméro  : nom de l'image représentant la localisation du disque. La première image a « 1 » comme numéro, puis la suivante 2, puis 3…
  • imagenuméro-description  : decription de l'image représentant la localisation du disque. La première image a « 1 » comme numéro, puis la suivante 2, puis 3…
  • pokémon : liste des Pokémon pouvant apprendre le disque séparés par des « / ». Incompatible avec le paramètre tous.
  • tous : si tous les Pokémon ou presque pouvant apprendre un disque peuvent apprendre cette capacité, remplir ce paramètre avec oui. Si ce n'est le cas que pour les Pokémon sexués, indiquer tous=sexués. Incompatible avec le paramètre pokémon.
  • exceptions  : seulement dans les cas où tous=oui ou tous=sexués, il est possible de renseigner ce paramètre pour définir les exceptions, les Pokémon qui ne peuvent pas apprendre la capacité même s'ils peuvent un disque. Par exemple, si les exceptions sont Tarsal, Kirlia et Méios, il faut taper « exceptions = [[Tarsal]], [[Kirlia]] et [[Méios]] ».

Exemples[modifier]

Données venant de la page DT00

{{#invoke:Disque|tableau
| génération = 8
| jeu = Épée et Bouclier
| capacité = Danse Lames
| jeux = eb
| eb-emplacement = Garderie Pokémon de la [[Prairie Entre-Ponts]]
| eb-achat = 8000
| pokémon = Salamèche / Reptincel / Dracaufeu 
}}

donne :

Huitième génération - Épée et Bouclier

CapacitéTypeCatégoriePuissancePrécisionPP
Danse LamesNormalStatut20
JeuEmplacementAchatVente
EBGarderie Pokémon de la Prairie Entre-Ponts8000 Pokédollar
Pokémon aptes
0004 Salamèche0005 Reptincel0006 Dracaufeu

local p = {}
local ressources = {
	["infosPokemon"] = require("Module:Ressources/infosPokemon"),
	["donneesCapacite"] = require("Module:Ressources/donneesCapacite")
}

function p.tableau( frame )
	local generation = tonumber( mw.text.trim( frame.args['génération'] ) )
	local capacite = mw.text.trim( frame.args['capacité'] )
	local jeux = frame.args['jeux']
	local poke_aptes = frame.args['pokémon']
	if generation == nil then generation = "" end
	if capacite == nil then return "Pas de nom de capacité renseigné" end
	if jeux ~= nil then jeux = mw.text.split( jeux, "/" ) else jeux = {} end
	for i,jeu in ipairs(jeux) do
		jeux[i] = mw.text.trim( jeu )
	end
	if poke_aptes ~= nil then poke_aptes = mw.text.split( poke_aptes, "/" ) else poke_aptes = {} end
	local generations = {"Première", "Deuxième", "Troisième", "Quatrième", "Cinquième", "Sixième", "Septième", "Huitième"}
	local titre
	if generations[generation] then titre = generations[generation] end
	titre = titre .. ' génération'
	if frame.args['jeu'] then titre = titre .. ' - <i>' .. frame.args['jeu'] .. '</i>' end
	
	local colspan = 6
	if generation == 3 then colspan = 9
	elseif generation == 4 then colspan = 8
	end

	local i = 1
	local infos_jeux = {}
	local emplacement, achat, vente
	while jeux[i] ~= nil do
		jeux[i] = mw.text.trim( jeux[i] )
		if frame.args[string.lower( jeux[i] ) .. '-emplacement'] == nil then emplacement = "Inconnu"
		else emplacement = mw.text.trim( frame.args[string.lower( jeux[i] ) .. '-emplacement'] )
		end
		if frame.args[string.lower( jeux[i] ) .. '-achat'] == nil or frame.args[string.lower( jeux[i] ) .. '-achat'] == "-" or frame.args[string.lower( jeux[i] ) .. '-achat'] == "—" then achat = "—"
		else 
			if frame.args[string.lower( jeux[i] ) .. '-achat-unité'] then achat = mw.text.trim( frame.args[string.lower( jeux[i] ) .. '-achat'] ) .. " " .. mw.text.trim( frame.args[string.lower( jeux[i] ) .. '-achat-unité'] )
			else achat = mw.text.trim( frame.args[string.lower( jeux[i] ) .. '-achat'] ) .. " [[Fichier:Miniature Pokédollar EB.png|10px|class=imagenoire|link=Pokédollar|alt=Pokédollar]]"
			end
		end
		if frame.args[string.lower( jeux[i] ) .. '-vente'] == nil or frame.args[string.lower( jeux[i] ) .. '-vente'] == "-" or frame.args[string.lower( jeux[i] ) .. '-vente'] == "—" then vente = "—"
		else vente = mw.text.trim( frame.args[string.lower( jeux[i] ) .. '-vente'] ) .. " [[Fichier:Miniature Pokédollar EB.png|10px|class=imagenoire|link=Pokédollar|alt=Pokédollar]]"
		end
		table.insert(infos_jeux, '<tr><td>' .. frame:expandTemplate{ title = 'Abréviation', args = { jeux[i] } } .. '</td><td colspan="' .. colspan - 3 .. '">' .. emplacement .. '</td><td>' .. achat .. '</td><td>' .. vente .. '</td></tr>')
		i = i + 1
	end

	local poke = {}
	local aucun = "non"
	table.insert(poke, '<tr class="tableauDisque' .. generation)
	if frame.args['jeu'] then table.insert(poke, frame.args['jeu']) end
	table.insert(poke, '">')
	if frame.args['tous'] == "oui" or frame.args['tous'] == "sexués" then
		table.insert(poke, '<td colspan="' .. colspan .. '">Tout Pokémon')
		if frame.args['tous'] == "sexués" then table.insert(poke, ' sexué') end
		table.insert(poke, ' pouvant apprendre une capacité par disque peut apprendre ' .. capacite)
		if frame.args['exceptions'] then table.insert(poke, ' sauf ' .. frame.args['exceptions']) end
		table.insert(poke, '.</td>')
	else
		local y = 1
		local z = 1
		local colspan_poke
		if poke_aptes[1] == "" then
			aucun = "oui"
			table.insert(poke, '<td colspan="' .. colspan .. '">\'\'Incomplet\'\'</td>')
		end
		while poke_aptes[y] and aucun == "non" do
			if generation == 3 then
				if z == 1 or z == 3 or z == 5 then colspan_poke = 2  else colspan_poke = 1 end
			elseif generation == 4 then
				if z == 3 or z == 4 then colspan_poke = 2  else colspan_poke = 1 end
			else colspan_poke = 1
			end
			table.insert(poke, '<td colspan="' .. colspan_poke .. '" style="text-align: left;">' .. ressources.infosPokemon( poke_aptes[y] ) .. '</td>')
			y = y + 1
			 if z == 6 then
			 	table.insert(poke, '</tr><tr class="tableauDisque' .. generation)
				if frame.args['jeu'] then table.insert(poke, frame.args['jeu']) end
				table.insert(poke, '">')
			 	z = 1
			 else z = z + 1 end
		end
	end
	table.insert(poke, '</tr>')

	local donnees = ressources.donneesCapacite(generation, capacite, jeux)
	local resultat = {}
	table.insert(resultat, '<table class="tableaustandard centre ' .. donnees["type"] .. '" style="width: 90%;"><caption><h3>' .. titre.. '</h3></caption><tr><th>Capacité</th><th>Type</th><th>Catégorie</th><th>Puissance</th><th>Précision</th><th>PP</th>')
	if generation == 3 then table.insert(resultat, '<th>[[Concours Pokémon|Type concours]]</th><th>[[Charme (concours)|Charme]]</th><th>[[Blocage]]</th>')
	elseif generation == 4 then table.insert(resultat, '<th>[[Concours Pokémon|Type concours]]</th><th>[[Charme (concours)|Charme]]</th>')
	end
	table.insert(resultat, '</tr><tr><td>' .. donnees[1] .. '</td><td>' .. donnees[2] .. '</td><td>' .. donnees[3] .. '</td><td>' .. donnees[4] .. '</td><td>' .. donnees[5] .. '</td><td>' .. donnees[6] .. '</td>')
	if generation == 3 then table.insert(resultat, '<td>' .. donnees[7] .. '</td><td>' .. donnees[8] .. '</td><td>' .. donnees[9] .. '</td>')
	elseif generation == 4 then table.insert(resultat, '<td>' .. donnees[7] .. '</td><td>' .. donnees[8] .. '</td>')
	end
	table.insert(resultat, '</tr><tr><th>Jeu</th><th colspan="' .. colspan - 3 .. '">Emplacement</th><th>Achat</th><th>Vente</th></tr>' .. table.concat(infos_jeux, ""))
	
	local j = 1
	local galerie = {}
	if frame.args['image1'] then table.insert(galerie, '<gallery widths="180px" heights="120px">') end
	while frame.args['image' .. j] do
		if frame.args['image' .. j .. '-description'] == nil then frame.args['image' .. j .. '-description'] = "" end
		table.insert(galerie, frame.args['image' .. j] .. '|' .. frame.args['image' .. j .. '-description'] .. '\n')
		j = j + 1
	end
	if frame.args['image1'] then
		table.insert(galerie, '</gallery>')
		table.insert(resultat, '<tr><td colspan="' .. colspan .. '">' .. frame:preprocess( table.concat(galerie, "") .. '</td></tr>' ) )
	end
	
	table.insert(resultat, '<tr><th colspan=' .. colspan .. '>Pokémon aptes</th></tr>')
	if frame.args['tous'] ~= "oui" and frame.args['tous'] ~= "sexués" and aucun ~= "oui" then 
		table.insert(resultat, '<tr><td colspan="' .. colspan .. '"><button type="button" name="tableauDisque' .. generation)
		if frame.args['jeu'] then table.insert(resultat, frame.args['jeu']) end
		table.insert(resultat, '" value="afficher" style="font-size:80%" title="[-] Masquer les Pokémon aptes">[+] Afficher les Pokémon aptes</button></td></tr>')
	end
	table.insert(resultat, table.concat(poke, "") .. '</table>')

	return table.concat(resultat, "")
end

return p