Este módulo não apresenta nenhuma documentação. Por favor, documente-o caso o saiba usar ou tenha conhecimentos para tal. |
local p = {}
function p.linhadotempo(frame)
timeline_header = [=[
ImageSize = width:800 height:auto barincrement:21
PlotArea = right:20 left:20 top:5 bottom:60
Legend = position:bottom orientation:horizontal
Colors =
id:bg value:rgb(0.9,0.9,1)
id:major value:black
id:minor value:rgb(0.8,0.8,0.8)
id:text value:black
id:header value:rgb(0.6,0.6,0.9)
id:htext value:white
id:atual value:rgb(0.5,0.9,0.5) legend:Atuais_titulares
id:antigo value:rgb(0.9,0.8,0.5) legend:Antigos_titulares
BackgroundColors = canvas:bg
TimeAxis = orientation:horizontal
DateFormat = dd/mm/yyyy
]=]
period = [=[
Period = from:%s till:%s
]=]
scalemajor = [=[
ScaleMajor = gridcolor:major unit:year increment:1 start:%s
]=]
scaleminor = [=[
ScaleMinor = gridcolor:minor unit:month increment:1 start:%s
]=]
bardata = [=[
BarData =
]=]
bardata_base = [=[
Bar:H%.4d
Barset:S%.4d
]=]
plotdata = [=[
PlotData =
width:15 textcolor:text
]=]
plotdata_base = [=[
bar:H%.4d color:header textcolor:htext width:20 shift:(-95,-5) fontsize:m from:%s till:end text:"%s%.4d"
]=]
barset_base = [=[
barset:S%.4d
shift:(5,-5) anchor:from fontsize:m
]=]
barsetline_base_old = [=[
color:antigo from:%s till:%s text:"[[User:%s|%s]]"
]=]
barsetline_base_new = [=[
color:atual from:%s till:%s text:"[[User:%s|%s]]"
]=]
barset_sep = [=[
barset:break
]=]
data_inicio, ano_inicio = extraidata(frame.args.datainicio)
data_fim, ano_fim = extraidata(frame.args.datafim)
prefixo_barra = frame.args.prefixo_barra or ""
if prefixo_barra ~= "" then
prefixo_barra = prefixo_barra .. " "
end
local barsets = {}
local pos = 1
while frame.args[pos] do
usu_data_ini, usu_ano_ini, usu_data_fim, usu_ano_fim, usu, active = extraimandato(frame.args[pos])
if usu then
if active then
barsetline_base = barsetline_base_new
else
barsetline_base = barsetline_base_old
end
barsets[usu_ano_ini] = (barsets[usu_ano_ini] or "") ..
string.format(barsetline_base,usu_data_ini,usu_data_fim,usu,usu)
end
pos = pos + 1
end
local bardata_content = bardata
local plotdata_content = plotdata
local barset_content = ""
for ano=ano_inicio,ano_fim do
bardata_content = bardata_content .. string.format(bardata_base,ano,ano)
plotdata_content = plotdata_content .. string.format(plotdata_base,ano,data_inicio,prefixo_barra,ano)
barset_content = barset_content .. string.format(barset_base,ano)
barset_content = barset_content .. ( barsets[ano] or "" )
barset_content = barset_content .. barset_sep
end
local param = ""
param = param .. timeline_header
param = param .. string.format(period,data_inicio,data_fim)
param = param .. string.format(scalemajor,data_inicio)
param = param .. string.format(scaleminor,data_inicio)
param = param .. bardata_content
param = param .. plotdata_content
param = param .. barset_content
return frame:callParserFunction( '#tag:timeline', param )
end
function extraimandato(csvline)
_, _, usu_ini, usu_fim, usu = string.find(csvline,"^%s*([^;]-)%s*;%s*([^;]-)%s*;%s*([^;]-)%s*$")
if usu_ini then
usu_data_ini, usu_ano_ini = extraidata(usu_ini)
end
if usu_fim then
if ( usu_fim == "today" ) or ( usu_fim == "end" ) then
active = true
else
active = false
end
usu_data_fim, usu_ano_fim = extraidata(usu_fim)
end
if usu then
-- remove espacos do final
usu = string.gsub(usu,"%s*$","")
end
return usu_data_ini, usu_ano_ini, usu_data_fim, usu_ano_fim, usu, active
end
function extraidata(data)
if data == "today" then
-- data atual
data = os.date("%d/%m/%Y")
elseif data == "end" then
-- data final do gráfico
data = data_fim
end
_, _, dia, mes, ano = string.find(data,"(%d+)/(%d+)/(%d+)")
datacompleta = string.format('%.2d/%.2d/%.4d',dia,mes,ano)
return datacompleta, tonumber(ano)
end
return p