Modul:Faktenbox/Tabs/Karte/Work
< Modul:Faktenbox | Tabs | Karte
Die Dokumentation für dieses Modul kann unter Modul:Faktenbox/Tabs/Karte/Work/Doku erstellt werden
local p = {}
local com = require("Modul:Common")
local str = require("Modul:String")
local wik = require("Modul:Wiki")
local que = require("Modul:Queries")
local kar = require("Modul:Karte/Work")
local fab_tabs = require("Modul:Faktenbox/Tabs")
local fab_common = require("Modul:Faktenbox/Common")
function p.kartenTab_(fbdata)
-- mw.logObject(fbdata, "kartenTab_(fbdata)")
-- Konsolenzeile zum Debuggen:
-- fab=require("Modul:Faktenbox/Work"); fab_common = require("Modul:Faktenbox/Common"); fbdata=fab_common.fbdata_{pargs={["location"]="Erlanger Straße 11, Fürth, Bayern, Deutschland",Debug="ja"}}; print(p.kartenTab_(fbdata))
-- fab=require("Modul:Faktenbox/Work"); fab_common = require("Modul:Faktenbox/Common"); fbdata=fab_common.fbdata_{pargs={["Gebäude"]="Erlanger Straße 11;Erlanger Straße 12",Debug="ja"}}; print(p.kartenTab_(fbdata))
-- fab=require("Modul:Faktenbox/Work"); fab_common = require("Modul:Faktenbox/Common"); fbdata=fab_common.fbdata_{pargs={["lat"]="49",["lon"]="11",["locationlist"]="ll",["location"]="l",["geojson"]="g",["zoom"]="99",["GeoJsonKarte"]="Ja",["Debug"]="Ja",["Dummy"]="d"}}; print(p.kartenTab_(fbdata))
t = ""
if string.find(fbdata.pagename, ";") ~= nil then
t = t .. "Semikolon im Artikel-/Seitennamen für korrekte Kartendarstellung nicht erlaubt!"
else
-- Karten-Argumente übernehmen und aufbereiten
local args = p.getKartenArgs_(fbdata, 18)
-- Verwende Geolokation des Gebäudes, sofern vorhanden und wenn keine location oder locationlist übergeben
if args["location"] == nil and args["locationlist"] == nil and fbdata.pargs["Gebäude"] ~= nil then
local gebaeude = str.splitAndStrip(fbdata.pargs["Gebäude"], ";")
if #gebaeude > 0 then -- Gebäude angegeben?
local locationlist = ""
for _, g in ipairs(gebaeude) do -- alle Gebäude durchiterieren
local seite = que.getValues(g, "Seite", true)
if seite[1] ~= fbdata.pagename then -- Weiterleitung auf sich selbst rausfiltern
local geolokation = que.getValues(g, "Geolokation", true)
for _, l in ipairs(geolokation) do -- alle Geolokationen eines Gebäudes durchiterieren
if locationlist ~= "" then
locationlist = locationlist .. ";"
end
locationlist = locationlist .. l
end
end
end
if locationlist ~= "" then
args["locationlist"] = locationlist
end
end
end
-- Karte erstellen
-- mw.logObject(args, "args")
t = t .. kar.karte(fbdata.frame, args)
end
-- Tab draus machen
t = fab_tabs.tab_(t, "Karte")
-- mw.logObject(t, "t")
return t
end
function p.getKartenArgs_(fbdata, zoomdefault)
-- mw.logObject(fbdata, "karte(fbdata, " .. tostring(zoomdefault) .. ")")
-- Konsolenzeile zum Debuggen:
-- mw.logObject(p.getKartenArgs_({pagename="pn",pargs={["lat"]="49",["lon"]="11",["locationlist"]="ll",["location"]="l",["geojson"]="g",["zoom"]="99",["GeoJsonKarte"]="Ja",["Debug"]="Ja",["Dummy"]="d",["add"]="a"}}, 11, {"add"}))
-- nur die benötigten Argumente übernehmen
local args = {
"lat", "lon",
"location", "locationlist",
"geojson", "GeoJsonKarte",
"zoom", "Debug", "Ehemals"}
args = wik.getArgs(fbdata.pargs, args)
-- geojson ermitteln
if args["geojson"] == nil and com.isTrue(args["GeoJsonKarte"]) then
args["geojson"] = fbdata.pagename
end
-- Defaults und Sonstiges
args["zoom"] = args["zoom"] or zoomdefault
args["width"] = "" -- passt sich automatisch ein
args["height"] = "" -- passt sich automatisch ein
args["box"] = "nein" -- keine eigene Box, da Teil der Faktenbox
args["form"] = "ja" -- Formular-Hinweis
-- mw.logObject(args, "args")
return args
end
return p