Info Istruzioni per l'uso
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Grafico epidemia/man (modifica · cronologia)
Sandbox: Modulo:Grafico epidemia/sandbox (modifica · cronologia) · Sottopagine: lista · Test: Modulo:Grafico epidemia/test (modifica · cronologia · esegui)

Questo modulo serve la creazione di grafici a barre inerenti a epidemie. Il modulo è stato costruito per importare dati scritti a modello statunitense, quindi con il "." come indicatore decimale e la "," come indicatore delle migliaia, oltre che con le date in formato "yyyy-mm-dd". Se inseriti in questa forma, il modulo li convertirà come nella notazione italiana.


local p = {}

function p.buildBars( frame )
	local barwidth = frame.args.barwidth
	local data = frame.args.data
	local divisor = frame.args.divisor
	local numwidth = frame.args.numwidth
	local collapsible = frame.args.collapsible

	local lines = mw.text.split( data, '\n' )
	local i = 1

	if divisor == '' then
		local total1, total2 = 0, 0

		for parameter in mw.text.gsplit( lines[#lines], ';' ) do
			if not string.find( parameter, '^ *%a' ) then
				if i == 7 then
					total1 = tonumber( (string.gsub( parameter, '%D', '' )) )
					if not total1 then
						total1 = 0
					end
				elseif i == 9 then
					total2 = tonumber( (string.gsub( parameter, '%D', '' )) )
					if not total2 then
						total2 = 0
					end
					break
				end
				i = i + 1
			end
		end
		divisor = math.max( total1, total2 ) / ( 0.95 * barwidth )
	end
	local bars = {}
	local args

	for k, line in pairs( lines ) do
		args, i = {}, 1

		for parameter in mw.text.gsplit( line, ';' ) do
			if string.find( parameter, '^ *%a' ) then
				parameter = mw.text.split( parameter, '=' )
				args[parameter[1]] = parameter[2]
			else
				args[i] = parameter
				i = i + 1
			end
		end
		args['divisore'] = divisor
		args['numwidth'] = numwidth
		args['collapsible'] = collapsible
		bars[#bars+1] = frame:expandTemplate{ title = 'Grafico epidemia/Riga', args = args }
	end
	return table.concat(bars)
end
return p