Modul:Popis stanovništva
Kategorije koje dodaje ovaj modul popisane su na:
- Popis stanovništva s višestrukim unosima (147 str.)Popis stanovništva: nepotpuni podaci (389 str.)Popis stanovništva: pogreška u zbroju (51 str.)
local p = {}
godinePopisa = {'2001.', '2011.', '2021.'}
local entityID = mw.wikibase.getEntityIdForCurrentPage()
function sorter(tablica)
local kopija = {}
for _, v in pairs(tablica) do
kopija[#kopija+1] = v
end
table.sort(kopija, compare)
return kopija
end
function compare(a,b)
-- mw.logObject(a.ime)
return a.ime < b.ime
end
function printOpcinaBezNaselja(zupanija, kratica, opcina)
ret = '|-\n| colspan="2"|\n'
.. '{| style="width: 100%;"\n|-\n| colspan="4" | <hr>\n'
.. '|-\n| colspan="4" style="text-align: center;" | <b>Broj stanovnika</b><br />'
.. 'Općina ' .. opcina.ime .. ', ' .. zupanija .. '[[[Modul:Popis stanovništva/'.. kratica .. '|uredi]]]\n'
.. '|-\n! 2001. || 2011. || 2021.\n'
.. '|-\n| '.. opcina.popis2001 ..' ||| '.. opcina.popis2011 .. ' || '.. opcina.popis2021 .. '\n'
.. '|-\n| colspan="4" | <hr>'
.. '\n|}\n'
return ret
end
function printOpcinaSaNaseljima(zupanija, kratica, opcina)
local uvlaka = ''
local kopija = sorter(opcina.naselja)
ret = '{| class="wikitable sortable" style="text-align:center;" \n|-\n'
.. '|+ colspan="4" style="text-align: center;" | <b>Broj stanovnika</b><br />'
.. 'Općina ' .. opcina.ime .. ', ' .. zupanija .. ' [[[Modul:Popis stanovništva/'.. kratica ..'/'.. opcina.ime .. '|uredi]]]\n'
.. '|-\n! style="width:20%;"| Naselje ||style="width:20%;"| 2001. ||style="width:20%;"| 2011. ||style="width:20%;"| 2021.\n'
for _, v in ipairs(kopija) do
ret = ret .. '|-\n| style="width:20%;"|' .. uvlaka .. v.ime ..' ||style="width:20%;"| '.. v.popis2001 ..' ||style="width:20%;"| '.. v.popis2011 .. ' ||style="width:20%;"| '.. v.popis2021 .. '\n'
end
--ret=ret.. '|-\n|Ukupno||1||2||3\n|}\n'
ret=ret .. '|-\n! scope="row" style="width:20%;"| Ukupno [[[Modul:Popis stanovništva/'.. kratica .. '|uredi]]] ||style="width:20%;"| '.. opcina.popis2001 ..' ||style="width:20%;"| '.. opcina.popis2011 .. ' ||style="width:20%;"| '.. opcina.popis2021 .. '\n'
.. '\n|}\n'
-- .. '\n|}'
return ret
end
function printOpcinaSaNaseljimaInfobox(zupanija, kratica, opcina)
local uvlaka = ''
local kopija = sorter(opcina.naselja)
ret = '|-\n|colspan="2"|\n'
.. '{| style="width: 100%;"\n|-\n'
.. '| colspan="5" style="text-align: center;" | <b>Broj stanovnika</b><br />'
.. opcina.ime .. ', ' .. zupanija .. ' [[[Modul:Popis stanovništva/'.. kratica ..'/'.. opcina.ime .. '|uredi]]]\n'
.. '|-\n! colspan="2" style="padding-left: 15px; width:20%;"| Naselje ||style="width:20%;"| 2001. ||style="width:20%;"| 2011. ||style="width:20%;"| 2021.\n'
.. '|-\n{| class="mw-collapsible mw-collapsed nomobile" style="width:100%"\n'
.. '|+ class="nowrap" style="font-size: 80%; padding: 0;"| Popis naselja\n'
local zbroj2001 = 0
local flag2001 = 'no'
local zbroj2011 = 0
local flag2011 = 'no'
local zbroj2021 = 0
local flag2021 = 'no'
for _, v in ipairs(kopija) do
ret = ret .. '|-\n| style="width:20%;"|' .. uvlaka .. v.ime ..' ||style="width:20%;"| '.. v.popis2001 ..' ||style="width:20%;"| '.. v.popis2011 .. ' ||style="width:20%;"| '.. v.popis2021 .. '\n'
zbroj2001 = zbroj2001 + (tonumber(v.popis2001) or 0)
zbroj2011 = zbroj2011 + (tonumber(v.popis2011) or 0)
zbroj2021 = zbroj2021 + (tonumber(v.popis2021) or 0)
end
ret=ret.. '\n|-\n| colspan="4" | <hr>\n'
..'|}\n|-\n'
.. '| colspan="2"|\n{| style="width: 100%;"\n'
.. '|-\n|style="width:20%;"| Ukupno [[[Modul:Popis stanovništva/'.. kratica .. '|uredi]]] ||style="width:20%;'
if not (zbroj2001 == tonumber(opcina.popis2001)) and not (zbroj2001 == 0) then ret=ret .. 'color: red;' flag2001 = 'yes' end
ret = ret .. '"| '.. opcina.popis2001 ..' ||style="width:20%;'
if not (zbroj2011 == tonumber(opcina.popis2011)) and not (zbroj2011 == 0) then ret=ret .. 'color: red;' flag2011 = 'yes' end
ret = ret .. '"| '.. opcina.popis2011 ..' ||style="width:20%;'
if not (zbroj2021 == tonumber(opcina.popis2021)) and not (zbroj2021 == 0) then ret=ret .. 'color: red;' flag2021 = 'yes' end
ret = ret .. '"| '.. opcina.popis2021 ..'\n'
.. '|-\n| colspan="4" | <hr>'
.. '\n|}'
-- .. '\n|}'
if flag2001 == 'yes' or flag2011 == 'yes' or flag2021 == 'yes' then
ret = ret .. '[[Kategorija:Popis stanovništva: pogreška u zbroju]]'
end
if zbroj2001 == 0 or zbroj2011 == 0 then
ret = ret .. '[[Kategorija:Popis stanovništva: nepotpuni podaci]]'
end
return ret..'\n'
end
function printNaselje(zupanija, kratica, opcina, naselje)
local uvlaka = 'style="padding-left: 20px;" | '
ret = '|-\n| colspan="2" style="text-align: center;" | <b>Broj stanovnika</b><br />'
.. naselje.ime .. ' (' .. opcina .. ', ' .. zupanija .. ')'
.. ' [[[Modul:Popis stanovništva/'.. kratica ..'/'.. opcina .. '|uredi]]]\n'
.. '|-\n|'.. uvlaka .. '<b>2001.</b> || ' .. naselje.popis2001 .. '\n'
.. '|-\n|'.. uvlaka .. '<b>2011.</b> || ' .. naselje.popis2011 .. '\n'
.. '|-\n|'.. uvlaka .. '<b>2021.</b> || ' .. naselje.popis2021 .. '\n'
.. '|-\n| colspan="2" | <hr>\n'
return ret
end
function odrediZupaniju()
local zupanijaValue = string.lower(mw.getCurrentFrame():getParent().args["županija"] or 'nema')
local zupanijaKratica = "AAA";
if zupanijaValue:match("bjelovarsko") then zupanijaKratica = "BBŽ"
elseif zupanijaValue:match("brodsko") then zupanijaKratica = "BPŽ"
elseif zupanijaValue:match("dubrovačko") then zupanijaKratica = "DNŽ"
elseif zupanijaValue:match("grad zagreb") then zupanijaKratica = "GZG"
elseif zupanijaValue:match("istarska") then zupanijaKratica = "ISŽ"
elseif zupanijaValue:match("karlovačka") then zupanijaKratica = "KAŽ"
elseif zupanijaValue:match("koprivničko") then zupanijaKratica = "KKŽ"
elseif zupanijaValue:match("krapinsko") then zupanijaKratica = "KZŽ"
elseif zupanijaValue:match("ličko") then zupanijaKratica = "LSŽ"
elseif zupanijaValue:match("međimurska") then zupanijaKratica = "MEŽ"
elseif zupanijaValue:match("osječko") then zupanijaKratica = "OBŽ"
elseif zupanijaValue:match("primorsko") then zupanijaKratica = "PGŽ"
elseif zupanijaValue:match("požeško") then zupanijaKratica = "PSŽ"
elseif zupanijaValue:match("splitsko") then zupanijaKratica = "SDŽ"
elseif zupanijaValue:match("sisačko") then zupanijaKratica = "SMŽ"
elseif zupanijaValue:match("virovitičko") then zupanijaKratica = "VPŽ"
elseif zupanijaValue:match("vukovarsko") then zupanijaKratica = "VSŽ"
elseif zupanijaValue:match("varaždinska") then zupanijaKratica = "VŽŽ"
elseif zupanijaValue:match("zadarska") then zupanijaKratica = "ZDŽ"
elseif zupanijaValue:match("zagrebačka") then zupanijaKratica = "ZGŽ"
elseif zupanijaValue:match("kninska") then zupanijaKratica = "ŠKŽ" -- "šibensko" vraća grešku !?
end
mw.log(zupanijaValue, zupanijaKratica)
return zupanijaKratica
end
local function has_value (tab, val)
for index, value in ipairs(tab) do
if value == val then
return true
end
end
return false
end
function p.main(frame)
local ret = ''
local brojac = 0
local dovrseneZupanije = {"BBŽ", "BPŽ", "DNŽ", "ISŽ", "KAŽ",
"KKŽ", "KZŽ", "LSŽ", "MEŽ", "OBŽ",
"PGŽ", "PSŽ", "SDŽ", "SMŽ", "VPŽ",
"VSŽ", "VŽŽ", "ZDŽ", "ZGŽ", "ŠKŽ"}
local kratica = odrediZupaniju()
if has_value(dovrseneZupanije, kratica) then
ulaz = require("Modul:Popis stanovništva/" .. kratica)
else if kratica == "GZG" then
return ''
else
return '[[KT:Popis stanovništva - pogreška u imenu županije]]' -- nisu još sve županije popunjene
end
end
if kratica == "AAA" then
ret = ret .. '\n[[KT:Popis stanovništva - pogreška u imenu županije]]'
end
local naslov = mw.title.getCurrentTitle().fullText:gsub(' %b()', '') -- uklanja zagrade iz naslova)
for mk, mv in pairs(ulaz) do -- opcina, grad, ime, kratica
if type(mv) == 'table' then -- table opcina ili grad
for k, v in pairs(mv) do -- qbroj, detalji
if k == entityID or v.ime == naslov then -- opcina ili grad
mw.log('opcina/grad found: '.. k..', ime ' ..v.ime )
if frame.args[1]=='tablica' then
ret = ret .. printOpcinaSaNaseljima(ulaz.ime, ulaz.kratica, v)
else
ret = ret .. printOpcinaSaNaseljimaInfobox(ulaz.ime, ulaz.kratica, v)
brojac = brojac+1
end
else
for tk, tv in pairs(v.naselja) do -- qbroj, detalji naselja
if tk == entityID or tv.ime == naslov then
mw.log ('naselje found: ' .. tv.ime..', opcina ' ..v.ime)
ret = ret .. printNaselje(ulaz.ime, ulaz.kratica, v.ime, tv)
brojac = brojac+1
end
end
end
end
end
end
-- end
if brojac > 1 then
ret = ret .. '\n[[KT:Popis stanovništva s višestrukim unosima]]'
end
return ret
end
return p