Modulo:Grafico epidemia

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 = 'Medical cases chart/Row', args = args }
end
return table.concat(bars)
end
return p