Modul:Adresse: Unterschied zwischen den Versionen

Aus FürthWiki

getArgs
(Erstversion)
 
(getArgs)
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 8: Zeile 8:


function p.Adresse(frame)
function p.Adresse(frame)
-- mw.log("Adresse(frame)")
-- mw.logObject(frame, "Adresse(frame)")
-- mw.logObject(frame)
-- Konsolenzeile zum Debuggen:
-- Konsolenzeile zum Debuggen:
-- =p.Adresse{pargs={["Adressart"]="Wohnung", ["Straße"]="Schwabacher Straße", ["Hausnummer"]="12",["AdresseVon"]="b", ["AdresseBis"]="c",  ["Kommentar"]="f"}}
-- =p.Adresse{pargs={["Adressart"]="Wohnung", ["Straße"]="Schwabacher Straße", ["Hausnummer"]="12",["AdresseVon"]="2020-03-04", ["AdresseBis"]="2021-05-06",  ["Kommentar"]="f"}}
-- =p.Adresse{pargs={["Adressart"]="Wohnung", ["Straße"]="Fichtenstraße", ["Hausnummer"]="44",["AdresseVon"]="b", ["AdresseBis"]="c",  ["Kommentar"]="f"}}
-- =p.Adresse{pargs={["Adressart"]="Wohnung", ["Straße"]="Fichtenstraße", ["Hausnummer"]="44",["AdresseVon"]="2020-03-04", ["AdresseBis"]="2021-05-06",  ["Kommentar"]="f"}}
local t = ""
local t = ""
local fail = false
local fail = false
local _, pargs = dev.GetFrameAndParentArgs(frame)
local frame, pargs = dev.GetFrameAndParentArgs(frame)
local attr, attr_empty = wik.getArgs(pargs, {"Adressart", "AdresseVon", "AdresseBis", "Straße", "Hausnummer", "Kommentar"})
-- nur benötigte Attribut-Werte aus Formular (ParentArgs) herausholen
local attr = {}
local attr_empty = true
for _, a in ipairs{"Adressart", "AdresseVon", "AdresseBis", "Straße", "Hausnummer", "Kommentar"} do
local v = pargs[a] or ""
if v ~= "" then
attr[a] = v
attr_empty = false
end
end


-- subobject-Name
if attr_empty then -- Überhaupt Parameter übergeben?
local subobject = {}
table.insert(subobject, attr["Adressart"])
table.insert(subobject, attr["Straße"])
table.insert(subobject, attr["Hausnummer"])
subobject = table.concat(subobject, " ")
if subobject == "" then -- subobject-Name fehlerhaft?
fail = true
fail = true
else
else


-- Straße/Hausnummer auswerten
-- subobject-Name
if attr["Straße"] ~= nil then
local subobject = {}
if attr["Hausnummer"] ~= nil then
table.insert(subobject, attr["Adressart"])
attr["StraßeHnr"] = attr["Straße"] .. " " .. attr["Hausnummer"]
table.insert(subobject, attr["Straße"])
else
table.insert(subobject, attr["Hausnummer"])
attr["StraßeHnr"] = attr["Straße"]
subobject = table.concat(subobject, " ")
if subobject == "" then -- subobject-Name fehlerhaft?
fail = true
else
-- SubObjektTyp setzen
attr["SubObjektTyp"] = "Adresse"
-- Straße/Hausnummer auswerten
if attr["Straße"] ~= nil then
if attr["Hausnummer"] ~= nil then
attr["StraßeHnr"] = attr["Straße"] .. " " .. attr["Hausnummer"]
else
attr["StraßeHnr"] = attr["Straße"]
end
elseif attr["Hausnummer"] ~= nil then
fail = true -- Fehler Hausnummer ohne Straße
end
end
elseif attr["Hausnummer"] ~= nil then
fail = true -- Fehler Hausnummer ohne Straße
-- Postleitzahl ermitteln
end
if attr["Straße"] ~= nil then
 
local PLZ = geo.getPLZ(attr["Straße"], attr["Hausnummer"])
-- Postleitzahl ermitteln
if PLZ ~= "" then
if attr["Straße"] ~= nil then
attr["PLZ"] = PLZ
local PLZ = geo.getPLZ(attr["Straße"], attr["Hausnummer"])
end
if PLZ ~= "" then
attr["PLZ"] = PLZ
end
end
end
-- VonObjekt erstellen
-- VonObjekt erstellen
if attr["StraßeHnr"] ~= nil then
if attr["StraßeHnr"] ~= nil then
if wik.pageExists(attr["StraßeHnr"]) then
if wik.pageExists(attr["StraßeHnr"]) then
attr["VonObjekt"] = attr["StraßeHnr"]
attr["VonObjekt"] = attr["StraßeHnr"]
else
else
-- Seite mit passender StraßeHnr suchen
-- Seite mit passender StraßeHnr suchen
local ask_result = mw.smw.ask("[[:+]][[Kategorie:Gebäude]][[StraßeHnr::" .. attr["StraßeHnr"] .. "]]|?#-|limit=1")
local ask_result = mw.smw.ask("[[:+]][[Kategorie:Gebäude]][[StraßeHnr::" .. attr["StraßeHnr"] .. "]]|?#-|limit=1")
if ask_result ~= nil and #ask_result > 0 then
if #ask_result > 0 then
attr["VonObjekt"] = ask_result[1][1]
attr["VonObjekt"] = ask_result[1][1]
end
end
end
end
end
end
-- subobject setzen
mw.smw.subobject(attr, subobject)
-- subobject zusammenbauen
-- Plausibilitätsprüfung von/bis
if not attr_empty then
if attr["AdresseVon"] ~= nil and attr["AdresseBis"] ~= nil and
t = t .. "{{#subobject:" .. subobject
  p.smwDate2CompareIndex(attr["AdresseVon"], "von") > p.smwDate2CompareIndex(attr["AdresseBis"], "bis") then
for a, v in pairs(attr) do
  fail = true
t = t .. "|" .. a .. "=" .. v
end
end
t = t .. "}}"
end
-- Plausibilitätsprüfung von/bis
if attr["AdresseVon"] ~= nil and attr["AdresseBis"] ~= nil and
  p.smwDate2CompareIndex(attr["AdresseVon"], "von") > p.smwDate2CompareIndex(attr["AdresseBis"], "bis") then
  fail = true
end


end -- Ende if subobject-Name fehlerhaft?
end -- Ende if subobject-Name fehlerhaft?
end -- Ende if not attr_empty


-- Kategorie:Fehlerhafte Adresse
-- Kategorie:Fehlerhafte Adresse
Zeile 92: Zeile 82:
end
end


-- mw.log("t = " .. t)
-- mw.logObject(t, "t")
return t
return t
end
end