Moduuli:Tietolaatikko/tietoriviwikidata

Wikipediasta
Siirry navigaatioon Siirry hakuun



local p = {}

local function create_col(value, class, style, colspan, bold )
	local col;

	local col=mw.html.create('td')
		:addClass(class)
		:cssText(style);

	if colspan and colspan>1 then
		col:attr("colspan", colspan)
	end

	if bold then
		col:tag('b')
			:wikitext(value)
	else
		col:wikitext(value)
	end
	
	return col:allDone()
end

-- Render row to html with different no_col1 and no_tr combinations
-- no_col1 = 1  # Do not print first col
-- no_tr = 1 # Do not wrap output to <tr>

local function render_row(col1, col2, show_col1, show_col2, no_tr)
	local ret=""
	if no_tr then
		if show_col1 then
			ret = ret .. tostring(col1);
		end
		if show_col2 then
			ret = ret .. tostring(col2);
		end
	else	
		local tr = mw.html.create('tr')
		if show_col1 then
			tr:node(col1)
		end
		if show_col2 then
			tr:node(col2)
		end
		tr:allDone()
		ret = tostring(tr)
	end
	
	return ret
end

function p.tietorivi(frame) 
	local class1 = frame.args.class1 or frame.args.class or "";
	local class2 = frame.args.class2 or frame.args.class or "";
	
	local colspan1 = tonumber(frame.args.colspan1 or frame.args.colspan or "");
	local colspan2 = tonumber(frame.args.colspan2 or frame.args.colspan or "");	

	local defaultstyle="vertical-align: top;"	
	local style1 = frame.args.style1 or frame.args.style or defaultstyle;
	local style2 = frame.args.style2 or frame.args.style or defaultstyle;	

	local title_value = frame.args.nimi or "";
	local infobox_input_value = frame.args["sisältö"] or "";
	local infobox_auto_value = frame.args["haettusisältö"] or "";
	local infobox_help_value = frame.args["esimerkki"] or "";
	local infobox_testit_value = frame.args["testit"] or "";	
	local output_value = "";
	
	-- Valitaan näytettävä teksti
	if infobox_input_value~="" then
		output_value = infobox_input_value;
	elseif infobox_auto_value~="" then
		output_value = infobox_auto_value;
	elseif infobox_help_value~="" then
		output_value = infobox_help_value;
	end
	
	if infobox_testit_value ~= "" then
		output_value = output_value .. infobox_testit_value;
	end
		
	local no_b = (frame.args["ei-b"] or "") == "1";
	local no_tr = (frame.args["ei-tr"] or "") == "1";
	
	local skip_test = frame.args["tulostussääntö"] or "";
	
	-- Tarkistetaan ensin tapaukset jolloin ei tulosteta mitään
	if skip_test=="" then
		return "";
	elseif infobox_input_value == "-" then
		return "";
	elseif output_value == "" then
		return "";
	end

	local col1=create_col(title_value, class1, style1, colspan1, (no_b==false) );
	local col2=create_col(output_value, class2, style2, colspan2, false );
	
	ret = render_row(col1, col2, (colspan1~=0), (colspan2~=0), no_tr);
	
	return ret;
end

return p;