Modul:Befolkningsutveckling2

Från Järnvägsdata
Version från den 14 mars 2018 kl. 23.04 av Jan Karlsson (diskussion | bidrag) (1 version importerades)
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)

p = {}

function p.diagram(frame) local lang = mw.language.new('sv') local pFrame = frame:getParent() local args = pFrame.args local text = local namn = args.namn or frame.args.namn local max = -math.huge local note = args['ref'] or local noter = {} local fotnot = args.fotnot or if namn == nil or namn == then return 'Inget namn är angivet' -- namn måste anges end local fran = tonumber(args.fran) or 1800 -- default startvärde är 1800 local fran2 = math.huge -- dummy argument för att hitta lägsta och högsta värde local till2 = -math.huge local till = tonumber(args.till) or tonumber(os.date("%Y")) --default startvärde är CURRENTYEAR local step = 1 -- rätt ordning local areakolumn = nil -- variabel för att avgöra om en kolumn för area behövs local fkr = nil -- variabel för att avgöra om "före Kristus" behöver markeras if args.fkr then fkr = 'fkr' end if till < fran then step = -1 end local reffarna = local notraknare = 1 for i = fran, till, step do local pu = 'inv' .. i if tonumber(args[pu]) then local pv = 'area' .. i if args[pv] then areakolumn = end if tonumber(args[pu]) > max then max = tonumber(args[pu]) end if i > till2 then till2 = i end if i < fran2 then fran2 = i end if i < 0 then fkr = 'fkr' end local pw = 'typ' .. i if args[pw] then reffarna = 'A' if args[pw] == 'småort' then args[pw] = 'som småort' end if args[pw] == 'tätort' then args[pw] = 'som tätort' end if noter[args[pw]] == nil then notraknare = notraknare + 1 noter[args[pw]] = 'Not'..tostring(notraknare) end end end end if tonumber(args.max) then max = tonumber(args.max) end text = 'Befolkningsutvecklingen i ' .. namn local frantext = fran2 .. local tilltext = till2 .. if fkr then if fran2 < 0 then frantext = frantext .. ' f. kr.' else frantext = frantext .. ' e. kr.' end if till2 < 0 then tilltext = tilltext .. ' f. kr.' else tilltext = tilltext .. ' e. kr.' end end if fran2 == till2 then text = text .. ' ' .. frantext .. note else text = text .. ' ' .. frantext .. '–' .. tilltext .. note end text = mw.text.tag('big', {}, text) text = mw.text.tag('th', {colspan="5"}, text) text = mw.text.tag('tr', {style="background:#DDD;"}, text) text = text .. mw.text.tag('tr', {}, mw.text.tag('td', {colspan="5", style="padding:4px"}, )) local h1 = mw.text.tag('td', {style="padding:0 4px", valign="top"}, 'År') h1 = h1 .. mw.text.tag('td', {style="padding:0 4px;", align="right", valign="top"}, ) h1 = h1 .. mw.text.tag('td', {style="width:525px"}, ) h1 = h1 .. mw.text.tag('td', {style="padding:0 4px;width:5em", align="right", valign="top"}, 'Folkmängd') if areakolumn then areaheader = args.stapel2header or 'Areal' areaenhet = args.areaenhet or '(ha)' h1 = h1 .. mw.text.tag('td', {style="padding:0 4px;", align="right", valign="top"}, areaheader.. ' ' .. areaenhet) end text = text .. mw.text.tag('tr', {style="font-size:88%;"}, h1)

local color = args.color or '#B0C4DE' for i = fran, till, step do

local pu = 'inv' .. i

if tonumber(args[pu]) then local h4 = math.floor(480*tonumber(args[pu]/max)) .. local h7 = math.abs(i) .. if fkr then if i < 0 then h7 = h7 .. ' f. Kr.' else h7 = h7 .. ' e. Kr.' end end local h8 = 'color' .. i if args[h8] then color = args[h8] end local h9 = 'typ' .. i local color2 = color local lokalnot = if args[h9] == 'som småort' then color2 = '#d0e0f5' elseif args[h9] == 'som tätort' then color2 = '#B0C4DE' end if args[h9] then lokalnot = frame:extensionTag{ name = 'ref', content = args[h9], args = {name = noter[args[h9]], group = "N"}} end local h10 = 'ref' .. i local h2 = mw.text.tag('td', {colspan="2", style="padding-right:0.4em; padding-left:0.4em"}, h7) local h3 = mw.text.tag('div', {style="margin-top:0; margin-bottom:0; background:"..color2.."; height:10px; width:"..h4.."px; overflow:hidden"}, '  ') h2 = h2 .. mw.text.tag('td', {style="border-left:solid 1px silver;border-right:solid 1px silver;"}, h3)

local content = lang:formatNum(tonumber(args[pu])) if areakolumn == nil then content = content .. lokalnot if args[h10] then content = content .. args[h10] end end h2 = h2 .. mw.text.tag('td', {style="min-width:3em;padding-left:0.4em", align="right"}, content) if areakolumn then local h5 = 'area' .. i local h11 = tonumber(args[h5]) or args[h5] or local h6 = if tonumber(h11) then h6 = lang:formatNum(h11) or h11 end if args[h10] then h6 = h6 .. args[h10] end h2 = h2 .. mw.text.tag('td', {style="min-width:3em;padding-left:0.4em", align="right"}, h6 .. lokalnot) end text = text .. mw.text.tag('tr', {}, h2) end end

if args.fotnot or reffarna ~= then local slutet2 = args.fotnot or if reffarna ~= then slutet2 = slutet2 .. frame:extensionTag{ name = 'references', args = { group='N' } } end text = text .. mw.text.tag('td', {colspan="5", style="padding:4px"}, mw.text.tag('b', {}, 'Anm: ') .. slutet2) end i = 1 while args['legend' .. tostring(i)] do local h12 = mw.text.tag('span', {style="display:inline-block; width:1.5em; height:1.5em; margin:1px 0; border:1px solid black; background-color:"..args['legend' .. tostring(i)] .. "; color:black; font-size:88%; text-align:center;"}, ' ') local h13 = args['legend'..tostring(i)..'_text'] or h12 = mw.text.tag('div', {}, h12..' '.. h13) h12 = mw.text.tag('td', {colspan="5", style="padding:4px"}, h12 ) h12 = mw.text.tag('tr', {}, h12) text = text .. h12 i = i + 1 end

text = mw.text.tag('table', {cellspacing="0", cellpadding="0", style="clear:none;float:none;border:silver solid 1px; font-size:90%; padding:0.4em;margin:0.4em;width:650px"}, text)

return text end

return p