Modul:Faktenbox/Tabs/Karte/Legacy

Aus FürthWiki

< Modul:Faktenbox‎ | Tabs‎ | Karte

Die Dokumentation für dieses Modul kann unter Modul:Faktenbox/Tabs/Karte/Legacy/Doku erstellt werden

local p = {}

local com = require("Modul:Common")
local str = require("Modul:String")
local wik = require("Modul:Wiki")
local smw = require("Modul:SMW")
local kar = require("Modul:Karte")

local fab_tabs = require("Modul:Faktenbox/Tabs/Legacy")
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 = smw.getValues(g, "Seite", true)				-- Seite mit Geolokation-Wert abfragen
					if seite[1] ~= fbdata.pagename then							-- Weiterleitung auf sich selbst rausfiltern
						local geolokation = smw.getValues(g, "Geolokation", true)
						if #geolokation > 0 then
							for _, l in ipairs(geolokation) do					-- alle Geolokationen eines Gebäudes durchiterieren
								if locationlist ~= "" then
									locationlist = locationlist .. ";"
								end
								locationlist = locationlist .. l
							end
						elseif not com.isTrue(args["Ehemals"]) then
							local location = g .. ",Fürth,Bayern,Deutschland"	-- #geocode probieren
							local geocode = fbdata.frame:callParserFunction("#geocode", location)
							if geocode ~= "Geocoding failed" then
								if locationlist ~= "" then
									locationlist = locationlist .. ";"
								end
								locationlist = locationlist .. location
							end
						end
					end
				end
				if locationlist ~= "" then
					args["locationlist"] = locationlist
				end
			end
		end
		-- Karte erstellen
--		mw.logObject(args, "args")
		local t_karte = ""
		if kar.kartenArgsVorhanden(args) or not com.isTrue(args["Ehemals"]) then
			t_karte, fbdata.geoobjects = kar.karte(fbdata.frame, args)
		end
		t = t .. t_karte
	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", "Ehemals", "Work"}
	local noargs
	args, noargs = wik.getArgs(fbdata.pargs, args)
	args.noargs = noargs														-- keine Karten-args vorhanden
	-- 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"] = "auto"														-- passt sich automatisch ein
	args["height"] = "auto"														-- passt sich automatisch ein
	args["box"] = "nein"														-- keine eigene Box, da Teil der Faktenbox
	args["form"] = "ja"															-- Formular-Hinweis
	args["hide_loc_latlon"] = fbdata.hide_loc_latlon or "ja"					-- Pin-Anzeige deaktivieren, wenn GeoJson vorhanden
--	mw.logObject(args, "args")
	return args
end

return p