« Module:Tableau d'artisanat » : différence entre les versions
mAucun résumé des modifications Balise : Révocation manuelle |
Aucun résumé des modifications |
||
(10 versions intermédiaires par un autre utilisateur non affichées) | |||
Ligne 15 : | Ligne 15 : | ||
local parametres = { | local parametres = { | ||
materiau = { | materiau = { | ||
nom = | nom = 'matériau', | ||
qte = | qte = 'matériau#' | ||
}, | }, | ||
produit = { | produit = { | ||
nom = | nom = 'produit', | ||
qte = | qte = 'produit#' | ||
} | } | ||
} | } | ||
Ligne 28 : | Ligne 28 : | ||
for i = 1, n_liste do | for i = 1, n_liste do | ||
local materiau = args[param.nom | local materiau = args[param.nom .. i] | ||
if materiau | if not materiau then | ||
break | |||
end | |||
local quantite = args[param.qte | local quantite = args[param.qte .. i] or '1' | ||
local item = mw.html.create('li') | local item = mw.html.create('li') | ||
:wikitext(materiau .. ' | :wikitext(materiau .. ' × ' .. quantite) | ||
:done() | :done() | ||
items = items .. tostring(item) | items = items .. tostring(item) | ||
Ligne 40 : | Ligne 42 : | ||
local res = mw.html.create('div') | local res = mw.html.create('div') | ||
:addClass('artisanat- | :addClass('artisanat-colonne') | ||
:tag('div') | :tag('div') | ||
:addClass('artisanat- | :addClass('artisanat-colonne-titre') | ||
:wikitext(titre | :wikitext(titre) | ||
:done() | :done() | ||
:tag('ul') | :tag('div') | ||
:addClass('artisanat-colonne-liste') | |||
:tag('ul') | |||
:node(items) | |||
:allDone() | :allDone() | ||
Ligne 55 : | Ligne 59 : | ||
local items = '' | local items = '' | ||
local atelier = args[' | local atelier = args['poste de travail'] | ||
if atelier | if atelier then | ||
local item = mw.html.create('li') | local item = mw.html.create('li') | ||
:wikitext(atelier) | :wikitext(atelier) | ||
Ligne 63 : | Ligne 67 : | ||
end | end | ||
local saison = args['saison'] | local saison = args['saison'] | ||
if saison | if saison then | ||
local item = mw.html.create('li') | local item = mw.html.create('li') | ||
:wikitext(saison) | :wikitext(saison) | ||
Ligne 71 : | Ligne 75 : | ||
end | end | ||
local recette = args['recette'] | local recette = args['recette'] | ||
if recette | if recette then | ||
local item = mw.html.create('li') | local item = mw.html.create('li') | ||
:wikitext(recette) | :wikitext(recette) | ||
:done() | |||
items = items .. tostring(item) | |||
end | |||
local plan = args['plan'] | |||
if plan then | |||
local item = mw.html.create('li') | |||
:wikitext(plan) | |||
:done() | :done() | ||
items = items .. tostring(item) | items = items .. tostring(item) | ||
end | end | ||
local competence = args['compétence'] | local competence = args['compétence'] | ||
if competence | if competence then | ||
local niveau = args['niveau | local niveau = args['niveau'] or 'niveau ?' | ||
local item = mw.html.create('li') | local item = mw.html.create('li') | ||
:wikitext(competence .. ' : ' .. niveau) | :wikitext(competence .. ' : ' .. niveau) | ||
Ligne 89 : | Ligne 101 : | ||
for i = 1, n_liste do | for i = 1, n_liste do | ||
local aptitude = args['aptitude' .. i] | local aptitude = args['aptitude' .. i] | ||
if aptitude | if not aptitude then | ||
break | |||
end | |||
local item = mw.html.create('li') | local item = mw.html.create('li') | ||
Ligne 99 : | Ligne 113 : | ||
end | end | ||
local cout = args['coût'] | local cout = args['coût'] | ||
if cout | if cout then | ||
local item = mw.html.create('li') | local item = mw.html.create('li') | ||
:wikitext('Coût : ' .. cout) | :wikitext('Coût : ' .. cout) | ||
Ligne 108 : | Ligne 122 : | ||
local res = mw.html.create('div') | local res = mw.html.create('div') | ||
:addClass('artisanat- | :addClass('artisanat-colonne') | ||
:tag('div') | :tag('div') | ||
:addClass('artisanat- | :addClass('artisanat-colonne-titre') | ||
:wikitext('Prérequis | :wikitext('Prérequis') | ||
:done() | :done() | ||
:tag('ul') | :tag('div') | ||
:addClass('artisanat-colonne-liste') | |||
:tag('ul') | |||
:node(items) | |||
:allDone() | :allDone() | ||
Ligne 122 : | Ligne 138 : | ||
local function creerSeparateur(nomIcone, infobulle) | local function creerSeparateur(nomIcone, infobulle) | ||
local res = mw.html.create('span') | local res = mw.html.create('span') | ||
:addClass('artisanat-separateur') | |||
:wikitext('[[Fichier:' .. icone[nomIcone] .. '|' .. infobulle .. '|15px|link=|alt=' .. infobulle .. ']]') | :wikitext('[[Fichier:' .. icone[nomIcone] .. '|' .. infobulle .. '|15px|link=|alt=' .. infobulle .. ']]') | ||
:allDone() | :allDone() | ||
Ligne 133 : | Ligne 150 : | ||
res | res | ||
:node(creerListePrerequis(args)) | |||
:node(creerSeparateur('portée', 'nécessite')) | |||
:node(creerListeSimple(args, parametres.materiau, 'Matériaux')) | :node(creerListeSimple(args, parametres.materiau, 'Matériaux')) | ||
:node(creerSeparateur('niveau', 'produit')) | :node(creerSeparateur('niveau', 'produit')) | ||
:node(creerListeSimple(args, parametres.produit, 'Produits')) | :node(creerListeSimple(args, parametres.produit, 'Produits')) |
Dernière version du 6 mars 2023 à 20:46
Ce module génère le modèle {{Tableau d'artisanat}}.
local p = {}
local n_liste = 15 -- Nombre maximal d'éléments de chaque liste.
-- à supprimer lorsque le module Icone sera OK
local icone = {
['portée'] = 'Icon range.png',
['niveau'] = 'Icon level.png'
}
--[[
Liste des paramètres acceptés pour les matériaux et les produits
Compatible français-anglais
]]
local parametres = {
materiau = {
nom = 'matériau',
qte = 'matériau#'
},
produit = {
nom = 'produit',
qte = 'produit#'
}
}
local function creerListeSimple(args, param, titre)
local items = ''
for i = 1, n_liste do
local materiau = args[param.nom .. i]
if not materiau then
break
end
local quantite = args[param.qte .. i] or '1'
local item = mw.html.create('li')
:wikitext(materiau .. ' × ' .. quantite)
:done()
items = items .. tostring(item)
end
local res = mw.html.create('div')
:addClass('artisanat-colonne')
:tag('div')
:addClass('artisanat-colonne-titre')
:wikitext(titre)
:done()
:tag('div')
:addClass('artisanat-colonne-liste')
:tag('ul')
:node(items)
:allDone()
return tostring(res)
end
local function creerListePrerequis(args)
local items = ''
local atelier = args['poste de travail']
if atelier then
local item = mw.html.create('li')
:wikitext(atelier)
:done()
items = items .. tostring(item)
end
local saison = args['saison']
if saison then
local item = mw.html.create('li')
:wikitext(saison)
:done()
items = items .. tostring(item)
end
local recette = args['recette']
if recette then
local item = mw.html.create('li')
:wikitext(recette)
:done()
items = items .. tostring(item)
end
local plan = args['plan']
if plan then
local item = mw.html.create('li')
:wikitext(plan)
:done()
items = items .. tostring(item)
end
local competence = args['compétence']
if competence then
local niveau = args['niveau'] or 'niveau ?'
local item = mw.html.create('li')
:wikitext(competence .. ' : ' .. niveau)
:done()
items = items .. tostring(item)
end
for i = 1, n_liste do
local aptitude = args['aptitude' .. i]
if not aptitude then
break
end
local item = mw.html.create('li')
:wikitext(aptitude)
:done()
items = items .. tostring(item)
end
local cout = args['coût']
if cout then
local item = mw.html.create('li')
:wikitext('Coût : ' .. cout)
:done()
items = items .. tostring(item)
end
local res = mw.html.create('div')
:addClass('artisanat-colonne')
:tag('div')
:addClass('artisanat-colonne-titre')
:wikitext('Prérequis')
:done()
:tag('div')
:addClass('artisanat-colonne-liste')
:tag('ul')
:node(items)
:allDone()
return tostring(res)
end
local function creerSeparateur(nomIcone, infobulle)
local res = mw.html.create('span')
:addClass('artisanat-separateur')
:wikitext('[[Fichier:' .. icone[nomIcone] .. '|' .. infobulle .. '|15px|link=|alt=' .. infobulle .. ']]')
:allDone()
return tostring(res)
end
function p._artisanat(args)
local res = mw.html.create('div')
:addClass('artisanat')
res
:node(creerListePrerequis(args))
:node(creerSeparateur('portée', 'nécessite'))
:node(creerListeSimple(args, parametres.materiau, 'Matériaux'))
:node(creerSeparateur('niveau', 'produit'))
:node(creerListeSimple(args, parametres.produit, 'Produits'))
return res
end
function p.artisanat(frame)
local args = {}
local argsParent = frame:getParent().args
-- Paramètres vides interprétés par Lua.
for cle, val in pairs(argsParent) do
if val ~= '' then
args[cle] = val
end
end
return p._artisanat(args)
end
return p