Modul:Gebäude: Unterschied zwischen den Versionen

div. Optimierungen
(geänderte zeileKategorieSeite())
(div. Optimierungen)
Zeile 14: Zeile 14:
-- mw.logObject(frame)
-- mw.logObject(frame)


-- Konsolenzeile zum Debuggen
-- Konsolenzeile zum Debuggen:
-- =p.Faktenbox({parentargs={Bild="Schwabacher Straße 12 Dez 2020 1.jpg",["Straße"]="Erlanger Straße",Hausnummer=" 11; 13 ;"}})
-- =p.Faktenbox({parentargs={Bild="Schwabacher Straße 12 Dez 2020 1.jpg",["Straße"]="Erlanger Straße",Hausnummer=" 11; 13 ;"}})
local args, noframe = dev.GetParentArgs(frame)
local args, noframe = dev.GetParentArgs(frame)
Zeile 23: Zeile 23:
mw.smw.set("KlassenName = " .. klasse)
mw.smw.set("KlassenName = " .. klasse)


-- Straße/Hausnummer Formular-Eingaben analysieren
-- Straße/Hausnummer Formular-Eingaben analysieren, Postleitzahl ermitteln
local strasseHnr = p.strasseHnrParser(args)
local strasse_hnr = p.strasseHnrParser(args)
local plz = p.getPlz(strasse_hnr)


-- Postleitzahl ermitteln
-- Tabs einsammeln
local plz = ""
local bild_tab = fab.bildTab(args["Bild"])
if #strasseHnr.strasse > 0 and not strasseHnr.strasse[1].suspekt then
local karten_tab = p.kartenTab(frame, args, noframe)
-- Es wird angenommen, dass alle Gebäude die gleiche PLZ haben. Hausnummer muss nicht vorhanden sein
local daten_tab = p.datenTab{
plz = geo.getPLZ(strasseHnr.strasse[1].name, strasseHnr.strasse[1].hausnummer[1])
frame = frame, args = args, klasse = klasse, kategorie = kategorie,
else
plz = plz, strasse_hnr = strasse_hnr, geo = true, noframe = noframe
end
 
-- Bilder-Tab bauen
local bildTab = fab.bildTab(args["Bild"])
if bildTab ~= "" then
bildTab = '<tab name = Bild>' .. bildTab .. '</tab>'
end
 
-- Karten-Tab bauen
local kartenTab
local pagename = wik.pagename()
if string.find(pagename, ";") ~= nil then
kartenTab = "Semikolon im Artikel-/Seitennamen für korrekte Kartendarstellung nicht erlaubt!"
else
kartenTab = p.kartenTab(frame, args, noframe)
end
if kartenTab ~= "" then
kartenTab = '<tab name = Karte>' .. kartenTab .. '</tab>'
end
 
-- Daten-Tab bauen (immer vorhanden)
local datenTab = p.datenTab{
frame = frame,
args = args,
klasse = klasse,
kategorie = kategorie,
plz = plz,
strasseHnr = strasseHnr,
geo = true,
noframe = noframe
}
}
local datenTab = '<tab name = Daten>' .. datenTab .. '</tab>' -- immer vorhanden
local personen_tab = p.residenzTab("Personen, die hier wohnen bzw. gewohnt haben:", "Person", "Personen")
 
local unternehmen_tab = p.residenzTab("Unternehmen, die hier ansässig sind/waren:", "Unternehmen", "Unternehmen")
-- Personen-Tab bauen
local personenTab = p.residenzTab("Personen, die hier wohnen bzw. gewohnt haben:", "Person")
if personenTab ~= "" then
personenTab = '<tab name = Personen>' .. personenTab .. '</tab>'
end
 
-- Unternehmen-Tab bauen
local unternehmenTab = p.residenzTab("Unternehmen, die hier ansässig sind/waren:", "Unternehmen")
if unternehmenTab ~= "" then
unternehmenTab = '<tab name = Unternehmen>' .. unternehmenTab .. '</tab>'
end


-- Tabs zusammenfügen
-- Tabs zusammenfügen
local box =  
local box =  
"<div class = factbox><tabs>" ..
"<div class = factbox><tabs>" ..
bildTab ..
bild_tab ..
kartenTab ..
karten_tab ..
datenTab ..
daten_tab ..
personenTab ..
personen_tab ..
unternehmenTab ..
unternehmen_tab ..
"</tabs></div>"
"</tabs></div>"


-- Sonstige gemeinsame Dinge anfügen (Formular, Kategorien, Wartung, ...)
-- Sonstige gemeinsame Dinge anfügen (Formular, Kategorien, Wartung, ...)
box = box .. fab.common{
box = box .. fab.common{
klasse = klasse,
klasse = klasse, kategorie = kategorie, denkmalstatusbesteht = args["DenkmalstatusBesteht"],
kategorie = kategorie,
bild = args["Bild"], strasse_hnr = strasse_hnr, positionscheck = true, formular = formular
denkmalstatusbesteht = args["DenkmalstatusBesteht"],
bild = args["Bild"],
strasseHnr = strasseHnr,
positionscheck = true,
formular = formular
}
}
-- mw.log("box = " .. box)
-- mw.log("box = " .. box)


-- Use preprocess to render the factbox and all contens at once
-- Pre-Rendern und String-Länge checken
if not noframe then
if not noframe then
box = frame:preprocess(box)
box = frame:preprocess(box)
end
end
box = box .. com.returnStringCheck(box)
box = box .. com.returnStringCheck(box)
-- mw.log("box = " .. box)
-- mw.log("box = " .. box)
Zeile 112: Zeile 66:
-- mw.log("datenTab(args)")
-- mw.log("datenTab(args)")
-- mw.logObject(args)
-- mw.logObject(args)
-- Konsolenzeile zum Debuggen als Startpunkt:
-- Konsolenzeile zum Debuggen:
-- =p.datenTab({noframe=true,klasse="Gebäude",kategorie="Gebäude",positionscheck=true,work=true,args={},strasseHnr={strasse={}}})
-- =p.datenTab({noframe=true,klasse="Gebäude",kategorie="Gebäude",positionscheck=true,work=true,args={},strasse_hnr={strasse={}}})
local t = ""
local t = ""


local teilDesGebaeudeKomplexes = args.args["TeilDesGebäudeKomplexes"] or ""
-- Teil Des Gebäude Komplexes ermitteln und mergen
teilDesGebaeudeKomplexes = str.splitAndStrip(teilDesGebaeudeKomplexes, ";")
local teil_des_gebaeude_komplexes = args.args["TeilDesGebäudeKomplexes"] or ""
teil_des_gebaeude_komplexes = str.splitAndStrip(teil_des_gebaeude_komplexes, ";")
local query = "[[:+]][[!" .. wik.pagename() .. "]][[Kategorie:Gebäude]][[StraßeHnr::" .. wik.subpagename() .. "]] [[AnzahlGebäude::>2]]"
local query = "[[:+]][[!" .. wik.pagename() .. "]][[Kategorie:Gebäude]][[StraßeHnr::" .. wik.subpagename() .. "]] [[AnzahlGebäude::>2]]"
-- mw.log("query = " .. query)
-- mw.log("query = " .. query)
local query_result = que.getPages(query, true)
local query_result = que.getPages(query, true)
-- mw.logObject(query_result)
-- mw.logObject(query_result)
teilDesGebaeudeKomplexes = com.append_tables(teilDesGebaeudeKomplexes, query_result)
teil_des_gebaeude_komplexes = com.append_tables(teil_des_gebaeude_komplexes, query_result)


-- Zusammenbau
t = t .. "<dl class = 'dataTable'>"
t = t .. "<dl class = 'dataTable'>"
t = t .. fab.zeileKategorieSeite(args.klasse, args.kategorie)
t = t .. fab.zeileKategorieSeite(args.klasse, args.kategorie)
t = t .. fab.zeileStrasseHnr(args.strasseHnr)
t = t .. fab.zeileStrasseHnr(args.strasse_hnr)
t = t .. fab.zeile("PLZ", args.plz)
t = t .. fab.zeile("PLZ", args.plz)
t = t .. fab.zeile("Objekt", args.args["Objekt"])
t = t .. fab.zeile("Objekt", args.args["Objekt"])
t = t .. fab.zeile("TeilDesEnsembles", args.args["TeilDesEnsembles"], "Teil des Ensembles")
t = t .. fab.zeile("TeilDesEnsembles", args.args["TeilDesEnsembles"], "Teil des Ensembles")
t = t .. fab.zeile("TeilDesAreals", args.args["TeilDesAreals"], "Teil des Areals")
t = t .. fab.zeile("TeilDesAreals", args.args["TeilDesAreals"], "Teil des Areals")
t = t .. fab.zeile("TeilDesGebäudeKomplexes", teilDesGebaeudeKomplexes, "Teil des Gebäude-Komplexes")
t = t .. fab.zeile("TeilDesGebäudeKomplexes", teil_des_gebaeude_komplexes, "Teil des Gebäude-Komplexes")
t = t .. fab.zeile("Baujahr", args.args["Baujahr"])
t = t .. fab.zeile("Baujahr", args.args["Baujahr"])
t = t .. fab.zeile("Ehemals", args.args["Ehemals"])
t = t .. fab.zeile("Ehemals", args.args["Ehemals"])
Zeile 144: Zeile 100:
t = t .. "</dl>"
t = t .. "</dl>"
t = t .. fab.faktenboxSemantikBrowsen()
t = t .. fab.faktenboxSemantikBrowsen()
 
-- Tab draus machen
t = fab.tab(t, args.tabname or "Daten")
-- mw.log("t = " .. t)
-- mw.log("t = " .. t)
     return t
     return t
Zeile 154: Zeile 112:
-- mw.logObject(args)
-- mw.logObject(args)
t = ""
t = ""
if noframe then
local pagename = wik.pagename()
if string.find(pagename, ";") ~= nil then
t = "Semikolon im Artikel-/Seitennamen für korrekte Kartendarstellung nicht erlaubt!"
elseif noframe then
t = "Dummy-Karten-Tab (noframe)" ..
t = "Dummy-Karten-Tab (noframe)" ..
",lat=" .. (lat or "nil") ..
",lat=" .. (lat or "nil") ..
Zeile 164: Zeile 125:
t = frame:expandTemplate{title = 'Gebäude/Karte', args = args}
t = frame:expandTemplate{title = 'Gebäude/Karte', args = args}
end
end
if t:gsub("%s+", "") == '' then
 
t = ""
-- Tab draus machen
end
t = fab.tab(t, "Karte")
-- mw.log("t = " .. t)
-- mw.log("t = " .. t)
return t
return t
Zeile 174: Zeile 135:
-- mw.log("strasseHnrProcessor(args)")
-- mw.log("strasseHnrProcessor(args)")
-- mw.logObject(args)
-- mw.logObject(args)
-- Konsolenzeile zum Debuggen als Startpunkt:
-- Konsolenzeile zum Debuggen:
-- p.strasseHnrParser({["Straße"]="Elanger Straße",["Hausnummer"]="11;13",["Straße2"]="",["Hausnummer2"]="",["Straße3"]="",["Hausnummer3"]=""})
-- p.strasseHnrParser({["Straße"]="Elanger Straße",["Hausnummer"]="11;13",["Straße2"]="",["Hausnummer2"]="",["Straße3"]="",["Hausnummer3"]=""})
local result = {}
local result = {}
Zeile 181: Zeile 142:
result.anzahlGebaeude = 0
result.anzahlGebaeude = 0


local strasseHnr = {
local strasse_hnr = {
{args["Straße"]  or "", args["Hausnummer"]  or ""},
{args["Straße"]  or "", args["Hausnummer"]  or ""},
{args["Straße2"] or "", args["Hausnummer2"] or ""},
{args["Straße2"] or "", args["Hausnummer2"] or ""},
Zeile 187: Zeile 148:
}
}


for _, sh in ipairs(strasseHnr) do -- Straße/Hausnummern-Kombis durchitereieren
for _, sh in ipairs(strasse_hnr) do -- Straße/Hausnummern-Kombis durchitereieren
local s = str.strip(sh[1] or "") -- Straße
local s = str.strip(sh[1]) -- Straße
local hl = str.strip(sh[2] or "") -- Hausnummernliste
local hl = str.strip(sh[2]) -- Hausnummernliste
if s == "" then -- kein Problem, wenn eine Straße/Hausnummer-Kombi komplett fehlt (nicht im Formular angegeben)
if s == "" then -- kein Problem, wenn eine Straße/Hausnummer-Kombi komplett fehlt (nicht im Formular angegeben)
if hl ~= "" then -- aber Problem bei fehlender Straße, aber Hausnummernliste vorhanden
if hl ~= "" then -- aber Problem bei fehlender Straße, aber Hausnummernliste vorhanden
Zeile 199: Zeile 160:
entry.hausnummer = {}
entry.hausnummer = {}
entry.suspekt = false
entry.suspekt = false
if hl == "" then
if hl == "" then -- leere Hausnummernliste
result.suspekt = true -- leere Hausnummernliste
result.suspekt = true
entry.suspekt = true
entry.suspekt = true
else
else
hl = str.splitAndStrip(hl, ";") -- Liste in table umwandeln
hl = str.splitAndStrip(hl, ";") -- Liste in table umwandeln
for _, h in ipairs(hl) do -- Hausnummern durchitereieren
for _, h in ipairs(hl) do -- Hausnummern durchitereieren
if h == "" then
if h == "" then -- leere Hausnummer
result.suspekt = true -- leere Hausnummernliste
result.suspekt = true
entry.suspekt = true
entry.suspekt = true
else
else
Zeile 221: Zeile 182:
end
end


function p.residenzTab(ueberschrift, klasse)
function p.residenzTab(ueberschrift, klasse, kategorie)
-- mw.log("residenzTab(" .. (klasse or "nil") .. ")")
-- mw.log("residenzTab(" .. (klasse or "nil") .. ")")
local t = ""
local t = ""
 
-- DB-Abfrage
local query = "[[:+]][[-Has subobject::+]][[SubObjektTyp::Adresse]][[VonObjekt::" .. wik.subpagename() .. "]][[-Has subobject.KlassenName::" .. klasse .. "]]"
local query = "[[:+]][[-Has subobject::+]][[SubObjektTyp::Adresse]][[VonObjekt::" .. wik.subpagename() .. "]][[-Has subobject.KlassenName::" .. klasse .. "]]"
query = query .. "|?-has subobject.Seite = Seite|?Adressart|?AdresseVon#-F[j. F Y]|?AdresseBis#-F[j. F Y]|mainlabel = -|limit = 100"
query = query .. "|?-has subobject.Seite = Seite|?Adressart|?AdresseVon#-F[j. F Y]|?AdresseBis#-F[j. F Y]|mainlabel = -|limit = 100"
local askResult = mw.smw.ask(query)
local ask_result = mw.smw.ask(query)
-- mw.logObject(askResult)
-- mw.logObject(ask_result)
if askResult ~= nil then
 
for i, z in ipairs(askResult) do -- Ergebniszeile durchiterieren
-- Zeilen zusammenbauen
if ask_result ~= nil then
for i, z in ipairs(ask_result) do -- Ergebniszeile durchiterieren
if i == 1 then
if i == 1 then
t = t .. ueberschrift .. "\n" -- Text vor der eigentlichen Liste
t = t .. ueberschrift .. "\n" -- Text vor der eigentlichen Liste
Zeile 258: Zeile 221:
end
end
end
end
-- Tab draus machen
t = fab.tab(t, kategorie)
-- mw.log("t = " .. t)
-- mw.log("t = " .. t)
return t
return t
end
function p.getPlz(strasse_hnr)
-- mw.log("getPlz(strasse_hnr)")
-- mw.logObject(strasse_hnr)
-- Konsolenzeile zum Debuggen:
-- =p.getPlz({strasse = {{name = "Erlanger Straße", hausnummer = {"11", "13"}}, {name = "XY Straße" , hausnummer = {}}}})
local plz = ""
if #strasse_hnr.strasse > 0 and not strasse_hnr.strasse[1].suspekt then
-- Es wird angenommen, dass alle Gebäude die gleiche PLZ haben. Hausnummer muss nicht vorhanden sein
plz = geo.getPLZ(strasse_hnr.strasse[1].name, strasse_hnr.strasse[1].hausnummer[1])
else
end
-- mw.log("plz = " .. plz)
return plz
end
end


return p
return p