Modul:Stolpčni diagram
Mogoče bi radi ustvarili dokumentacijsko stran za ta Scribunto modul Urejevalci lahko preizkušate ta modul v peskovniku (ustvari | mirror) in testnihprimerih (ustvari). Prosimo, da dodate kategorije v /dok podstran. Podstrani te predloge. |
local p = {}
local max_visina = 8 -- 8 em; nastaviti tudi višino celice v css-ju predloge
function p.diagram(frame)
local podatki = {}
local targs = frame:getParent().args --template arguments in template call
--local margs = frame.args --module arguments in #invoke
--pojdi skozi vse parametre; večinoma so to pari aN/pN; v hr. izvirniku tudi parametri oblike pGGGG
for k, v in pairs(targs) do
local n = string.match(k, "^a(%d%d?)$") -- do 99 parov parametrov: 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
podatki[g] = p
end
end
end
--leta prisotna v predlogi; potrebujemo jih v tabeli zaradi razvrščanja
local leta = {}
local podatki_max = 0
for k, v in pairs(podatki) do
table.insert(leta, k)
if podatki[k]>podatki_max then podatki_max=podatki[k] end
end
table.sort(leta)
-- možnost nastavitve napisa y-osi
local y_napis = targs["y_napis"] or ""
--html tabela, v kateri bo vsaka celica vsebovala en stolpec (div) stolpčnega diagrama
--tukaj ustvarjamo celice v dveh vrsticah
local tr1 = mw.html.create( 'tr' )
tr1 : tag("td") : addClass("kbs_ordinata")
: tag("span") : addClass("kbs_ordinata") : wikitext(y_napis) : done()
local tr2 = mw.html.create( 'tr' )
tr2 : tag("td") : done()
prikazi = leta
local prva, zadnja = Nil, Nil
for _, g in ipairs(prikazi) do
if leta[1]<=g and g<=leta[#leta] then --ne prikazuj lijevo i desno od jedinih poznatih, ali prikaži između
prva = prva or g
zadnja = g
local podatek = podatki[g] or 0
local biljeg = (podatek>0 and podatek) or "" -- do not show 0 or Nil
tr1 : tag("td") : addClass("kbs_za_stolpce")
: tag("div") : addClass("kbs_podatki") : wikitext(biljeg) : done()
: tag("div") : addClass("kbs_stolpci")
: cssText("height:"..0.01*math.floor(100*podatek*max_visina/podatki_max).."em;") : done()
tr2 : tag("td") : addClass("kbs_leta") : wikitext(g) : done()
end
end
-- naslov nad tabelo z diagramom
local naslovnavrstica = mw.html.create( 'div' ) : addClass("kbs_naslov")
naslov = (targs["naslov"] and (targs["naslov"] ~= "") and targs["naslov"] or "")
-- tabela za stolpčni diagram
local tbl = mw.html.create( 'table' )
tbl : addClass("kbs_tabela")
: 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_tabela_scrollable")
: tag("div") : addClass("kbs_tabela")
: node(ttl)
: node(tbl)
: done()
-- opomba:… in viri:… izpod diagrama
local opomba = targs["opomba"] or ""
local viri = ""
viri = targs["viri"] or viri
local nte = mw.html.create( 'div' ) : addClass("kbs_opomba")
if opomba ~="" then
nte : wikitext("'''Opomba''': " .. opomba .. " ")
end
if viri ~="" then
nte : wikitext("'''Viri''': " .. viri)
end
local nap_izv = mw.html.create( 'div' )
nap_izv : addClass("kbs_opomba_nonscrollable")
: node(nte)
local vse = mw.html.create() : node(tbl_ttl) : node(nap_izv)
return vse
end
return p