Moduł:Timecharts
Wygląd
Użycie[edytuj kod]
Stworzone do tłumaczenia składni znanej z {{Populacja w latach}} na zwykły {{Wykres demograficzny}}.
Przykład[edytuj kod]
{{#invoke:Timecharts|populacjaDemogorgon
|
{"rok":1806,"populacja":6378},
{"rok":1900,"populacja":11127},
{"rok":1970,"populacja":23234},
{"rok":2000,"populacja":27931},
{"rok":2010,"populacja":30228}
|width=320
|height=200
|title=Populacja w latach 1806-2010
}}
Populacja w latach 1806-2010
Błędy[edytuj kod]
Błędy należy zgłaszać na stronie Wikipedia:Kawiarenka/Kwestie techniczne.
Zobacz też[edytuj kod]
Powyższy opis jest dołączany ze strony Moduł:Timecharts/opis. (edytuj | historia)
Zobacz podstrony tego modułu. |
local p = {}
--[[
Timeline helper module.
https://pl.wikipedia.org/w/index.php?title=Modu%C5%82:Timecharts&action=edit
See also:
https://pl.wikipedia.org/wiki/Szablon:Populacja_w_latach
https://pl.wikipedia.org/wiki/Szablon:Wykres_demograficzny
]]
-- Author: [[User:Nux|Maciej Nux]] (pl.wikipedia.org).
--[[
Przejściówka populacji do Wykres_demograficzny.
]]
function p.populacjaDemogorgon(frame)
-- semi-JSON chart data
local popu_data = frame.args[1]
if popu_data then
-- usuń ostatni przecinek obecny w niektórych wywołaniach
local fixed, c = mw.ustring.gsub(popu_data, ",%s*$", "")
if c > 0 then
popu_data = fixed
end
end
local json_data = "[" .. popu_data .. "]"
-- options
local options = {
-- width in [px]
width = 320,
-- h
height = 200,
-- chart Y-title
title = "",
}
local args = { "width", "height", "title" }
for _, key in ipairs(args) do
if frame.args[key] then
options[key] = trim(frame.args[key])
end
end
local title, args = p.renderBars(json_data, options)
result = frame:expandTemplate{ title = title, args = args }
return trim(result)
end
--[[
Render piechart.
@param json_data JSON string with pie data.
]]
function p.renderBars(json_data, options)
local graph_data = mw.text.jsonDecode(json_data)
local title = 'Wykres demograficzny'
local args = {}
args["tytuł"] = options.title
args["szerokość"] = options.width
args["wysokość"] = options.height
for i, entry in ipairs(graph_data) do
args["rok" .. i] = entry["rok"]
args["pop" .. i] = entry["populacja"]
end
return title, args
end
-- round to int
function round(number)
return math.floor(number + 0.5)
end
-- Language sensitive float.
function formatNum(value)
local lang = mw.language.getContentLanguage()
-- doesn't do precision :(
-- local v = lang:formatNum(value)
local v = string.format("%.1f", value)
if (lang:getCode() == 'pl') then
v = v:gsub("%.", ",")
end
return v
end
--[[
trim string
note:
`(s:gsub(...))` returns only a string
`s:gsub(...)` returns a string and a number
]]
function trim(s)
return (s:gsub("^%s+", ""):gsub("%s+$", ""))
end
return p