Benutzer:Antonsusi/Spielwiese/Modul:Test3
aus Wikipedia, der freien Enzyklopädie
< Benutzer:Antonsusi | Spielwiese
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 25. Mai 2013 um 18:37 Uhr durch imported>Antonsusi(815279).
--[=[ Aufruf ]=]
--
local p = {} function p.Execute(frame) local Diagramm='<table cellspacing="0" cellpadding="0" {FLOAT} style="border:silver solid 1px; font-size:90%; padding:0.4em; width:{BREITE};"><tr style="background:CornflowerBlue;"><th style="text-align:center; font-size:bigger;" colspan="5">{NAME}: Einwohnerzahlen von 1834 bis 1967</th></tr><tr style="font-size:90%; height:4px;"><td style="padding:0px 4px;">Jahr</td><td style="padding:0 4px; text-align:right;"> </td><td style="width:{BARWIDTH};"></td><td style="padding:0 4px; width:5em; text-align:right;"> </td><td style="padding:0 4px; text-align:right;">Einwohner</td></tr>{ALLBARS}<tr><td colspan="5" style="padding:4px">Datenquelle: Historisches Gemeindeverzeichnis für Hessen: Die Bevölkerung der Gemeinden 1834 bis 1967. Wiesbaden: Hessisches Statistisches Landesamt, 1968.</td></tr></table>' local BarOrg = '<tr style="line-height:0.8em;"><td colspan="2" style="padding-right:0.4em; padding-left:0.4em;" | >{jahr}</td><td style="border:1px solid silver;"><div style="background:CornflowerBlue; width:{PIXEL}px; overflow:hidden;"> </div></td><td colspan="2" style="min-width:3em; padding-left:0.4em;" align="right">{zahl}</td></tr>' local Bar = "" local AllBars = "" local A_Float = frame.args["Float"] or "" local A_Name = frame.args["Name"] or "?" local A_Barwidth = frame.args["Barwidth"] or "" local A_MaxEinwohner = frame.args["MaxEinwohner"] or "" local Barwidth = 0 -- max. Balkenbreite local Width = 0 -- Breite der Tabellenspalte local MaxZahl = 0 -- Maximum von maxEinwohner und maximal 19 Standardparametern local T_JahrOrg = {1834,1840,1846,1852,1858,1864,1871,1875,1885,1895,1905,1910,1925,1939,1946,1950,1956,1961,1967} local T_Jahr = {} -- nimmt nur Jahreszahlen mit zugehörigem Wert auf. Das erlaubt Lücken local T_Value = {} -- Einwohnerwerte local T_Bars = {} -- Die TR-Tags local Value = 0 local Pixel = 0 -- Die Balkenbreite Diagramm = mw.ustring.gsub(Diagramm,"{NAME}",A_Name) if A_Float == 'left' then Diagramm = mw.ustring.gsub(Diagramm,'{FLOAT}','class="float-left"') elseif A_Float == 'centered ' then Diagramm = mw.ustring.gsub(Diagramm,'{FLOAT}','class="float-centered"') else Diagramm = mw.ustring.gsub(Diagramm,'{FLOAT}','class="float-right"') end if tonumber(A_Barwidth) then Barwidth = math.floor(tonumber(A_Barwidth)) else Barwidth = 400 end Width = Barwidth + 80 Diagramm = mw.ustring.gsub(Diagramm,"{BREITE}" ,tostring(Width).."px" ) Diagramm = mw.ustring.gsub(Diagramm,"{BARWIDTH}",tostring(Barwidth).."px") if tonumber(A_MaxEinwohner) then MaxZahl = math.max(0,math.floor(tonumber(A_MaxEinwohner))) end -- Nur gültige Zahlen in Tabelle T_Value einlesen und dabei das Maximum feststellen for idx= 1, 19 do Value = tonumber(frame.args[idx] or "") if Value then Value = math.max(0,math.floor(Value)) -- negative Werte auf Null setzen. table.insert(T_Jahr,T_JahrOrg[idx]) table.insert(T_Value,Value) MaxZahl = math.max(MaxZahl, Value) end end for idx = 1, #T_Value do Bar = BarOrg Bar = mw.ustring.gsub(Bar,"{jahr}",tostring(T_Jahr[idx])) Bar = mw.ustring.gsub(Bar,"{zahl}",frame:callParserFunction('formatnum',T_Value[idx])) Pixel = T_Value[idx] / MaxZahl * Barwidth Bar = mw.ustring.gsub(Bar,"{PIXEL}",tostring(Pixel)) table.insert(T_Bars,Bar) end AllBars = table.concat(T_Bars) Diagramm = mw.ustring.gsub(Diagramm,"{ALLBARS}",AllBars) Diagramm = Diagramm .. "\n\n" .. A_Barwidth .. "\n\n" return Diagramm end return p --