Moduuli:Tuotantoryhmä
Siirry navigaatioon
Siirry hakuun
Tämän moduulin ohjeistuksen voi tehdä sivulle Moduuli:Tuotantoryhmä/ohje
-- This module implements {{näyttelijä-rooli}} and {{tuotantoryhmä}}.
local p = {}
local function formatItem( data )
if data == nil then
return ''
end
if not type( data ) == 'string' then
return ''
end
return mw.ustring.format( ' %s ', data )
end
local function buildList( args )
-- Get the list items.
local listItems = args
if #listItems == 0 then
return ''
end
local mallinetyylit = mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Moduuli:Tuotantoryhmä/styles.css' }
}
local otsakecellstyle = 'color: var(--color-base,#202122); background-color: var(--background-color-neutral, #eee);'
local rootnode = mw.html.create()
local listataulu = rootnode:tag('table')
listataulu
:addClass('tuotantolista')
:attr('cellpadding', 0)
:cssText('border-collapse: collapse;')
-- otsikko koko luettelolle jos annettu
if (args['otsakekuvaus']) then
local otsake = listataulu:tag('tr')
otsake
:tag('th')
:addClass('tuotantolista-kuvaus')
:attr('colspan', 10)
:cssText(otsakecellstyle)
:wikitext(args['otsakekuvaus'])
end
-- jos otsikot == kyllä -> sarakkeiden otsikot
-- otsikkoteksti (näyttelijä/rooli vs. henkilö/tehtävä)
if (args['otsikot'] == 'kyllä') then
local a = 'Näyttelijä'
local b = 'Rooli'
if (args['henkilö']) then
a = args['henkilö']
end
if (args['tehtävä']) then
b = args['tehtävä']
end
local otsikkorivi = listataulu:tag('tr')
otsikkorivi
:addClass('tuotantolista-otsikko')
:cssText(otsakecellstyle)
:wikitext( '<th>' .. a .. '</th><th> </th><th>'.. b .. '</th>' )
end
-- TODO:? tarvitaanko? if args['leveys'] :css('max-width', args['leveys'])
local minimileveys = '10em'
if (args['minimileveys']) then
minimileveys = args['minimileveys']
end
local k = 1
local riviNro = 1
while (k < #listItems) do
local rivi = listataulu:tag('tr')
local soluA = rivi:tag('td')
soluA
:cssText('min-width: ' .. minimileveys .. ';')
:wikitext( formatItem( listItems[k] ) )
-- kolme pistettä omaan sarakkeeseen (selkeä erottimena)
local soluPisteet = rivi:tag('td')
soluPisteet
:cssText(colorstyle)
:wikitext( '…' )
local soluB = rivi:tag('td')
soluB
:cssText('min-width: ' .. minimileveys .. ';')
:wikitext( formatItem( listItems[k+1] ) )
k = k+2
riviNro = riviNro +1
end
return mallinetyylit .. tostring(rootnode)
end
function p.main( frame )
local origArgs
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
for k, v in pairs( frame.args ) do
origArgs = frame.args
break
end
else
origArgs = frame
end
local args = {}
for k, v in pairs( origArgs ) do
if type( k ) == 'number' or v ~= '' then
args[ k ] = v
end
end
return buildList( args )
end
return p