Modul:Kretanje broja stanovnika
Izgled
local p = {}
-- ako je u predlošku popisi=HRV prikazat će sve poznate popise od 1857. do 2021.
-- bez obzira na to postoji li u članku podatak
-- bez tog parametra u predlošku, prikazat će samo godine upisane u članku
local godine_hr = {1857, 1869, 1880, 1890, 1900, 1910, 1921, 1931, 1948, 1953,
1961, 1971, 1981, 1991, 2001, 2011, 2021, }
local izvori_hr = "[[Predložak:Kretanje broja stanovnika/Izvori|Publikacije Državnog zavoda za statistiku]] Republike Hrvatske"
local max_visina = 8 -- 8 em; podesiti i visinu ćelije u css-u predloška
function p.dijagram(frame)
local podatci = {}
local targs = frame:getParent().args --template arguments in template call
--local margs = frame.args --module arguments in #invoke
--prođi kroz sve parametre; većinom su to parametri oblika pGGGG ili parovi aN/pN
for k, v in pairs(targs) do
local g = tonumber(string.match(k, "^p(%d%d%d%d)$")) -- parametri oblika p2021
if g then
local p = tonumber(v)
--mw.log(g,p)
if p then podatci[g] = p end
end
local n = string.match(k, "^a(%d%d?)$") -- do 99 parova parametara godina/populacija: a1/p1 … a99/p99
if n then
local g = tonumber(v)
local p = tonumber(targs["p"..n])
--mw.log(g,p)
if g and p then
podatci[g] = p
end
end
end
--godine prisutne u predlošku; trebamo ih u tablici radi sortiranja
local godine = {}
local podatci_max = 0
for k, v in pairs(podatci) do
table.insert(godine, k)
if podatci[k]>podatci_max then podatci_max=podatci[k] end
end
table.sort(godine)
--html tablica u kojoj će svaka ćelija sadržavati jedan stupac (div) stupčastog dijagrama
--ovdje stvaramo ćelije u dvama retcima
local tr1 = mw.html.create( 'tr' )
tr1 : tag("td") : addClass("kbs_ordinata")
: tag("span") : addClass("kbs_ordinata") : wikitext("broj stanovnika") : done()
local tr2 = mw.html.create( 'tr' )
tr2 : tag("td") : done()
if targs["popisi"]=="HRV" then
prikazi = godine_hr
else
prikazi = godine
end
local prva, zadnja = Nil, Nil
for _, g in ipairs(prikazi) do
if godine[1]<=g and g<=godine[#godine] then --ne prikazuj lijevo i desno od jedinih poznatih, ali prikaži između
prva = prva or g
zadnja = g
local podatak = podatci[g] or 0
local biljeg = (podatak>0 and podatak) or "" -- do not show 0 or Nil
tr1 : tag("td") : addClass("kbs_za_stupce")
: tag("div") : addClass("kbs_podatci") : wikitext(biljeg) : done()
: tag("div") : addClass("kbs_stupci")
: cssText("height:"..0.01*math.floor(100*podatak*max_visina/podatci_max).."em;") : done()
tr2 : tag("td") : addClass("kbs_godine") : wikitext(g..".") : done()
end
end
-- naslov iznad tablice s dijagramom
-- u predlošku: Naselje X ili Općina Y ili Grad Z
local podatci_za = targs["područje"] and (targs["područje"] ~= "") and ("'''" .. targs["područje"] .. "''': ")
or ""
local kbs = "Kretanje broja stanovnika od " .. prva ..". do "..zadnja.."."
local naslov = podatci_za .. (targs["naslov"] and (targs["naslov"] ~= "") and targs["naslov"] or kbs)
-- tablica za stupčasti dijagram
local tbl = mw.html.create( 'table' )
tbl : addClass("kbs_tablica")
: node(tr1)
: node(tr2)
local ttl = mw.html.create( 'div' )
ttl : addClass("kbs_naslov") : wikitext(naslov)
local tbl_ttl = mw.html.create( 'div' )
tbl_ttl : addClass("kbs_tablica_scrollable")
: tag("div") : addClass("kbs_tablica")
: node(ttl)
: node(tbl)
: done()
-- Napomena:… i Izvori:… ispod dijagrama
local napomena = targs["napomena"] or ""
local izvori = ""
if targs["popisi"]=="HRV" then
izvori = izvori_hr
end
izvori = targs["izvori"] or izvori
local nte = mw.html.create( 'div' ) : addClass("kbs_napomena")
if napomena ~="" then
nte : wikitext("'''Napomena''': " .. napomena .. " ")
end
if izvori ~="" then
nte : wikitext("'''Izvori''': " .. izvori)
end
local nap_izv = mw.html.create( 'div' )
nap_izv : addClass("kbs_napomena_nonscrollable")
: node(nte)
local sve = mw.html.create() : node(tbl_ttl) : node(nap_izv)
return sve
end
return p