Modul:Vorlage:Mosaik
Modul Vorlage:Mosaik
Modulbeschreibung
Modul für die Mosaikdarstellung für Vorlage:Mosaik
Die Vorlage ruft das dieses Modul über die Wrapperfunktion mosaikWrapper
auf.
Es wird eine Tabelle erzeugt.
- Der erste und zweite Parameter gibt die Breite und Höhe in Stück Mosaiksteinen an. Das ergibt die Spalten- und Zeilenanzahl der Tabelle.
- Parameter
liste1
,liste2
, .. ist eine Zahlenliste mit den hervorgehobenen Steinen. Die Zahlen sind die Steinnummern von 1 bis (Spalten mal Zeilen). Die Zahlen werden mit,
getrennt. - Parameter
style1
,style2
, .. ist der css-Style der hervorgehobenen Steine/ Zellen, z.B. die Farbe. - Parameter
styleRest
ist der css-Style der nicht hervorgehobenen Steine/ Zellen. - Parameter
styleTabelle
ist ein zusätzlicher css-Style der Tabelle - Parameter
steinhöhe
undsteinbreite
sind Längenmaße in html-Einheiten (px, em..).
Beispiel:
{{Mosaik |8 |5 |liste1= 1,2,3,5,10 |style1= background: yellow |liste2= 1,6,23,15,20 |style2= background: orange |styleRest= background: greenyellow |steinbreite= 3em |steinhöhe= 2em}}
Ergebnis:
Funktionen
mosaik
mosaikWrapper
Wrapperfunktion, von der Vorlage ohne Parameter aufrufbar
- Diese Dokumentation wurde mithilfe von Modul:LuaDokumentation erstellt und befindet sich im Quelltext.
- Liste der Unterseiten
--- Modul für die Mosaikdarstellung für [[Vorlage:Mosaik]] <br><br>
-- Die Vorlage ruft das dieses Modul über die Wrapperfunktion <code>mosaikWrapper</code> auf.
-- Es wird eine Tabelle erzeugt.
-- * Der erste und zweite Parameter gibt die Breite und Höhe in Stück Mosaiksteinen an. Das ergibt die Spalten- und Zeilenanzahl der Tabelle.
-- * Parameter <code>liste1</code>, <code>liste2</code>, .. ist eine Zahlenliste mit den hervorgehobenen Steinen. Die Zahlen sind die Steinnummern von 1 bis (Spalten mal Zeilen). Die Zahlen werden mit <code>,</code> getrennt.
-- * Parameter <code>style1</code>, <code>style2</code>, .. ist der css-Style der hervorgehobenen Steine/ Zellen, z.B. die Farbe.
-- * Parameter <code>styleRest</code> ist der css-Style der nicht hervorgehobenen Steine/ Zellen.
-- * Parameter <code>styleTabelle</code> ist ein zusätzlicher css-Style der Tabelle
-- * Parameter <code>steinhöhe</code> und <code>steinbreite</code> sind Längenmaße in html-Einheiten (px, em..).
-- Beispiel:<br>
-- <pre><nowiki>{{Mosaik |8 |5
-- |liste1= 1,2,3,5,10
-- |style1= background: yellow
-- |liste2= 1,6,23,15,20
-- |style2= background: orange
-- |styleRest= background: greenyellow |steinbreite= 3em |steinhöhe= 2em}}
-- </nowiki></pre>
-- Ergebnis:<br>
-- {{Mosaik |8 |5
-- |liste1= 1,2,3,5,10
-- |style1= background: yellow
-- |liste2= 1,6,23,15,20
-- |style2= background: orange
-- |styleRest= background: greenyellow |steinbreite= 3em |steinhöhe= 2em}}
local p = {}
--- Hauptfunktion
function p.mosaik(frame)
spalten= assert(tonumber(frame.args[1]), "nonumber arg1-2")
zeilen= assert(tonumber(frame.args[2]), "nonumber arg1-2")
paintLists= {}
for i= 1, 100 do
if frame.args["liste"..i] then
pl= {}
for match in mw.text.gsplit(frame.args["liste"..i], ",") do
n= assert(tonumber(match), "nonumber liste"..i)
pl[n]= true
end
paintLists[i]= pl
else
break
end
end
--mw.addWarning("paintLists "..mw.dumpObject( paintLists ) )
heightStyle= "height:1.5em; "; widthStyle= "width:1.5em;"
if frame.args["steinhöhe"] then heightStyle= "height:"..frame.args["steinhöhe"]..";" end
if frame.args["steinbreite"] then widthStyle= "width:"..frame.args["steinbreite"]..";" end
styleTabelle= frame.args["styleTabelle"] or ""
styles= {}
styleUnpainted= "background-color: #eed;"
if frame.args["styleRest"] then styleUnpainted= frame.args["styleRest"] end
for i= 1, #paintLists do
if frame.args["style"..i] then
styles[i]= frame.args["style"..i]..";"
else
styles[i]= "background-color: #88d"
end
end
--mw.addWarning("styles "..mw.dumpObject( styles ) )
cellcount= 1
out= '<table style="border-collapse:collapse;'..styleTabelle..'">'
for i = 1, zeilen do
out= out..'<tr>'
for ii = 1, spalten do
cellStyle= styleUnpainted
for j= 1, #paintLists do
if paintLists[j][cellcount] then
cellStyle= styles[j]
end
end
cellcount= cellcount+1
out= out
..'<td style="border:thin solid black;'
..heightStyle..widthStyle..cellStyle
..'"></td>'
end
out= out..'</tr>'
end
out= out..'</table>'
return (out)
end
--- Wrapperfunktion, von der Vorlage ohne Parameter aufrufbar
function p.mosaikWrapper(frame)
return p.mosaik(frame:getParent())
end
return p