Modul:Ahnentafel: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Keine Bearbeitungszusammenfassung |
K (Schützte „Modul:Ahnentafel“: SyncBot ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt))) |
||
(33 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt) | |||
Zeile 12: | Zeile 12: | ||
.."|offset=0" | .."|offset=0" | ||
.."|searchlabel=") | .."|searchlabel=") | ||
if travia==nil or travia[1]==nil or travia[1]["Traviabund mit Von"]==nil then | if travia==nil or travia[1]==nil or travia[1]["Traviabund mit Von"]==nil or travia[1]["Traviabund mit Von"]=="9999 vBF" then | ||
return "" | return "" | ||
end | end | ||
Zeile 22: | Zeile 22: | ||
local anzahl=mw.smw.ask("{{#ask: <q>[[Vater ist::"..person["Vater ist"].."]] OR [[Mutter ist::"..person["Mutter ist"].."]]</q>" | local anzahl=mw.smw.ask("{{#ask: <q>[[Vater ist::"..person["Vater ist"].."]] OR [[Mutter ist::"..person["Mutter ist"].."]]</q>" | ||
.."|format=count") | .."|format=count") | ||
if anzahl | if anzahl<=1 then | ||
return "" | return "" | ||
end | end | ||
Zeile 29: | Zeile 29: | ||
--Setze bei nil auf Standardwerte | --Setze bei nil auf Standardwerte | ||
function | function standardInfos(artikel,infos) | ||
local anzeige=artikel | |||
for w in artikel:gmatch("([^:]+)") do | |||
anzeige=w | |||
end | |||
if infos==nil or infos["Bild ist"]==nil then | if infos==nil or infos["Bild ist"]==nil then | ||
return { | return { | ||
Zeile 39: | Zeile 44: | ||
["Lehenswappen ist"]="Datei:Wappen blanko.svg", | ["Lehenswappen ist"]="Datei:Wappen blanko.svg", | ||
["Mitgliedswappen ist"]="Datei:Wappen blanko.svg", | ["Mitgliedswappen ist"]="Datei:Wappen blanko.svg", | ||
["Langname"]= | ["Langname"]=anzeige, | ||
["Tsatag Text"]="", | ["Tsatag Text"]="", | ||
["Borontag Text"]="", | ["Borontag Text"]="", | ||
Zeile 45: | Zeile 50: | ||
else | else | ||
return { | return { | ||
["Artikel"]=robusttrim(infos | ["Artikel"]=robusttrim(infos["Artikel"]), | ||
["Mutter ist"]=robusttrim(infos | ["Mutter ist"]=robusttrim(infos["Mutter ist"]), | ||
["Vater ist"]=robusttrim(infos | ["Vater ist"]=robusttrim(infos["Vater ist"]), | ||
["Bild ist"]=robusttrim(infos | ["Bild ist"]=robusttrim(infos["Bild ist"]), | ||
["Wappen ist"]=robusttrim(infos | ["Wappen ist"]=robusttrim(infos["Wappen ist"]), | ||
["Lehenswappen ist"]=robusttrim(infos | ["Lehenswappen ist"]=robusttrim(infos["Lehenswappen ist"]), | ||
["Mitgliedswappen ist"]=robusttrim(infos | ["Mitgliedswappen ist"]=robusttrim(infos["Mitgliedswappen ist"]), | ||
["Langname"]=robusttrim(infos | ["Langname"]=robusttrim(infos["Langname"]), | ||
["Tsatag Text"]=robusttrim(infos | ["Tsatag Text"]=robusttrim(infos["Tsatag Text"]), | ||
["Borontag Text"]=robusttrim(infos | ["Borontag Text"]=robusttrim(infos["Borontag Text"]), | ||
} | } | ||
end | end | ||
Zeile 76: | Zeile 81: | ||
.."|searchlabel=" | .."|searchlabel=" | ||
) | ) | ||
return | if infos==nil then | ||
return standardInfos(artikel,nil) | |||
end | |||
return standardInfos(artikel,infos[1]) | |||
end | end | ||
Zeile 94: | Zeile 102: | ||
.."|sort=Tsatag Index" | .."|sort=Tsatag Index" | ||
) | ) | ||
if infos==nil then | |||
infos={} | |||
end | |||
local result={} | local result={} | ||
for c = 1, #infos do | for c=1,#infos do | ||
result[c]= | result[c]=standardInfos(artikel,infos[c]) | ||
end | end | ||
return result | return result | ||
end | end | ||
--versteckte Titelzeile, um gleichmäßige Darstellung zu erreichen | --neue Zeile eventuell verstecken, wenn leer | ||
function neueZeile(eintrag) | |||
local c=0 | |||
for i=1,#eintrag do | |||
if eintrag[i]~="" then | |||
c=c+1 | |||
end | |||
end | |||
local hide="" | |||
if c==0 then | |||
hide="style=\"visibility:hidden" | |||
end | |||
return "\n|- "..hide | |||
end | |||
--versteckte Titelzeile, um gleichmäßige Darstellung zu erreichen, kurze Anzeige der Alteltern | |||
function zeile0(eintrag) | function zeile0(eintrag) | ||
local result= | local result=neueZeile(eintrag) | ||
for i=1,16,1 do | for i=1,16,1 do | ||
result=result.."\n|class=\"hell\" style=\"width:6%;vertical-align:top;text-align:center;border:1px solid gray;\"|"..eintrag[i] | result=result.."\n|class=\"hell\" style=\"width:6%;vertical-align:top;text-align:center;border:1px solid gray;\"|"..eintrag[i] | ||
Zeile 112: | Zeile 138: | ||
--Zeile mit den Urgroßeltern | --Zeile mit den Urgroßeltern | ||
function zeile1(eintrag) | function zeile1(eintrag) | ||
local result= | local result=neueZeile(eintrag) | ||
for i=1,8,1 do | for i=1,8,1 do | ||
result=result.."\n|colspan=\"2\" class=\"hell\" " | result=result.."\n|colspan=\"2\" class=\"hell\" " | ||
Zeile 123: | Zeile 149: | ||
--Zeile mit den Großeltern | --Zeile mit den Großeltern | ||
function zeile2(eintrag) | function zeile2(eintrag) | ||
local result= | local result=neueZeile(eintrag) | ||
result=result.."\n|style=\"vertical-align:middle;text-align:right;\"|"..eintrag[1] | result=result.."\n|style=\"vertical-align:middle;text-align:right;\"|"..eintrag[1] | ||
result=result.."\n|colspan=\"2\" class=\"hell\" " | result=result.."\n|colspan=\"2\" class=\"hell\" " | ||
Zeile 150: | Zeile 176: | ||
--Zeile mit den Eltern | --Zeile mit den Eltern | ||
function zeile3(eintrag) | function zeile3(eintrag) | ||
local result= | local result=neueZeile(eintrag) | ||
result=result.."\n|colspan=\"2\" style=\"vertical-align:middle;text-align:right;\"|"..eintrag[1] | result=result.."\n|colspan=\"2\" style=\"vertical-align:middle;text-align:right;\"|"..eintrag[1] | ||
result=result.."\n|colspan=\"4\" class=\"hell\" " | result=result.."\n|colspan=\"4\" class=\"hell\" " | ||
Zeile 166: | Zeile 192: | ||
--Zeile mit den Person | --Zeile mit den Person | ||
function zeile4(eintrag) | function zeile4(eintrag) | ||
local result= | local result=neueZeile(eintrag) | ||
result=result.."\n|colspan=\"4\" style=\"vertical-align:middle;text-align:right;\"|" | result=result.."\n|colspan=\"4\" style=\"vertical-align:middle;text-align:right;\"|" | ||
result=result.."\n|colspan=\"8\" class=\"hell\" " | result=result.."\n|colspan=\"8\" class=\"hell\" " | ||
Zeile 176: | Zeile 202: | ||
function personEintrag(person) | function personEintrag(person) | ||
if person==nil then | if person==nil or person["Artikel"]=="" then | ||
return "" | |||
end | |||
if person["Langname"]:find("^Vater von ") or person["Langname"]:find("^Mutter von ") then | |||
return "" | return "" | ||
end | end | ||
Zeile 203: | Zeile 232: | ||
for w in artikel:gmatch("([^:]+)") do | for w in artikel:gmatch("([^:]+)") do | ||
anzeige=w | anzeige=w | ||
end | |||
if anzeige:find("^Vater von ") or anzeige:find("^Mutter von ") then | |||
return "" | |||
end | end | ||
return "[["..artikel.."|"..anzeige.."]]" | return "[["..artikel.."|"..anzeige.."]]" | ||
Zeile 209: | Zeile 241: | ||
function ausgabe(artikel) | function ausgabe(artikel) | ||
local person=holeElternInfos(artikel) | local person=holeElternInfos(artikel) | ||
local vater=holeElternInfos(person["Vater ist"]) | local vater=holeElternInfos(person["Vater ist"]) | ||
local mutter=holeElternInfos(person["Mutter ist"]) | local mutter=holeElternInfos(person["Mutter ist"]) | ||
Zeile 227: | Zeile 259: | ||
local muttersmuttersvater=holeElternInfos(muttersmutter["Vater ist"]) | local muttersmuttersvater=holeElternInfos(muttersmutter["Vater ist"]) | ||
local muttersmuttersmutter=holeElternInfos(muttersmutter["Mutter ist"]) | local muttersmuttersmutter=holeElternInfos(muttersmutter["Mutter ist"]) | ||
local kinder=holeKinderInfos(artikel) | |||
local result='{| style="font-size:0.8em;width:100%;background:transparent;border:none;"' | local result='{| style="font-size:0.8em;width:100%;background:transparent;border:none;"' | ||
Zeile 281: | Zeile 315: | ||
}) | }) | ||
result=result.."\n|}" | result=result.."\n|}" | ||
result=result.."\n{| style=\"font-size:0.8em;width:100%;background:transparent;border:none;\"" | |||
result=result.."\n|-" | |||
local width=100/math.min(10,#kinder) | |||
for c = 1, #kinder do | |||
result=result.."\n|class=\"hell\" " | |||
.."style=\"vertical-align:top;text-align:center;border:1px solid gray;width:"..width.."%\"|" | |||
..personEintrag(kinder[c]) | |||
if (c%10)==0 then | |||
result=result.."\n|-" | |||
end | |||
end | |||
result=result.."\n|}" | |||
return result | return result | ||
end | end |
Aktuelle Version vom 11. Oktober 2024, 08:17 Uhr
Dokumentation und Testfälle unter Modul:Ahnentafel/Doku.
require("Modul:Hilfsfunktionen") require("Modul:Text") local p = {} --hole die Daten zum Traviabund der Eltern function holeTraviabund(person) local travia=mw.smw.ask("{{#ask:<q>[[-Has subobject::"..person["Vater ist"].."]] [[Traviabund mit Partner::"..person["Mutter ist"].."]]</q>" .." OR <q>[[-Has subobject::"..person["Mutter ist"].."]] [[Traviabund mit Partner::"..person["Vater ist"].."]]</q>" .."|?Traviabund mit Von" .."|limit=1" .."|offset=0" .."|searchlabel=") if travia==nil or travia[1]==nil or travia[1]["Traviabund mit Von"]==nil or travia[1]["Traviabund mit Von"]=="9999 vBF" then return "" end return "[[Datei:Symbol Travia-Kirche.svg|15px|link=]]"..travia[1]["Traviabund mit Von"] end --hole die Anzahl Geschwister inklusive Halbgeschwister function holeAnzahlGeschwister(person) local anzahl=mw.smw.ask("{{#ask: <q>[[Vater ist::"..person["Vater ist"].."]] OR [[Mutter ist::"..person["Mutter ist"].."]]</q>" .."|format=count") if anzahl<=1 then return "" end return "("..(anzahl-1).." Geschwister)" end --Setze bei nil auf Standardwerte function standardInfos(artikel,infos) local anzeige=artikel for w in artikel:gmatch("([^:]+)") do anzeige=w end if infos==nil or infos["Bild ist"]==nil then return { ["Artikel"]=artikel, ["Mutter ist"]="", ["Vater ist"]="", ["Bild ist"]="Datei:Bild blanko.svg", ["Wappen ist"]="Datei:Wappen blanko.svg", ["Lehenswappen ist"]="Datei:Wappen blanko.svg", ["Mitgliedswappen ist"]="Datei:Wappen blanko.svg", ["Langname"]=anzeige, ["Tsatag Text"]="", ["Borontag Text"]="", } else return { ["Artikel"]=robusttrim(infos["Artikel"]), ["Mutter ist"]=robusttrim(infos["Mutter ist"]), ["Vater ist"]=robusttrim(infos["Vater ist"]), ["Bild ist"]=robusttrim(infos["Bild ist"]), ["Wappen ist"]=robusttrim(infos["Wappen ist"]), ["Lehenswappen ist"]=robusttrim(infos["Lehenswappen ist"]), ["Mitgliedswappen ist"]=robusttrim(infos["Mitgliedswappen ist"]), ["Langname"]=robusttrim(infos["Langname"]), ["Tsatag Text"]=robusttrim(infos["Tsatag Text"]), ["Borontag Text"]=robusttrim(infos["Borontag Text"]), } end end --Hole Eltern und Infos einer Person function holeElternInfos(artikel) local infos=mw.smw.ask("{{#ask: [["..artikel.."]]" .."|?#-=Artikel" .."|?Mutter ist#" .."|?Vater ist#" .."|?Bild ist#" .."|?Wappen ist#" .."|?Lehenswappen ist#" .."|?Mitgliedswappen ist#" .."|?Langname#" .."|?Tsatag Text#" .."|?Borontag Text#" .."|limit=1" .."|offset=0" .."|searchlabel=" ) if infos==nil then return standardInfos(artikel,nil) end return standardInfos(artikel,infos[1]) end function holeKinderInfos(artikel) local infos=mw.smw.ask("{{#ask: [[Vater ist::"..artikel.."]] OR [[Mutter ist::"..artikel.."]]" .."|?#-=Artikel" .."|?Mutter ist#" .."|?Vater ist#" .."|?Bild ist#" .."|?Wappen ist#" .."|?Lehenswappen ist#" .."|?Mitgliedswappen ist#" .."|?Langname#" .."|?Tsatag Text#" .."|?Borontag Text#" .."|searchlabel=" .."|sort=Tsatag Index" ) if infos==nil then infos={} end local result={} for c=1,#infos do result[c]=standardInfos(artikel,infos[c]) end return result end --neue Zeile eventuell verstecken, wenn leer function neueZeile(eintrag) local c=0 for i=1,#eintrag do if eintrag[i]~="" then c=c+1 end end local hide="" if c==0 then hide="style=\"visibility:hidden" end return "\n|- "..hide end --versteckte Titelzeile, um gleichmäßige Darstellung zu erreichen, kurze Anzeige der Alteltern function zeile0(eintrag) local result=neueZeile(eintrag) for i=1,16,1 do result=result.."\n|class=\"hell\" style=\"width:6%;vertical-align:top;text-align:center;border:1px solid gray;\"|"..eintrag[i] end return result end --Zeile mit den Urgroßeltern function zeile1(eintrag) local result=neueZeile(eintrag) for i=1,8,1 do result=result.."\n|colspan=\"2\" class=\"hell\" " .."style=\"vertical-align:top;text-align:center;border:1px solid gray;\"|" ..eintrag[i] end return result end --Zeile mit den Großeltern function zeile2(eintrag) local result=neueZeile(eintrag) result=result.."\n|style=\"vertical-align:middle;text-align:right;\"|"..eintrag[1] result=result.."\n|colspan=\"2\" class=\"hell\" " .."style=\"vertical-align:top;text-align:center;border:1px solid gray;\"|" ..eintrag[2] result=result.."\n|colspan=\"2\" " .."style=\"vertical-align:middle;text-align:center;\"|"..eintrag[3] result=result.."\n|colspan=\"2\" class=\"hell\" " .."style=\"vertical-align:top;text-align:center;border:1px solid gray;\"|" ..eintrag[4] result=result.."\n|style=\"vertical-align:middle;text-align:left;\"|"..eintrag[5] result=result.."\n|style=\"vertical-align:middle;text-align:right;\"|"..eintrag[6] result=result.."\n|colspan=\"2\" class=\"hell\" " .."style=\"vertical-align:top;text-align:center;border:1px solid gray;\"|" ..eintrag[7] result=result.."\n|colspan=\"2\" " .."style=\"vertical-align:middle;text-align:center;\"|"..eintrag[8] result=result.."\n|colspan=\"2\" class=\"hell\" " .."style=\"vertical-align:top;text-align:center;border:1px solid gray;\"|" ..eintrag[9] result=result.."\n|style=\"vertical-align:middle;text-align:left;\"|"..eintrag[10] return result end --Zeile mit den Eltern function zeile3(eintrag) local result=neueZeile(eintrag) result=result.."\n|colspan=\"2\" style=\"vertical-align:middle;text-align:right;\"|"..eintrag[1] result=result.."\n|colspan=\"4\" class=\"hell\" " .."style=\"vertical-align:top;text-align:center;border:1px solid gray;\"|" ..eintrag[2] result=result.."\n|colspan=\"4\" " .."style=\"vertical-align:middle;text-align:center;\"|"..eintrag[3] result=result.."\n|colspan=\"4\" class=\"hell\" " .."style=\"vertical-align:top;text-align:center;border:1px solid gray;\"|" ..eintrag[4] result=result.."\n|colspan=\"2\" style=\"vertical-align:middle;text-align:left;\"|"..eintrag[5] return result end --Zeile mit den Person function zeile4(eintrag) local result=neueZeile(eintrag) result=result.."\n|colspan=\"4\" style=\"vertical-align:middle;text-align:right;\"|" result=result.."\n|colspan=\"8\" class=\"hell\" " .."style=\"vertical-align:top;text-align:center;border:1px solid gray;\"|" ..eintrag[1] result=result.."\n|colspan=\"4\" style=\"vertical-align:middle;text-align:left;\"|"..eintrag[2] return result end function personEintrag(person) if person==nil or person["Artikel"]=="" then return "" end if person["Langname"]:find("^Vater von ") or person["Langname"]:find("^Mutter von ") then return "" end local wappen2=person["Lehenswappen ist"] if wappen2=="Datei:Wappen blanko.svg" then wappen2=person["Mitgliedswappen ist"] end local result="[["..person["Wappen ist"].."|25x28px|link=]]" .."[["..person["Bild ist"].."|25x28px|link=]]" .."[["..wappen2.."|25x28px|link=]]" .."<br>[["..person["Artikel"].."|"..person["Langname"].."]]" if person["Tsatag Text"]~="" then result=result.."<br>[[Datei:Symbol Tsa-Kirche.svg|15px|link=]]"..person["Tsatag Text"] end if person["Borontag Text"]~="" then result=result.."<br>[[Datei:Symbol Boron-Kirche.svg|15px|link=]]"..person["Borontag Text"] end return result end function personEintragKurz(artikel) if artikel==nil or artikel=="" then return "" end local anzeige=artikel for w in artikel:gmatch("([^:]+)") do anzeige=w end if anzeige:find("^Vater von ") or anzeige:find("^Mutter von ") then return "" end return "[["..artikel.."|"..anzeige.."]]" end --Formatierung der Ausgabe function ausgabe(artikel) local person=holeElternInfos(artikel) local vater=holeElternInfos(person["Vater ist"]) local mutter=holeElternInfos(person["Mutter ist"]) local vatersvater=holeElternInfos(vater["Vater ist"]) local vatersmutter=holeElternInfos(vater["Mutter ist"]) local muttersvater=holeElternInfos(mutter["Vater ist"]) local muttersmutter=holeElternInfos(mutter["Mutter ist"]) local vatersvatersvater=holeElternInfos(vatersvater["Vater ist"]) local vatersvatersmutter=holeElternInfos(vatersvater["Mutter ist"]) local vatersmuttersvater=holeElternInfos(vatersmutter["Vater ist"]) local vatersmuttersmutter=holeElternInfos(vatersmutter["Mutter ist"]) local muttersvatersvater=holeElternInfos(muttersvater["Vater ist"]) local muttersvatersmutter=holeElternInfos(muttersvater["Mutter ist"]) local muttersmuttersvater=holeElternInfos(muttersmutter["Vater ist"]) local muttersmuttersmutter=holeElternInfos(muttersmutter["Mutter ist"]) local kinder=holeKinderInfos(artikel) local result='{| style="font-size:0.8em;width:100%;background:transparent;border:none;"' result=result..zeile0({ [1]=personEintragKurz(vatersvatersvater["Vater ist"]), [2]=personEintragKurz(vatersvatersvater["Mutter ist"]), [3]=personEintragKurz(vatersvatersmutter["Vater ist"]), [4]=personEintragKurz(vatersvatersmutter["Mutter ist"]), [5]=personEintragKurz(vatersmuttersvater["Vater ist"]), [6]=personEintragKurz(vatersmuttersvater["Mutter ist"]), [7]=personEintragKurz(vatersmuttersmutter["Vater ist"]), [8]=personEintragKurz(vatersmuttersmutter["Mutter ist"]), [9]=personEintragKurz(muttersvatersvater["Vater ist"]), [10]=personEintragKurz(muttersvatersvater["Mutter ist"]), [11]=personEintragKurz(muttersvatersmutter["Vater ist"]), [12]=personEintragKurz(muttersvatersmutter["Mutter ist"]), [13]=personEintragKurz(muttersmuttersvater["Vater ist"]), [14]=personEintragKurz(muttersmuttersvater["Mutter ist"]), [15]=personEintragKurz(muttersmuttersmutter["Vater ist"]), [16]=personEintragKurz(muttersmuttersmutter["Mutter ist"]), }) result=result..zeile1({ [1]=personEintrag(vatersvatersvater), [2]=personEintrag(vatersvatersmutter), [3]=personEintrag(vatersmuttersvater), [4]=personEintrag(vatersmuttersmutter), [5]=personEintrag(muttersvatersvater), [6]=personEintrag(muttersvatersmutter), [7]=personEintrag(muttersmuttersvater), [8]=personEintrag(muttersmuttersmutter), }) result=result..zeile2({ [1]=holeAnzahlGeschwister(vatersvater), [2]=personEintrag(vatersvater), [3]=holeTraviabund(vater), [4]=personEintrag(vatersmutter), [5]=holeAnzahlGeschwister(vatersmutter), [6]=holeAnzahlGeschwister(muttersvater), [7]=personEintrag(muttersvater), [8]=holeTraviabund(mutter), [9]=personEintrag(muttersmutter), [10]=holeAnzahlGeschwister(muttersmutter), }) result=result..zeile3({ [1]=holeAnzahlGeschwister(vater), [2]=personEintrag(vater), [3]=holeTraviabund(person), [4]=personEintrag(mutter), [5]=holeAnzahlGeschwister(mutter), }) result=result..zeile4({ [1]=personEintrag(person), [2]=holeAnzahlGeschwister(person), }) result=result.."\n|}" result=result.."\n{| style=\"font-size:0.8em;width:100%;background:transparent;border:none;\"" result=result.."\n|-" local width=100/math.min(10,#kinder) for c = 1, #kinder do result=result.."\n|class=\"hell\" " .."style=\"vertical-align:top;text-align:center;border:1px solid gray;width:"..width.."%\"|" ..personEintrag(kinder[c]) if (c%10)==0 then result=result.."\n|-" end end result=result.."\n|}" return result end --Aufzurufende Funktion function p.ahnentafel(frame) local artikel=robusttrim(frame.args[1]) if(artikel=='') then return '' end return ausgabe(artikel) end return p