Modul:Gebäude: Unterschied zwischen den Versionen

+ Gaststätten/Einrichtungen-Tab, div. Überarbeitungen
(+ "seit")
(+ Gaststätten/Einrichtungen-Tab, div. Überarbeitungen)
Zeile 6: Zeile 6:
local smw = require("Modul:SMW")
local smw = require("Modul:SMW")
local wik = require("Modul:Wiki")
local wik = require("Modul:Wiki")
local lfd = require("Modul:LinkFormDatum")
local fab = require("Modul:Faktenbox")
local fab = require("Modul:Faktenbox")
local kar = require("Modul:Karte")
local kar = require("Modul:Karte")


function p.Faktenbox(frame)
function p.Faktenbox(frame)
-- mw.log("Faktenbox(frame)")
-- mw.logObject(frame, "frame")
local t = ""
local t = ""


Zeile 38: Zeile 37:
p.datenTab(fbdata) ..
p.datenTab(fbdata) ..
p.residenzTab(fbdata, {ueberschrift = "Personen, die hier wohnen bzw. gewohnt haben:", klasse = "Person", kategorie="Personen"}) ..
p.residenzTab(fbdata, {ueberschrift = "Personen, die hier wohnen bzw. gewohnt haben:", klasse = "Person", kategorie="Personen"}) ..
p.residenzTab(fbdata, {ueberschrift = "Unternehmen, die hier ansässig sind/waren:", klasse = "Unternehmen", kategorie="Unternehmen"})
p.residenzTab(fbdata, {ueberschrift = "Unternehmen, die hier ansässig sind/waren:", klasse = "Unternehmen", kategorie="Unternehmen"}) ..
p.residenzTab(fbdata, {ueberschrift = "Einrichtungen, die hier ansässig sind/waren:", klasse = "Einrichtung", kategorie="Einrichtungen"}) ..
p.gaststaettenTab(fbdata)
t = fab.factbox_header_footer(t)
t = fab.factbox_header_footer(t)


Zeile 46: Zeile 47:


-- Pre-Processing und String-Länge checken
-- Pre-Processing und String-Länge checken
-- mw.logObject(t, "t")
t = fbdata.frame:preprocess(t)
t = fbdata.frame:preprocess(t)
return t
return t
Zeile 52: Zeile 52:


function p.datenTab(fbdata, args)
function p.datenTab(fbdata, args)
-- mw.log("datenTab(fbdata, args)")
-- mw.logObject(fbdata, "fbdata")
-- mw.logObject(args, "args")
--[[ Konsolenzeile zum Debuggen (Achtung! Bug in Fehlerbereinigungskonsole! Kann nur 1x ausgeführt werden!):
--[[ Konsolenzeile zum Debuggen (Achtung! Bug in Fehlerbereinigungskonsole! Kann nur 1x ausgeführt werden!):
fab=require("Modul:Faktenbox/Work");
fab=require("Modul:Faktenbox/Work");
Zeile 108: Zeile 105:
-- Tab draus machen
-- Tab draus machen
t = fab.tab(t, args.tabname or "Daten")
t = fab.tab(t, args.tabname or "Daten")
-- mw.logObject(t, "t")
     return t
     return t
end
end


function p.kartenTab(fbdata)
function p.kartenTab(fbdata)
-- mw.log("kartenTab(fbdata)")
-- mw.logObject(fbdata, "fbdata")
-- Konsolenzeile zum Debuggen:
-- Konsolenzeile zum Debuggen:
-- fab=require("Modul:Faktenbox/Work"); fbdata=fab.fbdata{pargs={["Straße"]="Erlanger Straße",["Hausnummer"]="11"}}; fbdata.plz=90765; print(p.kartenTab(fbdata))
-- fab=require("Modul:Faktenbox/Work"); fbdata=fab.fbdata{pargs={["Straße"]="Erlanger Straße",["Hausnummer"]="11"}}; fbdata.plz=90765; print(p.kartenTab(fbdata))
Zeile 138: Zeile 132:
args["location"] = nil
args["location"] = nil
-- Karte erstellen
-- Karte erstellen
-- mw.logObject(args, "args")
local t_karte = ""
local t_karte = ""
if kar.kartenArgsVorhanden(args) or not com.isTrue(args["Ehemals"]) then
if kar.kartenArgsVorhanden(args) or not com.isTrue(args["Ehemals"]) then
Zeile 147: Zeile 140:
-- Tab draus machen
-- Tab draus machen
t = fab.tab(t, "Karte")
t = fab.tab(t, "Karte")
-- mw.logObject(t, "t")
return t
return t
end
end


function p.strasseHnrParser(fbdata)
function p.strasseHnrParser(fbdata)
-- mw.log("strasseHnrProcessor(fbdata)")
-- mw.logObject(fbdata.pargs, "fbdata.pargs")
-- Konsolenzeile zum Debuggen:
-- Konsolenzeile zum Debuggen:
-- p.strasseHnrParser{pargs={["Straße"]="Elanger Straße",["Hausnummer"]="11;13",["Straße2"]="Frühlingstraße",["Hausnummer2"]="",["Straße3"]="",["Hausnummer3"]=""}}
-- p.strasseHnrParser{pargs={["Straße"]="Elanger Straße",["Hausnummer"]="11;13",["Straße2"]="Frühlingstraße",["Hausnummer2"]="",["Straße3"]="",["Hausnummer3"]=""}}
Zeile 199: Zeile 189:
end
end
end
end
-- mw.logObject(result, "result")
return result
return result
end
end


function p.residenzTab(fbdata, args)
function p.residenzTab(fbdata, args)
-- mw.log("residenzTab(fbdata, args)")
-- mw.logObject(fbdata, "fbdata")
-- mw.logObject(args, "args")
-- Konsolenzeile zum Debuggen:
-- Konsolenzeile zum Debuggen:
-- =p.residenzTab({subpagename="Schwabacher Straße 12",fullpagename="Schwabacher Straße 12",strasse_hnr={strasse={{name="Schwabacher Straße",hausnummer={"12"}}}}}, "Unternehmen, die hier ansässig sind/waren:", "Unternehmen", "Unternehmen")
-- =p.residenzTab({subpagename="Schwabacher Straße 12",fullpagename="Schwabacher Straße 12",strasse_hnr={strasse={{name="Schwabacher Straße",hausnummer={"12"}}}}}, "Unternehmen, die hier ansässig sind/waren:", "Unternehmen", "Unternehmen")
Zeile 212: Zeile 198:


-- DB-Abfrage
-- DB-Abfrage
local query = "[[:+]][[-Has subobject::+]][[SubObjektTyp::Adresse]][[VonObjekt::" .. fbdata.subpagename.. "]][[-Has subobject.KlassenName::" .. args.klasse .. "]]"
local query = {"[[:+]][[-Has subobject::+]][[SubObjektTyp::Adresse]]" ..
query = query .. "|?-has subobject.Seite#-=Seite|?Adressart|?AdresseVon#LOCL|?AdresseBis#LOCL|mainlabel=-|limit=100"
"[[Gebäude::" .. fbdata.pagename.. "]]" ..
local ask_result = mw.smw.ask(query)
"[[-Has subobject.KlassenName::" .. args.klasse .. "]]",
-- mw.logObject(ask_result, "ask_result")
"?-has subobject=", "?Adressart", "?AdresseVon", "?AdresseBis",
["mainlabel"] = "-", ["limit"]=100}
query = mw.smw.ask(query) or {}


-- Zeilen zusammenbauen
-- Zeilen zusammenbauen
for i, z in ipairs(ask_result or {}) do -- Ergebniszeile durchiterieren
for i, z in ipairs(query) do -- Ergebniszeile durchiterieren
if i == 1 then
if i == 1 then
t = t .. args.ueberschrift .. "\n" -- Text vor der eigentlichen Liste
t = t .. args.ueberschrift .. "\n" -- Text vor der eigentlichen Liste
end
end
t = t .. "* [[" .. z.Seite .. "]]" -- immer vorhanden
t = t .. "* " .. z[1] -- immer vorhanden
z.Adressart = z.Adressart or "" -- nicht immer vorhanden (nil)
local vonbis = p.vonBisText(z.AdresseVon, z.AdresseBis)
z.AdresseVon = z.AdresseVon or "" -- nicht immer vorhanden (nil)
if z.Adressart ~= nil or vonbis ~= nil then
z.AdresseBis = z.AdresseBis or "" -- nicht immer vorhanden (nil)
local l = {z.Adressart}
-- jede Kombination kann vorkommen
table.insert(l, vonbis)
if z.Adressart ~= "" or z.AdresseVon ~= "" or z.AdresseBis ~= "" then
t = t .. " (" .. table.concat(l, ", ") .. ")"
t = t .. " (" .. z.Adressart -- kein Problem, wenn leer
if z.Adressart ~= "" and (z.AdresseVon ~= "" or z.AdresseBis ~= "") then
t = t .. " "
end
if z.AdresseVon ~= "" then
if z.AdresseBis ~= "" then
t = t .. "von "
else
t = t .. "seit "
end
t = t .. z.AdresseVon
end
if (z.Adressart ~= "" or z.AdresseVon ~= "") and z.AdresseBis ~= "" then
t = t .. " "
end
if z.AdresseBis ~= "" then
t = t .. "bis " .. z.AdresseBis
end
t = t .. ")"
end
end
t = t .. "\n"
t = t .. "\n"
Zeile 278: Zeile 247:
-- Tab draus machen
-- Tab draus machen
t = fab.tab(t, args.kategorie)
t = fab.tab(t, args.kategorie)
-- mw.logObject(t, "t")
return t
end
 
function p.gaststaettenTab(fbdata)
-- Konsolenzeile zum Debuggen:
-- =p.gaststaettenTab({subpagename="Schwabacher Straße 12",fullpagename="Schwabacher Straße 12",strasse_hnr={strasse={{name="Schwabacher Straße",hausnummer={"12"}}}}}, "Unternehmen, die hier ansässig sind/waren:", "Unternehmen", "Unternehmen")
local t = ""
 
-- DB-Abfrage
local query = {"[[:+]][[KlassenName::Gaststätte]]" ..
"[[Gebäude::" .. fbdata.pagename.. "]]",
"?Eröffnungsdatum", "?Schließungsdatum",
["limit"]=100}
query = mw.smw.ask(query)
 
-- Zeilen zusammenbauen
for i, z in ipairs(query or {}) do
if i == 1 then
t = t .. "Gaststätten, die hier ansässig sind/waren:\n"
end
t = t .. "* " .. z[1]
local vonbis = p.vonBisText(z["Eröffnungsdatum"], z["Schließungsdatum"])
if vonbis ~= nil then
t = t .. " (" .. vonbis .. ")"
end
t = t .. "\n"
end
 
if t ~= "" then
t = t .. "<br>" .. fab.zeileSemantikBrowsenAbfrage(fbdata)
end
 
-- Tab draus machen
t = fab.tab(t, "Gaststätten")
return t
return t
end
end


function p.opferShoah(fbdata)
function p.opferShoah(fbdata)
-- mw.log("opferShoah(fbdata)")
-- mw.logObject(fbdata, "fbdata")
-- Konsolenzeile zum Debuggen:
-- Konsolenzeile zum Debuggen:
-- fbdata={pagename="Hallemannstraße 2, 2a"}; mw.logObject(p.opferShoah(fbdata))
-- fbdata={pagename="Hallemannstraße 2, 2a"}; mw.logObject(p.opferShoah(fbdata))
Zeile 290: Zeile 290:
-- DB-Abfrage
-- DB-Abfrage
local query = "[[SubObjektTyp::Opfer der Shoah]]"
local query = "[[SubObjektTyp::Opfer der Shoah]]"
query = query .. "[[VonObjekt::" .. fbdata.pagename .. "]]"
query = query .. "[[Gebäude::" .. fbdata.pagename .. "]]"
query = query .. "|?Vorname"
query = query .. "|?Vorname"
query = query .. "|?Nachname"
query = query .. "|?Nachname"
Zeile 296: Zeile 296:
query = query .. "|limit=100"
query = query .. "|limit=100"
local ask_result = mw.smw.ask(query)
local ask_result = mw.smw.ask(query)
-- mw.logObject(ask_result, "ask_result")
     return ask_result
     return ask_result
end
end


function p.getPlz(fbdata)
function p.getPlz(fbdata)
-- mw.log("getPlz(fbdata)")
-- mw.logObject(fbdata.strasse_hnr, "fbdata.strasse_hnr")
-- Konsolenzeile zum Debuggen:
-- Konsolenzeile zum Debuggen:
-- =p.getPlz{strasse_hnr={strasse={{name="Erlanger Straße",hausnummer={"11","13"},suspekt=false},{name="Schwabacher Straße",hausnummer={1}}}}}
-- =p.getPlz{strasse_hnr={strasse={{name="Erlanger Straße",hausnummer={"11","13"},suspekt=false},{name="Schwabacher Straße",hausnummer={1}}}}}
Zeile 311: Zeile 308:
else
else
end
end
-- mw.logObject(plz, "plz")
return plz
return plz
end
end


function p.teilDesGebaeudeKomplexes(fbdata)
function p.teilDesGebaeudeKomplexes(fbdata)
-- mw.log("teilDesGebaeudeKomplexes(fbdata)")
-- mw.logObject(fbdata.pargs, "fbdata.pargs")
-- Konsolenzeile zum Debuggen:
-- Konsolenzeile zum Debuggen:
-- =p.teilDesGebaeudeKomplexes{pargs={["TeilDesGebäudeKomplexes"]="Rathaus"},fullpagename="Badstraße 15",subpagename="Badstraße 15"}
-- =p.teilDesGebaeudeKomplexes{pargs={["TeilDesGebäudeKomplexes"]="Rathaus"},fullpagename="Badstraße 15",subpagename="Badstraße 15"}
local teil_des_gebaeude_komplexes = str.splitAndStrip(fbdata.pargs["TeilDesGebäudeKomplexes"], ";")
local teil_des_gebaeude_komplexes = str.splitAndStrip(fbdata.pargs["TeilDesGebäudeKomplexes"], ";")
local query = "[[:+]][[!" .. fbdata.fullpagename .. "]][[Kategorie:Gebäude]][[StraßeHnr::" .. fbdata.subpagename .. "]] [[AnzahlGebäude::>2]]"
local query = "[[:+]][[!" .. fbdata.fullpagename .. "]][[Kategorie:Gebäude]][[StraßeHnr::" .. fbdata.subpagename .. "]] [[AnzahlGebäude::>2]]"
-- mw.log(query, "query")
local query_result = smw.getPages(query, true)
local query_result = smw.getPages(query, true)
-- mw.logObject(query_result, "query_result")
teil_des_gebaeude_komplexes = com.append_tables(teil_des_gebaeude_komplexes, query_result)
teil_des_gebaeude_komplexes = com.append_tables(teil_des_gebaeude_komplexes, query_result)
-- mw.logObject(teil_des_gebaeude_komplexes, "teil_des_gebaeude_komplexes")
return teil_des_gebaeude_komplexes
return teil_des_gebaeude_komplexes
end
end


function p.weiterleitung(fbdata)
function p.weiterleitung(fbdata)
-- mw.log("weiterleitung(fbdata)")
-- mw.logObject(fbdata.pargs, "fbdata.pargs")
-- Konsolenzeile zum Debuggen:
-- Konsolenzeile zum Debuggen:
-- fab=require("Modul:Faktenbox/Work"); fbdata=fab.fbdata{pargs={location="Badstraße 15,Fürth,Bayern,Deutschland",["TeilDesGebäudeKomplexes"]="Badstraße 13, 15, 18, Pfisterstraße 50, 52"}}; print(p.weiterleitung(fbdata))
-- fab=require("Modul:Faktenbox/Work"); fbdata=fab.fbdata{pargs={location="Badstraße 15,Fürth,Bayern,Deutschland",["TeilDesGebäudeKomplexes"]="Badstraße 13, 15, 18, Pfisterstraße 50, 52"}}; print(p.weiterleitung(fbdata))
Zeile 346: Zeile 335:
end
end
t = t .. "* Geolokation: " .. location .. "\n"
t = t .. "* Geolokation: " .. location .. "\n"
-- mw.log(location, "location")


-- Koordinate per #geocode ermitteln
-- Koordinate per #geocode ermitteln
local geocode = fbdata.frame:callParserFunction( "#geocode", location )
local geocode = fbdata.frame:callParserFunction( "#geocode", location )
-- mw.log(geocode, "geocode")
if geocode == "Geocoding failed" then
if geocode == "Geocoding failed" then
t = t .. "Geokoordinate konnte nicht ermittelt werden<br>"
t = t .. "Geokoordinate konnte nicht ermittelt werden<br>"
Zeile 378: Zeile 365:
end
end
end
end
-- mw.logObject(t, "t")
return t
end
 
function p.vonBisText(von, bis)
local t
von = von or ""
bis = bis or ""
if von ~= "" then
if bis ~= "" then
t = lfd.formatDate(von) .. " - " .. lfd.formatDate(bis)
else
t = "seit " .. lfd.formatDate(von)
end
elseif bis ~= "" then
t = "bis " .. lfd.formatDate(bis)
end
return t
return t
end
end


return p
return p