|
|
| (27 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
| Zeile 1: |
Zeile 1: |
| local p = {} | | local p = {} |
|
| |
|
| local com = require("Modul:Common")
| | local fab = require("Modul:Faktenbox") |
| local str = require("Modul:String")
| | local geb = require("Modul:Gebäude") |
| local dev = require("Modul:Development")
| |
| local smw = require("Modul:SMW")
| |
| local wik = require("Modul:Wiki")
| |
| local fab = require("Modul:Faktenbox/Work") | |
| local geb = require("Modul:Gebäude/Work") | |
|
| |
|
| function p.Faktenbox(frame) | | function p.Faktenbox(frame) |
| -- mw.log("Faktenbox(frame)") | | -- mw.log("Faktenbox(frame)") |
| -- mw.logObject(frame, "frame") | | -- mw.logObject(frame, "frame") |
| -- Konsolenzeile zum Debuggen: | | local t = "" |
| -- =p.Faktenbox{pargs={Baujahr="1987",AktenNr="D-5-63-000-1464"}}
| |
|
| |
|
| -- Basis-Faktenbox-Daten (Klasse/Kategorie/Formular) | | -- Basis-Faktenbox-Daten (Klasse/Kategorie/Formular) |
| local fbdata = fab.fbdata(frame) | | local fbdata = fab.getFbdata(frame) |
| fbdata.klasse = {"Grundstück"} | | fbdata.klasse = {"Grundstück"} |
| fbdata.kategorie = {"Grundstücke"} | | fbdata.kategorie = {"Grundstücke"} |
| Zeile 24: |
Zeile 18: |
| -- Straße/Hausnummer Formular-Eingaben analysieren, Postleitzahl ermitteln | | -- Straße/Hausnummer Formular-Eingaben analysieren, Postleitzahl ermitteln |
| fbdata.strasse_hnr = geb.strasseHnrParser(fbdata) | | fbdata.strasse_hnr = geb.strasseHnrParser(fbdata) |
| fbdata.plz = geb.getPlz(fbdata) | | if not com.isTrue(fbdata.pargs["Ehemals"]) then |
| | fbdata.plz = p.getPlz(fbdata) |
| | end |
|
| |
|
| -- Tabs einsammeln und zusammenfügen | | -- Tabs einsammeln und zusammenfügen |
| local box = | | t = fab.bildTab(fbdata) .. |
| "<div class = factbox><tabs>" ..
| |
| geb.kartenTab(fbdata) .. -- Karten-Tab muss vor Tabs mit zeileGeoDaten() sein | | geb.kartenTab(fbdata) .. -- Karten-Tab muss vor Tabs mit zeileGeoDaten() sein |
| fab.bildTab(fbdata) .. | | geb.datenTab(fbdata) |
| p.datenTab(fbdata) ..
| | t = fab.factbox_header_footer(t) |
| "</tabs></div>"
| |
|
| |
|
| -- Sonstige gemeinsame Dinge anfügen (Klasse, Formular, Kategorien, Wartung, ...) | | -- Sonstige gemeinsame Dinge anfügen (Klasse, Formular, Kategorien, Wartung, ...) |
| box = box .. fab.common(fbdata) | | t = t .. fab.postprocess(fbdata) |
| -- mw.logObject(box, "box")
| |
|
| |
|
| -- Pre-Processing und String-Länge checken | | -- Pre-Processing und String-Länge checken |
| box = fbdata.frame:preprocess(box)
| | -- mw.logObject(t, "t") |
| return box
| | t = fbdata.frame:preprocess(t) |
| end
| |
| | |
| function p.datenTab(fbdata)
| |
| -- mw.log("datenTab(fbdata)")
| |
| -- mw.logObject(fbdata) | |
| --[[ Konsolenzeile zum Debuggen:
| |
| fab=require("Modul:Faktenbox"); fbdata=fab.fbdata{pargs={Baujahr="1987",AktenNr="D-5-63-000-1464"}};
| |
| fbdata.klasse={"Grundstück"}; fbdata.kategorie={"Grundstücke"}; fbdata.fullpagename="Stadtpark"; fbdata.subpagename="Stadtpark";
| |
| print(p.datenTab(fbdata))
| |
| ]]
| |
| local t = ""
| |
| | |
| -- Zusammenbau
| |
| t = t .. "<dl class = 'dataTable'>"
| |
| t = t .. fab.zeileKategorieSeite(fbdata)
| |
| t = t .. fab.zeileStrasseHnr(fbdata)
| |
| t = t .. fab.zeile{fbdata = fbdata, attr_name = "PLZ", attr_val = fbdata.plz}
| |
| t = t .. fab.zeile{fbdata = fbdata, attr_name = "TeilDesEnsembles", attr_val = teil_des_ensembles, delimiter = ";"}
| |
| t = t .. fab.zeile{fbdata = fbdata, attr_name = "TeilDesAreals", delimiter = ";"}
| |
| t = t .. fab.zeile{fbdata = fbdata, attr_name = "Ehemals", attr_text = "Ehemals (aufgelassen)"}
| |
| t = t .. fab.zeile{fbdata = fbdata, attr_name = "Abbruchjahr", delimiter = ";", attr_text = "Aufgelassungsjahr"}
| |
| t = t .. fab.zeileGeoDaten(fbdata)
| |
| t = t .. "</dl>"
| |
| t = t .. fab.zeileSemantikBrowsenAbfrage(fbdata)
| |
| | |
| -- Tab draus machen
| |
| t = fab.tab(t, "Daten") | |
| -- mw.log("t = " .. t)
| |
| return t
| |
| end
| |
| | |
| function p.Gebaeudedaten(frame)
| |
| -- mw.log("Gebaeudedaten(frame)")
| |
| -- mw.logObject(frame, "frame")
| |
| local fbdata = fab.fbdata(frame)
| |
| geb.faktenbox(fbdata) -- die Gebäude-Faktenbox setzt hier nur die Attribute
| |
| end
| |
| | |
| function p.GebaeudeFaktenbox(frame) -- to do: Kategorien
| |
| mw.log("GebaeudeFaktenbox(frame)")
| |
| mw.logObject(frame, "frame")
| |
| local fbdata = fab.fbdata(frame)
| |
| local t = ""
| |
| -- Gebäude-Attribute von subobject abfragen
| |
| fbdata.attr.subid = geb.getSubobjectID(fbdata.pargs)
| |
| local subobject_pagename = fbdata.pagename .. "#" .. fbdata.attr.subid
| |
| fbdata.pargs = {}
| |
| queryGebaeudeArgs(fbdata.pargs, subobject_pagename)
| |
| mw.logObject(fbdata.pargs, "fbdata.pargs")
| |
| -- Faktenbox anzeigen (ohne Attribute setzen)
| |
| if fbdata.pargs ~= {} then
| |
| fbdata.attr.noattr = true
| |
| t = geb.faktenbox(fbdata)
| |
| end
| |
| mw.logObject(t, "t")
| |
| return t | | return t |
| end
| |
|
| |
| function queryGebaeudeArgs(args, subobject_pagename) -- Gebäude-Attribute von subobject abfragen
| |
| -- mw.log("queryGebaeudeArgs(args, subobject_pagename)")
| |
| -- mw.logObject(subobject_pagename, "subobject_pagename")
| |
| local query = "[[" .. subobject_pagename .. "]]"
| |
| for _, a in ipairs(geb.gebaude_attr) do
| |
| query = query .. "|?" .. a .. "#-"
| |
| end
| |
| query = query .. "|?GeoSubobject#-|?#-"
| |
| -- mw.logObject(query, "query")
| |
| val = mw.smw.ask(query)
| |
| -- mw.logObject(val, "val")
| |
| if val == nil then
| |
| t = t .. "<br>Gebäude " .. (args["Objekt"] or "(fehlt)") ..
| |
| " mit Baujahr " .. (args["Baujahr"] or "(fehlt)") ..
| |
| " nicht gefunden<br>"
| |
| elseif #val > 1 then
| |
| t = t .. "<br>Mehrere (kein eindeutiges) Gebäude " ..
| |
| (args["Objekt"] or "(fehlt)") .. " mit Baujahr " ..
| |
| (args["Baujahr"] or "(fehlt)") .. " gefunden<br>"
| |
| else
| |
| -- Attribute-table zu Argumente (pargs) rückwandeln
| |
| val = val[1] -- immer nur das erste subobject nehmen
| |
| val[1] = nil -- subobject id entfernen
| |
| for a, v in pairs(val) do
| |
| if type(v) == "table" then
| |
| v = table.concat(v, ";")
| |
| else
| |
| v = tostring(v)
| |
| end
| |
| args[a] = v
| |
| end
| |
| getGeoArgs(args, val.GeoSubobject)
| |
| end
| |
| -- mw.logObject(args, "args")
| |
| end
| |
|
| |
| function getGeoArgs(args, geo_subobjects) -- wandelt die Geo-Subjekte wieder ein pargs zurück
| |
| -- mw.log("getGeoArgs(args, geo_subobjects)")
| |
| -- mw.logObject(geo_subobjects, "geo_subobjects")
| |
| if geo_subobjects ~= nil then
| |
| if type(geo_subobjects) ~= "table" then
| |
| geo_subobjects = {geo_subobjects}
| |
| end
| |
| -- query Geo-Subjekte
| |
| local query = ""
| |
| for _, g in ipairs(geo_subobjects) do -- alle Geo-Subjekte werden in einem Rutsch abgefragt
| |
| if query ~= "" then
| |
| query = query .. " OR "
| |
| end
| |
| query = query .. "[[" .. g .. "]]"
| |
| end
| |
| query = query .. "|?Geokoordinate|?Geolokation|?GeoJson#-|?Zoomlevel|?#-"
| |
| -- mw.logObject(query, "query")
| |
| geo_subobjects = mw.smw.ask(query) or {}
| |
| -- mw.logObject(geo_subobjects, "geo_subobjects")
| |
| -- Attribute zu pargs wandeln
| |
| for _, o in ipairs(geo_subobjects) do
| |
| local location = o["Geolokation"] or o["Geokoordinate"] -- keine Rückwandlung Geokoordinate zu lat/lon
| |
| local geojson = o["GeoJson"]
| |
| local zoom = o["Zoomlevel"]
| |
| if location ~= nil then -- location-Liste mergen
| |
| if args["locationlist"] == nil then
| |
| args["locationlist"] = location
| |
| else
| |
| args["locationlist"] =
| |
| args["locationlist"] .. ";" .. location
| |
| end
| |
| end
| |
| if args["geojson"] == nil and geojson ~= nil then -- GeoJson 1x übernehmen. Sind eh alle gleich
| |
| args["geojson"] = string.sub(geojson, 9) -- "GeoJson:" abschneiden
| |
| end
| |
| if args["zoom"] == nil and zoom ~= nil then -- Zoomlevel 1x übernehmen. Sind eh alle gleich
| |
| args["zoom"] = zoom
| |
| end
| |
| end
| |
| end
| |
| -- mw.logObject(args, "args")
| |
| end | | end |
|
| |
|
| return p | | return p |