Modulo:RisGenerico

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
local p = {}
local getArgs = require('Modulo:Arguments').getArgs
local tabgpM = mw.loadData('Modulo:RisMoto/GP')
local tabgpS = mw.loadData('Modulo:RisSBK/GP')

local tavolozza = {
["1"] = "FFFFBF",
["2"] = "DFDFDF",
["3"] = "FFDF9F",
punti = "DFFFDF",
nopunti = "CFCFFF",
NC = "EFCFFF",
Rit = "EFCFFF",
SQ = "000000; color:white; font-size:81%",
NP = "FFCFCF",
NQ = "FFCFCF",
NE = "F0FFFF",
AN = "F0FFFF",
NV = "F0FFFF",
["0"] = ""
}

--La funzione determina il colore delle celle contenenti i risultati, dati il numero di piloti in zona punti come primo argomento e il risultato come secondo argomento.
function p.colori(frame)
	local args = getArgs(frame)
	local zonapunti = tonumber(args[1])
	local ris = args[2]

	if not ris or string.lower(ris) == "inf" then
		ris = 0
	end

	ris = string.gsub(ris,"'","")

	if tonumber(ris) and tonumber(ris) > 3 then
   		if tonumber(ris) <= zonapunti then
   			ris = "punti"
   		else ris = "nopunti"
   		end
	end

	local colore = tavolozza[ris]

	colore = colore or ""

	return "style=\"padding-left:0px;padding-right:0px;background-color:#" .. colore .. "\""
end

--La funzione applica il grassetto e/o il corsivo ai risultati a seconda del valore dei parametri Gn, dati il risultato come primo argomento e il valore di Gn come secondo argomento.
function p.ppgv(frame)
	local args = getArgs(frame)
	local ris = args[1]
	local apici = args[2]

	local switch = {["PG"]="'''''",["PP"]="'''",["GV"]="''"}

	if ris then
		if switch[apici] then
			ris = switch[apici] .. ris .. switch[apici]
		end
	else ris = ""
	end

	return ris

end

--La funzione restituisce una serie di celle a seconda dei risultati che sono stati passati come parametri all'interno dei template. Il numero di celle dipende dal parametro Colonne e la loro formattazione viene determinata elaborando i parametri tramite le funzioni colori e ppgv. L'ampiezza della zona punti è fissata a 15 piloti.
function p.celleGen(frame)
	local argstmp = mw.getCurrentFrame():getParent().args
	local args = getArgs(frame)
	local str = ""
	local prove = tonumber(argstmp["Colonne"]) or 1
	local zonapunti = 15

	local ris = ""
	for i=1,prove do
		paramR = i .. "R"
		paramG = "G" .. i
		paramN = "N" .. i
		ris = p.ppgv({argstmp[paramR],argstmp[paramG]})
		local col = p.colori({zonapunti,argstmp[paramR]})
		local note = argstmp[paramN]
		ris = ris or ""
		note = note or ""
		if i~=1 then
			str = str .. '||width=3% '
		else str = str .. 'width=3% '
		end
		str = str .. col .. "|&#32;" .. ris .. note
	end

	return str

end

--La funzione restituisce una serie di celle contenenti i Gran Premi effettuati.

function p.sequenzaGen(frame)

	local argstmp = mw.getCurrentFrame():getParent().args
	local anno = argstmp["Anno"] or ""
	local str = ""
	local col = 1

	for i,g in ipairs(argstmp) do
		col = '||colspan=' .. (string.match(g,"_(%d)") or 1)
		gara = string.gsub(g,"_%d","")
		if string.match(gara,"[MS]_") then
			str = str .. col .. ' width=3%|' .. p.bandGen({gara,anno})
		elseif string.match(gara,"width") then
			str = str .. '||' .. gara
		else
			str = str .. col .. ' width=3%|' .. gara
		end
	end

	return str

end

--La funzione genera la bandierina con link ai Gran Premi del motomondiale e del mondiale Superbike, dati il codice del GP come primo argomento e l'anno come secondo argomento facoltativo.
function p.bandGen(frame)
	local args = getArgs(frame)
	local gp = args[1]
	local anno = args[2]
	local str = ""

	if string.match(gp,"M_") then
		dati = tabgpM[string.gsub(gp,"M_","")]
	else
		dati = tabgpS[string.gsub(gp,"S_","")]
	end

	dati = dati or tabgpM["NC"]

	if not anno then
		anno = ""
	else anno = " " .. anno
	end

	str = str .. '[[File:' .. dati["file"] .. '|18px|border|link=' .. dati["nome"] .. anno .. ']]'

	return str

end

--La funzione aggiunge la legenda in fondo alle tabelle dei risultati.
function p.legenda(frame)
	local args = getArgs(frame)
	local dim = args["dim"] or 85
	if args["LEG"] == "1" then
		return "{| class=\"wikitable\" style=\"text-align:center; width: 100%; font-size:" .. dim .. "%; margin-top: 0em; margin-bottom: 0em; padding:0\"\n|-\n|rowspan=2 width=5%|'''Legenda'''||style=\"background-color:#ffffbf;width:15%\"|1º posto||style=\"background-color:#dfdfdf;width:15%\"|2º posto||style=\"background-color:#ffdf9f;width:15%\"|3º posto||style=\"background-color:#dfffdf;width:15%\"|A punti||style=\"background-color:#cfcfff;width:15%\"|Senza punti||rowspan=2 style=\"background-color:#ffffff;width:20%\"|'''Grassetto''' – Pole position<br/>''Corsivo'' – Giro più veloce\n|-\n|style=\"background-color:#f0ffff\"|Gara non valida||style=\"background-color:#FFCFCF\"|Non qual./Non part.||style=\"background-color:#efcfff\"|Ritirato/Non class||style=\"background-color:#000000; color:white\"|Squalificato||style=\"background-color:#FAFAFA\"|'-' Dato non disp.\n|}"
	end

end

return p