Differenze tra le versioni di "Modulo:Party"

Code refactoring, aggiunta scelta automatica del colore dell'espandi/comprimi
m (Eheh ti pareva se potevo fare giusto)
(Code refactoring, aggiunta scelta automatica del colore dell'espandi/comprimi)
colori memorizzati sul wiki: in questo caso basta
inserire "parametro=nomecolore variante", es:
{{#invoke: squadraparty | ... | color=erba dark}}
{{#invoke: squadraparty | ... | headcolor2=elettro}}
 
--]]
 
local w = require('Modulo:Wikilib')
local libwdata = requiremw.loadData('Modulo:SquadraWikilib/libdata')
local txtlib = require('Modulo:Wikilib/stringssquadra')
local tabtxt = require('Modulo:Wikilib/tablesstrings') -- luacheck: no unused
local rtab = require('Modulo:RoundyWikilib/tables') -- luacheck: no unused
local gbl = require('Modulo:GamesColorLinks')
local ccss = mw.loadDatarequire('Modulo:Colore/dataCss')
 
-- Stringa per la trainerclass, non sempre presente
local classString = [=[<div style="line-height: 10px" class="text-small">'''[[${classlink}|<span style="color:#000">${class}</span>]]'''</div>]=]
 
--[[
--]===]
 
-- Returns true iff the text should be white on the passed color variant
-- Squadra/Single
local needWhiteText = function(color)
 
local back2name, back2var = lib.getColor(color)
-- Stringa per la trainerclass, non sempre presente
return back2var == 'dark'
local classString = [=[<div style="line-height: 10px" class="text-small">'''[[${classlink}|<span style="color:#000">${class}</span>]]'''</div>]=]
or (back2var == 'normale' and table.search(wdata.whitetext, back2name))
 
end
 
s.single = function(frame)
local p = w.trimAll(mw.clone(frame.args))
 
-- Colori in esadecimale, con valori di default dapprima "sconosciuto" e poi quelli calcolati prima
 
-- Creates the table of colors common to both single and tag
local calcBaseColors = function(p)
local colors = lib.gethex{
color = p.color or c.'sconosciuto.normale',
bordercolor = p.bordercolor or c.'sconosciuto.dark',
headcolor = p.headcolor or c.'sconosciuto.light}'
}
colors = lib.gethex({
back1 = p.back1 or colors.headcolor,
back2 = p.back2 or colors.bordercolor,
head1 = p.head1 or colors.color,
head2 = p.head2 or p.back1 or colors.headcolor,
sprcolor1 = p.sprcolor1 or p.head1 or colors.color,
sprcolor2 = p.sprcolor2 or p.back1 or colors.headcolor,
}, colors)
 
return colors
local interpData = table.merge(colors, {
end
 
-- Create the interpData common to both single and party
local calcBaseInterpData = function(p, colors, collapsiblebackground)
local collapsiblelighttext
-- Can't use and/or syntax because the value may be false
if p.expandiblelight then
collapsiblelighttext = p.expandiblelight:lower() == 'yes'
else
collapsiblelighttext = needWhiteText(collapsiblebackground)
end
 
local interpData = {
r80 = r.roundyLua('80px'),
collapsiblelighttext = (p.expandiblelight and p.expandiblelight:lower()) == 'yes' and 'light-text' or '',
sprite = p.sprite,
size = p.size and '|' .. p.size or '',
class = p.class and string.interp(classString, {class = p.class,
classlink = p.classlink or lib.trainerClass[p.name] or p.class .. ' (classe allenatore)'}) or '',
name = p.name or 'Oak',
location = p.location or 'Brockolandia',
locationname = p.locationname or p.location or 'Brockolandia',
game = gbl[p.game]{args={'000'}} or p.game,
prize = p.prize or '[[File:PokémonDollar.png|link=PokémonDollari DollarPokémon]]0',
balls = lib.balls(tonumber(p.pokemon or p.pokemon1) or 0),
})
 
collapsiblelighttext = collapsiblelighttext and 'light-text' or '',
return string.interp([=[{| class="mw-collapsible mw-collapsed ${collapsiblelighttext} text-center pull-left roundy" style="padding: 0.5ex; background: linear-gradient(to right, #${back1}, #${back2});"
 
mainBackground = css.horizGradLua{colors.back1, colors.back2},
spriteBackground = css.horizGradLua{colors.sprcolor1, colors.sprcolor2},
detailsBackground = css.horizGradLua{colors.head1, colors.head2},
}
interpData.ballsBackground = interpData.detailsBackground
 
return interpData
end
 
-- Squadra/Single
 
 
s.single = function(frame)
local p = w.trimAll(mw.clone(frame.args))
 
local colors = calcBaseColors(p)
 
local interpData = calcBaseInterpData(p, colors, p.back2 or p.bordercolor or '')
interpData.pkmnBackground = interpData.mainBackground
 
return string.interp([=[{| class="mw-collapsible mw-collapsed ${collapsiblelighttext} text-center pull-left roundy" style="padding: 0.5ex; ${mainBackground}"
|-
| <div class="flex flex-row flex-nowrap flex-items-center flex-main-center" style="padding: 0 2.5em;">
<div>
<div class="roundy-full" style="padding: 0.3ex; ${r80spriteBackground} background: linear-gradient(to right, #${sprcolor1}, #${sprcolor2});">[[File:${sprite}${size}]]</div>
<div class="text-small" style="margin-top: 0.5ex; line-height: 10px">Ricompensa:</div>
<div>'''${prize}'''</div>
</div>
<div>
<div class="roundy text-center" style="margin-left: 1ex; width: 18em; padding: 0.2ex; background: linear-gradient(to right, #${head1detailsBackground}, #${head2});">
${class}
<div class="text-big">'''${name}'''</div>
<div class="text-small">${game}</div>
</div>
<div class="roundy pull-center" style="margin-top: 0.5ex; width: 14ex; padding: 0.2ex; backgroundline-height: linear-gradient(to right,10px; #${head1ballsBackground}, #${head2}); line-height: 10px">${balls}</div>
</div>
</div>
|-
| style="padding: 0;" | <div class="roundy flex flex-row flex-nowrap flex-items-center flex-main-space-around" style="background: linear-gradient(to right, #${back1pkmnBackground}, #${back2};">]=],
interpData)
end
local p = w.trimAll(mw.clone(frame.args))
 
local colors = calcBaseColors(p)
-- Colori in esadecimale, con valori di default "sconosciuto"
 
local colors = lib.gethex{
color = p.color or c.sconosciuto.normale,
bordercolor = p.bordercolor or c.sconosciuto.dark,
headcolor = p.headcolor or c.sconosciuto.light}
colors = lib.gethex({
back1 spr2color1 = p.back1spr2color1 or colors.headcolor'sconosciuto',
back2 spr2color2 = p.back2spr2color2 or colors.bordercolor'sconosciuto',
},
head1 = p.head1 or colors.color,
colors
head2 = p.head2 or p.back1 or colors.headcolor,
)
sprcolor1 = p.sprcolor1 or p.head1 or colors.color,
sprcolor2 = p.sprcolor2 or p.back1 or colors.headcolor,
spr2color1 = p.spr2color1 or c.sconosciuto.normale,
spr2color2 = p.spr2color2 or c.sconosciuto.normale,
}, colors)
 
local interpData = table.mergecalcBaseInterpData(p, colors, {p.back2 or p.bordercolor or '')
interpData.class2 = p.class2 and string.interp(classString, {class = p.class2,
r80 = r.roundyLua('80px'),
classlink = p.classlink2 or lib.trainerClass[p.name2] or p.class2 .. ' (classe allenatore)'}) or ''
collapsiblelighttext = (p.expandiblelight and p.expandiblelight:lower()) == 'yes' and 'light-text' or '',
interpData.name2 = p.name2 or 'Oak'
sprite = p.sprite,
interpData.sprite2 = p.sprite2
size = p.size and '|' .. p.size or '',
interpData.size2 = p.size2 and '|' .. p.size2 or ''
class = p.class and string.interp(classString, {class = p.class,
interpData.balls = lib.balls(tonumber(p.pokemon1) or 0, tonumber(p.pokemon2) or 0)
classlink = p.classlink or trainerClass[p.name] or p.class .. ' (classe allenatore)'}) or '',
interpData.sprite2Background = css.horizGradLua{colors.spr2color1, colors.spr2color2}
class2 = p.class2 and string.interp(classString, {class = p.class2,
interpData.pkmnBackground = css.vertGradLua{colors.sprcolor1, colors.spr2color2}
classlink = p.classlink2 or trainerClass[p.name2] or p.class2 .. ' (classe allenatore)'}) or '',
name = p.name or 'Oak',
name2 = p.name2 or 'Oak',
location = p.location or 'Brockolandia',
locationname = p.locationname or p.location or 'Brockolandia',
game = gbl[p.game]{args={'000'}} or p.game,
sprite2 = p.sprite2,
size2 = p.size2 and '|' .. p.size2 or '',
prize = p.prize or '[[File:PokémonDollar.png|link=Pokémon Dollar]]0',
balls = lib.balls(tonumber(p.pokemon1) or 0, tonumber(p.pokemon2) or 0),
})
 
return string.interp([=[{| class="mw-collapsible mw-collapsed ${collapsiblelighttext} text-center pull-left roundy" style="padding: 0.5ex; background: linear-gradient(to right, #${back1mainBackground}, #${back2});"
|-
| <div class="flex flex-row flex-nowrap flex-items-center flex-main-center" style="padding: 0 2.5em;">
<div>
<div class="roundy-full" style="padding: 0.3ex; ${r80spriteBackground} background: linear-gradient(to right, #${sprcolor1}, #${sprcolor2});">[[File:${sprite}${size}]]</div>
<div class="text-small" style="margin-top: 0.5ex; line-height: 10px">Ricompensa:</div>
<div>'''${prize}'''</div>
</div>
<div>
<div class="roundy text-center" style="margin-left: 1ex; width: 18em; padding: 0.2ex; background: linear-gradient(to right, #${head1detailsBackground}, #${head2});"><div class="flex flex-row flex-nowrap flex-items-center flex-main-center">
<div>
${class}
<div class="text-small">${game}</div>
</div>
<div class="roundy pull-center" style="margin-top: 0.5ex; width: 14ex; padding: 0.2ex; background: linear-gradient(to right, #${head1ballsBackground}, #${head2}); line-height: 10px">${balls}</div>
</div>
<div class="flex-items-self-start roundy-full" style="margin-left: 1ex; padding: 0.3ex; ${r80sprite2Background} background: linear-gradient(to right, #${spr2color1}, #${spr2color2});">[[File:${sprite2}]]</div>
</div>
|-
| <div class="roundy" style="background: linear-gradient(to bottom, #${sprcolor1}, #${spr2color2}); padding: 0.5ex; ${pkmnBackground}">
<div class="flex flex-row flex-nowrap flex-items-center flex-main-space-around">]=],
interpData)
s.Tag = s.tag
 
-- SquadraParty/Div
 
s.div = function(frame)