Moduuli:Tuotantoryhmä

Wikipediasta
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>&nbsp;</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( '&hellip;' )
			
		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