15.075
Bearbeitungen
(Geo anstelle Geocode) |
(rework fbdata) |
||
| Zeile 1: | Zeile 1: | ||
local p = {} --p stands for package | local p = {} --p stands for package | ||
local com = require("Modul:Common") | local com = require("Modul:Common") | ||
local str = require("Modul:String") | local str = require("Modul:String") | ||
local geo = require("Modul:Geo") | local geo = require("Modul:Geo") | ||
local que = require("Modul:Queries") | local que = require("Modul:Queries") | ||
local fab = require("Modul:Faktenbox") | local fab = require("Modul:Faktenbox") | ||
function p.Faktenbox(frame) | function p.Faktenbox(frame) | ||
-- mw.log("Faktenbox(frame)") | -- mw.log("Faktenbox(frame)") | ||
-- mw.logObject(frame) | -- mw.logObject(frame) | ||
-- Konsolenzeile zum Debuggen: | -- Konsolenzeile zum Debuggen: | ||
-- =p.Faktenbox | -- =p.Faktenbox{pargs={Bild="Schwabacher Straße 12 Dez 2020 1.jpg",["Straße"]="Schwabacher Straße",Hausnummer="12",["TeilDesGebäudeKomplexes"]="TDGK",AktenNr="D-5-63-000-1464",Objekt="Häusle"}} | ||
-- Klasse/Kategorie | -- Basis-Faktenbox-Daten (Klasse/Kategorie/Formular) | ||
local klasse = "Gebäude" | local fbdata = fab.fbdata(frame) | ||
fbdata.klasse = {"Gebäude"} | |||
fbdata.kategorie = {"Gebäude"} | |||
fbdata.formular = "Gebäude" -- ggf. "Gebäude/Work" | |||
-- Straße/Hausnummer Formular-Eingaben analysieren, Postleitzahl ermitteln | -- Straße/Hausnummer Formular-Eingaben analysieren, Postleitzahl ermitteln | ||
fbdata.strasse_hnr = p.strasseHnrParser(fbdata) | |||
fbdata.plz = p.getPlz(fbdata) | |||
-- Tabs zusammenfügen | -- Tabs einsammeln und zusammenfügen | ||
local box = | local box = | ||
"<div class = factbox><tabs>" .. | "<div class = factbox><tabs>" .. | ||
fab.bildTab(fbdata) .. | |||
p.kartenTab(fbdata) .. | |||
p.datenTab(fbdata) .. | |||
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"}) .. | |||
"</tabs></div>" | "</tabs></div>" | ||
-- Sonstige gemeinsame Dinge anfügen (Formular, Kategorien, Wartung, ...) | -- Sonstige gemeinsame Dinge anfügen (Klasse, Formular, Kategorien, Wartung, ...) | ||
box = box .. fab.common | box = box .. fab.common(fbdata, false) | ||
-- mw.log("box = " .. box) | -- mw.log("box = " .. box) | ||
-- Pre- | -- Pre-Processing und String-Länge checken | ||
box = fbdata.frame:preprocess(box) | |||
box = box .. com.returnStringCheck(box) | box = box .. com.returnStringCheck(box) | ||
-- mw.log("box = " .. box) | -- mw.log("box = " .. box) | ||
| Zeile 63: | Zeile 43: | ||
end | end | ||
function p.datenTab(args) | function p.datenTab(fbdata, args) | ||
-- mw.log("datenTab(args)") | -- mw.log("datenTab(fbdata, args)") | ||
-- mw.logObject(fbdata) | |||
-- mw.logObject(args) | -- mw.logObject(args) | ||
-- Konsolenzeile zum Debuggen: | --[[ Konsolenzeile zum Debuggen (Achtung! Bug in Fehlerbereinigungskonsole! Kann nur 1x ausgeführt werden!): | ||
fab=require("Modul:Faktenbox/Work"); | |||
fbdata=fab.fbdata{pargs={ | |||
["Straße"]="Elanger Straße", | |||
Hausnummer="11;13", | |||
["TeilDesGebäudeKomplexes"]="TDGK", | |||
AktenNr="D-5-63-000-1464", | |||
Objekt="Häusle" | |||
}}; | |||
fbdata.klasse={"Kirche","Gebäude"}; | |||
fbdata.kategorie={"Kirchen","Gebäude"}; | |||
fbdata.fullpagename="Isaak-Loewi-Straße 1"; | |||
fbdata.subpagename="Isaak-Loewi-Straße 1"; | |||
fbdata.strasse_hnr={strasse={{name="Erlanger Straße",hausnummer={"11", "13"}},{name="XY Straße",hausnummer={}}},anzahlGebaeude=3}; | |||
fbdata.plz=90765; | |||
print(p.datenTab(fbdata,{kindex=2,tabname="Tabname"})) | |||
]] | |||
local t = "" | local t = "" | ||
args = args or {} | |||
-- Teil Des Gebäude Komplexes ermitteln und mergen | -- Teil Des Gebäude Komplexes ermitteln und mergen | ||
local teil_des_gebaeude_komplexes = | local teil_des_gebaeude_komplexes = fbdata.pargs["TeilDesGebäudeKomplexes"] or "" | ||
teil_des_gebaeude_komplexes = str.splitAndStrip(teil_des_gebaeude_komplexes, ";") | teil_des_gebaeude_komplexes = str.splitAndStrip(teil_des_gebaeude_komplexes, ";") | ||
local query = "[[:+]][[!" .. | local query = "[[:+]][[!" .. fbdata.fullpagename .. "]][[Kategorie:Gebäude]][[StraßeHnr::" .. fbdata.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) | ||
| Zeile 81: | Zeile 78: | ||
-- Zusammenbau | -- Zusammenbau | ||
t = t .. "<dl class = 'dataTable'>" | t = t .. "<dl class = 'dataTable'>" | ||
t = t .. fab.zeileKategorieSeite( | t = t .. fab.zeileKategorieSeite(fbdata, args.kindex) | ||
t = t .. fab.zeileStrasseHnr( | t = t .. fab.zeileStrasseHnr(fbdata) | ||
t = t .. fab.zeile("PLZ", | t = t .. fab.zeile("PLZ", fbdata.plz) | ||
t = t .. fab. | t = t .. fab.zeilePargs(fbdata, {"Objekt", "TeilDesEnsembles", "TeilDesAreals", "TeilDesGebäudeKomplexes", "Baujahr", "Ehemals", "DenkmalstatusBesteht"}) | ||
t = t .. fab.zeileAktenNr(fbdata) | |||
t = t .. fab.zeilePargs(fbdata, {"Abbruchjahr", "Baustil", "Bauherr", "Architekt", "Maurermeister", "Quellangaben"}) | |||
t = t .. fab.zeileGeokoordinate(fbdata) | |||
t = t .. fab. | |||
t = t .. fab. | |||
t = t .. fab.zeileGeokoordinate( | |||
t = t .. "</dl>" | t = t .. "</dl>" | ||
t = t .. fab.faktenboxSemantikBrowsen() | t = t .. fab.faktenboxSemantikBrowsen(fbdata) | ||
-- Tab draus machen | -- Tab draus machen | ||
| Zeile 107: | Zeile 94: | ||
end | end | ||
function p.kartenTab( | function p.kartenTab(fbdata) | ||
-- mw.log("kartenTab( | -- mw.log("kartenTab(fbdata)") | ||
-- mw.logObject( | -- mw.logObject(fbdata) | ||
-- | -- 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)) | |||
t = "" | t = "" | ||
if string.find(fbdata.pagename, ";") ~= nil then | |||
if string.find(pagename, ";") ~= nil then | |||
t = "Semikolon im Artikel-/Seitennamen für korrekte Kartendarstellung nicht erlaubt!" | t = "Semikolon im Artikel-/Seitennamen für korrekte Kartendarstellung nicht erlaubt!" | ||
else | else | ||
local args_karte = com.shallowcopy( | local args_karte = com.shallowcopy(fbdata.pargs) | ||
args_karte["PLZ"] = | args_karte["PLZ"] = fbdata.plz | ||
t = | args_karte["Debug"] = "Nein" | ||
t = fbdata.frame:expandTemplate{title = 'Gebäude/Karte', args = args_karte} | |||
end | end | ||
-- Tab draus machen | -- Tab draus machen | ||
t = fab.tab(t, "Karte") | t = fab.tab(t, "Karte") | ||
| Zeile 134: | Zeile 114: | ||
end | end | ||
function p.strasseHnrParser( | function p.strasseHnrParser(fbdata) | ||
-- mw.log("strasseHnrProcessor( | -- mw.log("strasseHnrProcessor(fbdata)") | ||
-- mw.logObject( | -- mw.logObject(fbdata.pargs) | ||
-- Konsolenzeile zum Debuggen: | -- Konsolenzeile zum Debuggen: | ||
-- p.strasseHnrParser | -- p.strasseHnrParser{pargs={["Straße"]="Elanger Straße",["Hausnummer"]="11;13",["Straße2"]="Frühlingstraße",["Hausnummer2"]="",["Straße3"]="",["Hausnummer3"]=""}} | ||
local result = {} | local result = {} | ||
result.strasse = {} | result.strasse = {} | ||
| Zeile 145: | Zeile 125: | ||
local strasse_hnr = { | local strasse_hnr = { | ||
{ | {fbdata.pargs["Straße"] or "", fbdata.pargs["Hausnummer"] or ""}, | ||
{ | {fbdata.pargs["Straße2"] or "", fbdata.pargs["Hausnummer2"] or ""}, | ||
{ | {fbdata.pargs["Straße3"] or "", fbdata.pargs["Hausnummer3"] or ""} | ||
} | } | ||
| Zeile 184: | Zeile 164: | ||
end | end | ||
function p.residenzTab( | function p.residenzTab(fbdata, args) | ||
-- mw.log("residenzTab(" .. ( | -- mw.log("residenzTab(fbdata, args)") | ||
-- mw.logObject(fbdata) | |||
-- mw.logObject(args) | |||
-- 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") | |||
local t = "" | local t = "" | ||
-- DB-Abfrage | -- DB-Abfrage | ||
local query = "[[:+]][[-Has subobject::+]][[SubObjektTyp::Adresse]][[VonObjekt::" .. | local query = "[[:+]][[-Has subobject::+]][[SubObjektTyp::Adresse]][[VonObjekt::" .. fbdata.subpagename.. "]][[-Has subobject.KlassenName::" .. args.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 ask_result = mw.smw.ask(query) | local ask_result = mw.smw.ask(query) | ||
-- mw.logObject(ask_result) | -- mw.logObject(ask_result) | ||
| Zeile 197: | Zeile 182: | ||
for i, z in ipairs(ask_result) do -- Ergebniszeile durchiterieren | 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 .. args.ueberschrift .. "\n" -- Text vor der eigentlichen Liste | ||
end | end | ||
t = t .. "* " .. z | t = t .. "* [[" .. z.Seite .. "]]" -- immer vorhanden | ||
z.Adressart = z.Adressart or "" -- nicht immer vorhanden (nil) | z.Adressart = z.Adressart or "" -- nicht immer vorhanden (nil) | ||
z.AdresseVon = z.AdresseVon or "" -- nicht immer vorhanden (nil) | z.AdresseVon = z.AdresseVon or "" -- nicht immer vorhanden (nil) | ||
| Zeile 225: | Zeile 210: | ||
-- Tab draus machen | -- Tab draus machen | ||
t = fab.tab(t, kategorie) | t = fab.tab(t, args.kategorie) | ||
-- mw.log("t = " .. t) | -- mw.log("t = " .. t) | ||
return t | return t | ||
end | end | ||
function p.getPlz( | function p.getPlz(fbdata) | ||
-- mw.log("getPlz( | -- mw.log("getPlz(fbdata)") | ||
-- mw.logObject(strasse_hnr) | -- mw.logObject(fbdata.strasse_hnr) | ||
-- Konsolenzeile zum Debuggen: | -- Konsolenzeile zum Debuggen: | ||
-- =p.getPlz | -- =p.getPlz{strasse_hnr={strasse={{name="Erlanger Straße",hausnummer={"11","13"},suspekt=false},{name="Schwabacher Straße",hausnummer={1}}}}} | ||
local plz = "" | local plz = "" | ||
if #strasse_hnr.strasse > 0 and not strasse_hnr.strasse[1].suspekt then | if #fbdata.strasse_hnr.strasse > 0 and not fbdata.strasse_hnr.strasse[1].suspekt then | ||
-- Es wird angenommen, dass alle Gebäude die gleiche PLZ haben. Hausnummer muss nicht vorhanden sein | -- 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]) | plz = geo.getPLZ(fbdata.strasse_hnr.strasse[1].name, fbdata.strasse_hnr.strasse[1].hausnummer[1]) | ||
else | else | ||
end | end | ||