Modul:Klasse/Work: Unterschied zwischen den Versionen
Aus FürthWiki
(Die Seite wurde neu angelegt: „local p = {} local com = require("Module:Common") local str = require("Module:String") local atr = require("Module:Attribut") function p.Faktenbox( frame ) local args = frame:getParent().args local t = p.daten( frame, args ) -- Use preprocess to render the factbox and all contens at once return frame:preprocess(t) end function p.daten(frame, args) local title = mw.title.getCurrentTitle().text local t = '<table class="wikitable">'.. '<th>[[…“) |
Keine Bearbeitungszusammenfassung |
||
| (4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 4: | Zeile 4: | ||
local str = require("Module:String") | local str = require("Module:String") | ||
local atr = require("Module:Attribut") | local atr = require("Module:Attribut") | ||
local frm = require("Modul:Formular") | |||
local fab = require("Modul:Faktenbox") | |||
function p.Faktenbox( frame ) | function p.Faktenbox( frame ) | ||
| Zeile 82: | Zeile 84: | ||
attributliste = str.splitAndStrip(attributliste, ";") | attributliste = str.splitAndStrip(attributliste, ";") | ||
if #attributliste > 0 then | if #attributliste > 0 then | ||
attr_data | attr_data = {} | ||
for i, a in ipairs(attributliste) do | for i, a in ipairs(attributliste) do | ||
attr_data | attr_data[i] = atr.getAttrAttributes(a, klasse) | ||
attr_data | attr_data[i]["Attribut"] = a | ||
end | end | ||
end | end | ||
end | end | ||
return attr_data | return attr_data | ||
end | |||
function p.Formular(frame, klasse) | |||
-- Kommandozeile zum Debuggen: | |||
-- frame=mw.getCurrentFrame(); print(p.Formular(frame, "Bauwerk")) | |||
local t = "" | |||
local attr_data = p.getAttrData(klasse) | |||
t = frm.attrForm(frame, attr_data) | |||
return t | |||
end | |||
function p.faktenboxDatenTab(fbdata, kindex) | |||
-- mw.log("datenTab(fbdata)") | |||
-- mw.logObject(frame, "frame") | |||
--[[ Konsolenzeile zum Debuggen: | |||
fab=require("Modul:Faktenbox"); fbdata=fab.getFbdata{pargs={Baujahr="1987",AktenNr="D-5-63-000-1464"}}; | |||
fbdata.klasse={"Bauwerk"}; fbdata.kategorie={"Bauwerke"}; fbdata.fullpagename="Pegnitz"; fbdata.subpagename="Pegnitz"; | |||
print(p.faktenboxDatenTab(fbdata)) | |||
]] | |||
local t = "" | |||
local klasse = fbdata.klasse[kindex or 1] | |||
local attr_data = p.getAttrData(klasse) | |||
-- Zusammenbau | |||
t = t .. fab.zeileKategorieSeite(fbdata) | |||
-- EhemalsAttribut ermitteln (gibt es nur 1x) | |||
local ehemals_attribut | |||
for _, a in ipairs(attr_data) do | |||
if a["EhemalsAttribut"] ~= nil then | |||
ehemals_attribut = a["EhemalsAttribut"] | |||
break | |||
end | |||
end | |||
-- Attribut-Zeilen | |||
for _, a in ipairs(attr_data) do | |||
local attr = a["Attribut"] | |||
local delimiter = a["Delimiter"] | |||
if a["Attribut"] == "AktenNr" then -- Denkmalschutz Akten-Nummer | |||
t = t .. fab.zeileAktenNr(fbdata) | |||
elseif a["EhemalsAttribut"] ~= nil then -- Kombi von Ehemals-Attribut und Ende-Datum/Jahr | |||
t = t .. fab.zeileEndeJahr{fbdata = fbdata, -- Z. B. Ehemals bei Abrissjahr, Verstorben bei Todesdatum | |||
attr_year = attr, attr_ended = a["EhemalsAttribut"], | |||
delimiter = delimiter} | |||
elseif attr ~= ehemals_attribut and attr ~= "Bild" then | |||
t = t .. fab.zeile{fbdata = fbdata, attr_name = attr, | |||
delimiter = delimiter} | |||
end | |||
end | |||
-- Rest der Tabelle | |||
t = fab.table_header_footer(t) | |||
t = t .. fab.zeileSemantikBrowsenAbfrage(fbdata) | |||
-- Tab draus machen | |||
t = fab.tab(t, "Daten") | |||
-- mw.logObject(t, "t") | |||
return t | |||
end | end | ||
return p | return p | ||
Aktuelle Version vom 17. Februar 2026, 19:31 Uhr
Die Dokumentation für dieses Modul kann unter Modul:Klasse/Work/Doku erstellt werden
local p = {}
local com = require("Module:Common")
local str = require("Module:String")
local atr = require("Module:Attribut")
local frm = require("Modul:Formular")
local fab = require("Modul:Faktenbox")
function p.Faktenbox( frame )
local args = frame:getParent().args
local t = p.daten( frame, args )
-- Use preprocess to render the factbox and all contens at once
return frame:preprocess(t)
end
function p.daten(frame, args)
local title = mw.title.getCurrentTitle().text
local t = '<table class="wikitable">'..
'<th>[[FürthWiki:Semantik]]</th>'..
'<th colspan="3">'..'[[KlassenName::'..title..']]</th>'
t=t..'<tr>'..
'<td>[[Attribut:Bild|Bild dieser Klasse]]</td>'
if not com.isEmpty(args.Bild) then
t=t..'<td colspan="3"><div class="ImageLink">[[Datei:'..
args.Bild..'|48px]]</div></td>'
mw.smw.set{["Bild"] = "Datei:" .. args.Bild}
end
t=t..'</tr><tr>'..
'<td>[[Attribut:KlassenVorlage|Vorlage]]</td>'
t=t..'<td colspan="3">[[KlassenVorlage::Vorlage:'..title..']]</td>'
t=t..'</tr><tr>'..
'<td>[[Attribut:KlassenModul|Modul]]</td>'
t=t..'<td colspan="3">[[KlassenModul::Modul:'..title..']]</td>'
t=t..'</tr><tr>'..
'<td>[[Attribut:KlassenKategorie|Kategorie]]</td>'
if not com.isEmpty(args.KlassenKategorie) then
t=t..'<td colspan="3">[[KlassenKategorie::Kategorie:'..args.KlassenKategorie..']]</td>'
end
t=t..'</tr><tr>'..
'<td>[[Attribut:KlassenFormular|Formular]]</td>'
t=t..'<td colspan="3">[[KlassenFormular::Formular:'..title..']]</td>'
t=t..'</tr><tr>'..
'<td>[[Attribut:Suchformular|Suchformular]]</td>'
if not com.isEmpty(args.KlassenKategorie) then
t=t..'<td colspan="2">[[Suchformular::Abfrage_'..args.KlassenKategorie..']]</td>'..
'<td>[[Formular:Abfrage_'..args.KlassenKategorie..']]</td>'
end
t=t..'</tr><tr>'..
'<td>[[Attribut:Suchvorlage|Suchvorlage]]</td>'
if not com.isEmpty(args.KlassenKategorie) then
t=t..'<td colspan="2">[[Suchvorlage::Abfrage_'..args.KlassenKategorie..']]</td>'..
'<td>[[Spezial:Abfrage_ausführen/Abfrage_'..args.KlassenKategorie..']]</td>'
end
t=t..'</tr><tr>'..
'<td>[[Attribut:AttributListe|AttributListe]]</td>'
if not com.isEmpty(args.AttributListe) then
t=t..'<td colspan="3">[[AttributListe::'..args.AttributListe..']]</td>'
end
t=t..'<tr>'..
'<td>[[Bild:IconSearch.svg|16px|semantisches Browsen|link=Spezial:Durchsuchen/{{NAMESPACE}}:{{PAGENAME}}]]</td>'..
'<td colspan="3">[[Spezial:Durchsuchen/{{NAMESPACE}}:{{PAGENAME}}|semantisches Browsen]]</td>'..
'</tr>'
t=t..'</table>'
return t
end
function p.getAttrData(klasse)
local attr_data = {}
local query = {"[[Klasse:" .. klasse .. "]]",
"?AttributListe"}
query = mw.smw.ask(query)
if query ~= nil then
local attributliste = query[1]["AttributListe"]
attributliste = str.splitAndStrip(attributliste, ";")
if #attributliste > 0 then
attr_data = {}
for i, a in ipairs(attributliste) do
attr_data[i] = atr.getAttrAttributes(a, klasse)
attr_data[i]["Attribut"] = a
end
end
end
return attr_data
end
function p.Formular(frame, klasse)
-- Kommandozeile zum Debuggen:
-- frame=mw.getCurrentFrame(); print(p.Formular(frame, "Bauwerk"))
local t = ""
local attr_data = p.getAttrData(klasse)
t = frm.attrForm(frame, attr_data)
return t
end
function p.faktenboxDatenTab(fbdata, kindex)
-- mw.log("datenTab(fbdata)")
-- mw.logObject(frame, "frame")
--[[ Konsolenzeile zum Debuggen:
fab=require("Modul:Faktenbox"); fbdata=fab.getFbdata{pargs={Baujahr="1987",AktenNr="D-5-63-000-1464"}};
fbdata.klasse={"Bauwerk"}; fbdata.kategorie={"Bauwerke"}; fbdata.fullpagename="Pegnitz"; fbdata.subpagename="Pegnitz";
print(p.faktenboxDatenTab(fbdata))
]]
local t = ""
local klasse = fbdata.klasse[kindex or 1]
local attr_data = p.getAttrData(klasse)
-- Zusammenbau
t = t .. fab.zeileKategorieSeite(fbdata)
-- EhemalsAttribut ermitteln (gibt es nur 1x)
local ehemals_attribut
for _, a in ipairs(attr_data) do
if a["EhemalsAttribut"] ~= nil then
ehemals_attribut = a["EhemalsAttribut"]
break
end
end
-- Attribut-Zeilen
for _, a in ipairs(attr_data) do
local attr = a["Attribut"]
local delimiter = a["Delimiter"]
if a["Attribut"] == "AktenNr" then -- Denkmalschutz Akten-Nummer
t = t .. fab.zeileAktenNr(fbdata)
elseif a["EhemalsAttribut"] ~= nil then -- Kombi von Ehemals-Attribut und Ende-Datum/Jahr
t = t .. fab.zeileEndeJahr{fbdata = fbdata, -- Z. B. Ehemals bei Abrissjahr, Verstorben bei Todesdatum
attr_year = attr, attr_ended = a["EhemalsAttribut"],
delimiter = delimiter}
elseif attr ~= ehemals_attribut and attr ~= "Bild" then
t = t .. fab.zeile{fbdata = fbdata, attr_name = attr,
delimiter = delimiter}
end
end
-- Rest der Tabelle
t = fab.table_header_footer(t)
t = t .. fab.zeileSemantikBrowsenAbfrage(fbdata)
-- Tab draus machen
t = fab.tab(t, "Daten")
-- mw.logObject(t, "t")
return t
end
return p