Módulo:Mandatos
Descrição[editar código-fonte]
Módulo criado para gerar mais facilmente a linha do tempo de mandatos. Essa página foi inicialmente criada para gerar o Gráfico de burocratas, mas pode ser utilizada para descrever outros mandatos.
Para produzir o gráfico, é utilizada a Extensão EasyTimeline.
Uso[editar código-fonte]
{{#invoke:Mandatos|linhadotempo | datainicio= | datafim= | prefixo_barra= ... }}
- datainicio
Data de início do gráfico, no formato dd/mm/yyyy.
- datafim
Data de término do gráfico, no formato dd/mm/yyyy. Para que o limite do gráfico se ajuste automaticamente com o passar do tempo, pode-se utilizar variáveis como "14/05/2024" (data atual) ou "31/12/2024" (fim do ano atual).
- prefixo_barra
A cada ano de sucessão, é gerada uma barra horizontal descrevendo o ano. Essa propriedade permite que um texto seja informado como prefixo a esse texto. Ex.: "Usuários eleitos em"
- demais parâmetros
Esse módulo espera uma lista de parâmetros não nomeados onde cada um informa um conjunto de três valores separados por ponto-e-vírgula. Os parâmetros são os seguites:
- data inicial do mandato, formato dd/mm/yyyy
- data final do mandato, formato dd/mm/yyyy
- nome do usuário
Para as datas, é possível informar ainda "today", para que a data se atualize automaticamente para a data atual; ou "end" para que a data seja sempre a última data do gráfico (mesma informada no parâmetro "datafim").
Exemplos[editar código-fonte]
A título de exemplo, o código a seguir:
{{#invoke:Mandatos|linhadotempo
| datainicio=01/01/2022
| datafim=31/12/{{CURRENTYEAR}}
| prefixo_barra=Usuários eleitos em
| 01/01/2022 ; 19/03/2022 ; Usuário 1
| 10/02/2022 ; 20/03/2024 ; Usuário 2
| 06/06/2023 ; 21/10/2023 ; Usuário 3
| 15/07/2023 ; end ; Usuário 4
| 20/01/2024 ; 22/03/2024 ; Usuário 5
| 27/02/2024 ; today ; Usuário 6
| 03/05/2024 ; 01/11/2024 ; Usuário 7
}}
produz o gráfico:
Ver também[editar código-fonte]
- Wikipédia:Gráfico de burocratas
- Extension:EasyTimeline no MediaWiki
A documentação acima é transcluída de Módulo:Mandatos/doc. (editar | histórico) Editores podem experimentar nas páginas de teste (criar | espelhar) e de exemplos para testes (criar) deste módulo. Subpáginas deste módulo. |
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