Modul:Grundstück/Work: Unterschied zwischen den Versionen

keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 119: Zeile 119:
fbdata.pargs[a] = v
fbdata.pargs[a] = v
end
end
-- Geo-Daten abfragen
getGeoArgs(fbdata, val.GeoSubobject)
local geo_subjects = val.GeoSubobject
if geo_subjects ~= nil then
if type(geo_subjects) ~= "table" then
geo_subjects = {geo_subjects}
end
local query = ""
for _, g in ipairs(geo_subjects) do
if query ~= "" then
query = query .. " OR "
end
query = query .. "[[" .. g .. "]]"
end
query = query ..
"|?Geokoordinate|?Geolokation|?GeoJson#-|?Zoomlevel|?#-"
-- mw.logObject(query, "query")
val = mw.smw.ask(query)
-- mw.logObject(val, "val")
for _, v in ipairs(val) do
local l = v["Geolokation"] or v["Geokoordinate"]
if l ~= nil then
if fbdata.pargs["location"] == nil then
fbdata.pargs["location"] = l
else
fbdata.pargs["location"] =
fbdata.pargs["location"] .. ";" .. l
end
end
if fbdata.pargs["geojson"] == nil and v["GeoJson"] ~= nil then
fbdata.pargs["geojson"] = string.sub(v["GeoJson"], 9) -- "GeoJson:" abschneiden
end
if fbdata.pargs["zoom"] == nil then
fbdata.pargs["zoom"] = v["Zoomlevel"]
end
end
end
-- Faktenbox anzeigen (ohne Attribute setzen)
-- Faktenbox anzeigen (ohne Attribute setzen)
-- mw.logObject(fbdata.pargs, "fbdata.pargs")
-- mw.logObject(fbdata.pargs, "fbdata.pargs")
fbdata.attr.noattr = true
fbdata.attr.noattr = true
t = geb.faktenbox(fbdata)
t = geb.faktenbox(fbdata) -- Geo-Subjekte in pargs rückverwandeln
end
end
mw.logObject(t, "t")
mw.logObject(t, "t")
return t
return t
end
function getGeoArgs(fbdata, geo_subobjects) -- wandelt die Geo-Subjekte wieder ein pargs zurück
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 fbdata.pargs["location"] ~= "" then
fbdata.pargs["location"] = fbdata.pargs["location"] .. ";"
end
fbdata.pargs["location"] = fbdata.pargs["location"] .. location
end
if fbdata.pargs["geojson"] == nil and geojson ~= nil then -- GeoJson 1x übernehmen. Sind eh alle gleich
fbdata.pargs["geojson"] = string.sub(geojson, 9) -- "GeoJson:" abschneiden
end
if fbdata.pargs["zoom"] == nil and zoom ~= nil then -- Zoomlevel 1x übernehmen. Sind eh alle gleich
fbdata.pargs["zoom"] = zoom
end
end
end
end
end


return p
return p