Modul:Klasse/Work: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(2 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/Work")
local frm = require("Modul:Formular")
local fab = require("Modul:Faktenbox")
local fab = require("Modul:Faktenbox")


Zeile 114: Zeile 114:
local klasse = fbdata.klasse[kindex or 1]
local klasse = fbdata.klasse[kindex or 1]
local attr_data = p.getAttrData(klasse)
local attr_data = p.getAttrData(klasse)
mw.logObject(attr_data, "attr_data")


-- Zusammenbau
-- Zusammenbau
t = t .. fab.zeileKategorieSeite(fbdata)
t = t .. fab.zeileKategorieSeite(fbdata)
-- EhemalsAttribut ermitteln (gibt es nur 1x)
local ehemals_attribut
for _, a in ipairs(attr_data) do
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
end
t = t .. fab.zeile{fbdata = fbdata, attr_name = "Objekt"}
-- Rest der Tabelle
t = t .. fab.zeile{fbdata = fbdata, attr_name = "TeilDesEnsembles", delimiter = ";"}
t = t .. fab.zeile{fbdata = fbdata, attr_name = "TeilDesAreals", delimiter = ";"}
t = t .. fab.zeile{fbdata = fbdata, attr_name = "Straße", delimiter = ";"}
t = t .. fab.zeile{fbdata = fbdata, attr_name = "Gebäude", delimiter = ";"}
t = t .. fab.zeile{fbdata = fbdata, attr_name = "Ort", delimiter = ";"}
t = t .. fab.zeile{fbdata = fbdata, attr_name = "Baustil", delimiter = ";"}
t = t .. fab.zeile{fbdata = fbdata, attr_name = "Architekt", delimiter = ";"}
t = t .. fab.zeile{fbdata = fbdata, attr_name = "Künstler", delimiter = ";"}
t = t .. fab.zeile{fbdata = fbdata, attr_name = "Bauherr", delimiter = ";"}
t = t .. fab.zeile{fbdata = fbdata, attr_name = "Maurermeister", delimiter = ";"}
t = t .. fab.zeile{fbdata = fbdata, attr_name = "Baujahr", delimiter = ";"}
t = t .. fab.zeile{fbdata = fbdata, attr_name = "DenkmalstatusBesteht"}
t = t .. fab.zeileAktenNr(fbdata)
t = t .. fab.zeile{fbdata = fbdata, attr_name = "Quellangaben", delimiter = ";"}
t = t .. fab.zeileEndeJahr{fbdata = fbdata, attr_year = "Abrissjahr", attr_ended = "Ehemals", delimiter = ";"}
t = t .. fab.zeileGeoDaten(fbdata)
t = fab.table_header_footer(t)
t = fab.table_header_footer(t)
t = t .. fab.zeileSemantikBrowsenAbfrage(fbdata)
t = t .. fab.zeileSemantikBrowsenAbfrage(fbdata)

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