Modul:ResourceMap

Aus ARK Wiki
Zur Navigation springen Zur Suche springen

Die Dokumentation für dieses Modul kann unter Modul:ResourceMap/Doku erstellt werden

local p = {}

local UnrecognizedTypeLabel = 'not or wrongly specified'

local function getNodeTooltip( class )
	local labels = mw.loadData('Module:ResourceMap/labels')
	-- try a cheaper lookup by full name
	local fullLookup = labels[class]
	if fullLookup ~= nil then
		return fullLookup
	end
	-- resort to a lookup by first word
    return labels[mw.text.split(class, ' ', true)[1]] or UnrecognizedTypeLabel
end

function p.nodes( f )
    local args = f:getParent().args
    local borderCoordTop = args.borderCoordTop
    local borderCoordBottom = args.borderCoordBottom
    local borderCoordLeft = args.borderCoordLeft
    local borderCoordRight = args.borderCoordRight
  
    local allNodes = {}
    for _, v in ipairs(args) do 
        if #v > 0 then
            local info = mw.text.split(v, ',', true)
            
            if #info >= 3 then
	            local resourceType = mw.text.trim(info[3])
    	        local lat = tonumber(info[1])
        	    local long = tonumber(info[2])
            	local customTitle = info[4] and mw.text.trim(info[4]) or ''
       
	    		if resourceType ~= nil and lat ~= nil and long ~= nil then
		            local title = getNodeTooltip(resourceType) .. '
lat ' .. lat .. ', lon ' .. long
    		        if customTitle ~= nil then
        		    	title = title .. '
' .. customTitle
            		end
	            	local markerSize = args['marker ' .. resourceType] or 7
    	        	local top = 100 * ((lat - borderCoordTop) / (borderCoordBottom - borderCoordTop) - markerSize/(2*args.mapsize))
        	    	local left = 100 * ((long - borderCoordLeft) / (borderCoordRight - borderCoordLeft) - markerSize/(2*args.mapsize))
    	
        	    	local html = '<div style="left:' .. string.format("%.1f", left) .. '%;top:' .. string.format("%.2f", top) .. '%" title="' .. title .. '"></div>'
    	
	    	        if allNodes[resourceType] == nil then
    					allNodes[resourceType] = { html }
    				else
    					table.insert(allNodes[resourceType], html)
    				end
    			end
        	end
        end
    end

	local html = ''
    for resourceType, nodes in pairs(allNodes) do 
    	html = html .. '<div class="' .. resourceType .. ' dots">'
    	html = html .. table.concat(nodes, '\n')
		html = html .. '</div>'
	end
	
    return html
end

return p