Módulo:Infobox/Funções/Geolocalização/Testes

Documentação do módulo[ver] [editar] [histórico] [purgar]



Descrição editar

Este módulo tem funções auxiliares para criar infocaixas.

Uso editar

Outra documentação:

local localdata = require( 'Module:Infobox/Localdata' )
local item = localdata.item
local id
if item then
    id = item.id
end
local wd = require "Module:Infobox/Wikidata"
-- Modulos carregado se necessário :
-- local countrymodule = require "Module:Country data"
-- local coord = require "Module:Coordenadas"
local p = {}

function p.country()
    local function formatCountry(country)
        if not country then
            return nil
        end
        local countrymodule = require "Module:Country data"
        local val, success = countrymodule.standarddisplay(country) -- val = nil se o país não é conhecido
        if success then
            return val
        end
    end

    return  {
        type = 'mixed',
        label = 'País',
        plurallabel = 'Países',
        value = function() return formatCountry(localdata['país']) or localdata['pais'] end,
        wikidata = {
            property = 'P17',
            conjtype = 'new line',
            displayformat = function(snak)
                local id = wd.getId(snak)
                return formatCountry(id) or wd.formatSnak(snak)
            end
        }
    }
end

function p.coordvalue(moduleparams) -- valores das coordenadas, sem configuração da infocaixa
    local coord = require "Module:Coordenadas"
    if not moduleparams then
        moduleparams = {}
    end

    local function toboolean(val) -- transforma um "-" em false no momento lido
        if val == '-' or val == 'não' then
            return false
        end
        return true
    end

    -- parâmetros Wikidata
    local wikidata = tostring(toboolean(localdata['wikidata'] or true)) -- deve ser string em Module:Coordenadas
    local maxdistance = moduleparams.maxdistance
    local wikidataquery = moduleparams.wikidataquery or {property = 'P625'}
    if not wikidataquery.entity then
        wikidataquery.entity = item
    end

    -- paramâmetro de formato
    local displayformat = localdata['formato coordenadas'], moduleparams.displayformat
    
    local displayplace = ''
    local displayinline = toboolean(localdata['coords em linha'] or moduleparams.displayinline or true)
    -- por padrão : mostra-se a coordenadas da infocaixa principal no título
    local displaytitle = localdata['coords no título']
        or moduleparams.displaytitle
        or (localdata['infoboxrank'] == 'main')
    if displayinline and (displayinline ~= '-') then
        displayplace = displayplace .. 'inline'
    end
    if displaytitle and (displaytitle ~= '-')  then
        displayplace = displayplace .. 'title,'
    end
    
    -- dados geográficos
    local globe = localdata['globo'] or localdata['globe'] or localdata['planeta'] or moduleparams['globe'] or 'earth'
    local latitude = moduleparams['latitude'] or localdata['latitude']
    local longitude = moduleparams['longitude'] or localdata['longitude']

    local parameterlist = {
        latitude = latitude,
        longitude = longitude,
        format = displayformat,
        display= displayplace,
        globe = globe,
        wikidata = wikidata,
        wikidataquery = wikidataquery,
        maxdistance = maxdistance,
    }
    
    local val = coord._coord(parameterlist)
    if (not val) and moduleparams.fallbackquery then -- se não tem valor, tente a consulta de substituição
    parameterlist.wikidataquery = moduleparams.fallbackquery
        parameterlist.wikidataquery.entity = item
        val = coord._coord(parameterlist)
    end
    if val and latitude and longitude and localdata['referência geolocalização'] then
        val = val .. ' ' .. localdata['referência geolocalização']
    end
    if val and not localdata['latitude'] then
        val = wd.addLinkBack(val, item, wikidataquery.property)
    end
    if displayinline == false then
        return -- tipo: texto para não ter uma linha vazia na infobox
        {
        type = 'external text',
        sortkey = sortkey,
         value = val
         }
     else
         return val
     end
end

function p.coordenadas(moduleparams)
    if not moduleparams then
        moduleparams = {}
    end
    -- parâmetro coordenadas são a prioridade sobre geolocalização" (=mapa)
    local relevant = localdata['coordenadas'] or localdata['geolocalização']
    if relevant == '-' or relevant == 'não' or relevant == 'não relevante' or relevant == 'sem relvância' then
        return nil
    end
    -- inicialize os parâmetros com os valores do módulo infobox (moduleparams)
    return {
        type = 'mixed',
        label = 'Coordenadas',
        maintenancecat = moduleparams.maintenancecat or '!Página geolocalizável sem parâmetro coordenadas',
        sortkey = moduleparams.sortkey,
         value = function (localdata) return p.coordvalue(moduleparams) end
     }   
end

function p.geoloc(params)

    if not params then
        params = {}
    end
    if (localdata['geolocalização'] == '-') or (localdata['geolocalização'] == 'sem relevância') then
        return nil
    end
    
    return   {
        type = 'map',
        latitude = 'latitude',
        longitude = 'longitude',
        wikidata = params.wikidata or {{property = 'P625'}},
        entity = item,
        maps = function() return localdata['geolocalização'] or params.defaultmaps or "interactive" end, -- parâmetro para a lista de mapas para usar
        staticmaps = 'mapa', -- mapa em modo image simple
        staticmapsWD = {property = "P242", numval = 1}, -- p
        width = params.width,
        pointtype = params.pointtype,
        maptype = params.maptype,
        globe = localdata.globe or localdata['planeta'] or params.globe,
        marker = params.marker,
        markercolor = params.markercolor,
        shapecolor = params.shapecolor,
        default_zoom = localdata['zoom'] or params.default_zoom,
        ids = params.ids or id,
        params = {guessmaps = params.guessmaps} -- = quais mapas usar na ausência de dados fornecidos na |geolocalização
    }
end

function p.locationmap(upright)
    return {
        type = 'images',
        imageparameters =  {'mapa','imageloc'},
        sizeparameter = 'tamanho mapa',
        captionparameter = {'legenda mapa','legenda imageloc'},
        defaultsize = size,
        defaultupright = upright or '1',
        property = 'P242',
        numval = 1,
    }
end

function p.detailedmap(defaultsize)
    return {
        type = 'images',
        imageparameters =  {'mapa'},
        sizeparameter = 'tamanho mapa',
        captionparameter = {'legenda mapa'},
        defaultsize = defaultsize,
        defaultupright = '1',
        property = 'P1621',
        numval = 1,
    }
end

return p