This page needs translation into English. This page is written in a language other than English. If it is intended for readers from the community of that language, it should be contributed to the Wikipedia in that language. See the list of Wikipedias. |
This module's documentation is missing, inadequate, or does not accurately describe its functionality or the parameters in its code. Please help to expand and improve it. (August 2024) |
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 = "[[Template:Croatian population data graph/Sources|Croatian Bureau of Statistics publications]]"
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("population") : done()
local tr2 = mw.html.create( 'tr' )
tr2 : tag("td") : done()
if (targs["popisi"]=="HRV") or (margs["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 = "Population trends " .. prva .."–"..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") or (margs["popisi"]=="HRV") then
izvori = izvori_hr
end
izvori = targs["izvor"] or izvori
local nte = mw.html.create( 'div' ) : addClass("kbs_napomena")
if napomena ~="" then
nte : wikitext("'''Note''': " .. napomena .. " ")
end
if izvori ~="" then
nte : wikitext("'''Sources''': " .. izvori)
end
local nap_izv = mw.html.create( 'div' )
nap_izv : addClass("kbs_napomena_nonscrollable")
: node(nte)
local vte_div = mw.html.create( 'div' ) : addClass("kbs_vte")
local vte = frame : expandTemplate{title = 'vte',
args = { 'Croatian population data graph' } }
vte_div : node(vte)
nap_izv : node(vte_div)
local sve = mw.html.create() : node(tbl_ttl) : node(nap_izv)
return sve
end
return p