Saltar para o conteúdo

Módulo:Infobox/Motor

Permanently protected module
Origem: Wikipédia, a enciclopédia livre.

local p = {}
local generic = require('Módulo:Infobox/Funções')
local linguistic = require('Módulo:Linguística')
local wikidata = require('Módulo:Infobox/Wikidata')

local function dimensions( localdata )
    local dimensions = {
        -- parâmetro, abreviação para exibir no cabeçalho, nome Wikidata, nome completo para exibir no cabeçalho, parar
        {'diâmetro', '∅', 'P2386', 'Diâmetro'},
        {'comprimento', 'L', 'P2043', 'Comprimento'},
        {'largura', 'l', 'P2049', 'Largura'},
        {'altura', 'H', 'P2048', 'Altura'},
    }
    local data, dims = {}, {}
    local label = 'Dimensões'
    local unit = localdata['unidade'] or 'mm'
  
    local wikidataval = function(d)
        return wikidata.formatStatements{
            entity = localdata.item,
            showunit = '-',
            targetunit = unit,
            addcat = true,
            property = d
        }
    end
    local propertyused = nil
  
    for i, j in pairs(dimensions) do
        local val = localdata[j[1]]
        if localdata.item and j[3] and not val then
            val = wikidataval(j[3])
            if val then
                propertyused = j[3]
            end
        end
        if val then
            table.insert(data, val)
            table.insert(dims, i)
        end
    end
    if #data == 0 then
        return nil
    end
    if #data == 1 then
        label = dimensions[dims[1]][4]
    else
        for i, j in pairs(dims) do dims[i] = dimensions[j][2] end
        label = label .. linguistic.inparentheses(linguistic.conj(dims, ' × '))
    end

    local val = linguistic.conj(data, ' × ') .. ' ' .. unit
    if propertyused then
        val = wikidata.formatAndCat{entity = localdata.item, property = propertyused, value = val}
    end
      
    return {
        type = 'mixed',
        label = label,
        value = function() return val end
    }
end

return {
    maincolor = '#00507F',
    parts = {
        generic.title('wiki', {color = 'white'}),
        generic.mainimage('!Artigos de tecnologia sem imagens'),
        {type = 'table', separator = true, rows = {
        {type = "mixed",
            label = "Tipo",
        value = "tipo",
        property = "P279"
        },
        {type = 'mixed',
                label = 'Outros nomes',
                value = 'outros nomes',
                },
            {type = 'mixed',
                label = 'Construtor',
                plurallabel = 'Construtores',
                value = 'construtor',
                wikidata = {property = 'P176', conjtype = '<br />'},
                },
            {type = 'mixed',
                label = 'Anos de produção',
                value = 'ano',
                wikidata = function ( item ) return wikidata.mainDate(item) end,
                },
            {type = 'mixed',
                label = 'Produção',
                value = 'quantidade produzida',
                property = 'P1092',
                },
            {type = 'mixed',
                label = 'Aplicação',
                plurallabel = 'Aplicações',
                value = 'aplicações',
                property = 'P366',
                },
            },
        },
        {type = 'table', title = 'Características técnicas', titlestyle={color='white'}, rows = {
            {type = 'mixed',
                label = 'Cilindro',
                plurallabel = 'Cilindros',
                value = 'cilindrada',
                wikidata = {property = 'P2234', targetunit = 'cm3', rounding = '0'},
                },
            --{type = 'mixed',
                --label = 'Número de cilindros',
                --value = 'nombre cylindres',
                --property = 'P1100',
                --},
            {type = 'mixed',
                label = 'Disposição',
                value = 'disposição cilindros',
                property = 'P1002',
                },
            {type = 'mixed',
                label = 'Ângulo dos cilindros',
                value = 'ângulo cilindros',
                },
            {type = 'mixed',
                label = 'Calibre',
                value = 'calibre',
                wikidata = {property = 'P2556', targetunit = 'mm', rounding = '2'},
                },
            {type = 'mixed',
                label = 'Curso',
                value = 'curso',
                wikidata = {property = 'P2557', targetunit = 'mm', rounding = '2'},
                },
            {type = 'mixed',
                label = 'Refrigeração',
                value = {'refrigeração', 'refrigeramento'},
                property = 'P588',
                },
            {type = 'mixed',
                label = 'Combustível',
                plurallabel = 'Combustíveis',
                value = 'combustível',
                property = 'P618',
                },
            {type = 'mixed',
                label = 'Ignição',
                value = 'ignição',
                },
            },
        },
        {type = 'table', title = 'Performances', titlestyle={color='white'}, rows = {
            {type = 'mixed',
                label = 'Capacidade max.',
                plurallabel = 'Capacidades max.',
                value = 'capacidade máxima',
                wikidata = {property = 'P2109', showqualifiers = {'P2052', 'P2044'}, targetunit = 'kw', conjtype = '<br />'},
                },
            {type = 'mixed',
                label = 'Binário max.',
                plurallabel = 'Binários max.',
                value = 'binário máximo',
                wikidata = {property = 'P2230', showqualifiers = {'P2052'}, targetunit = 'N', conjtype = '<br />'},
                },
            {type = 'mixed',
                label = 'Força de massa',
                value = 'força de massa',
                --wikidata = {}, -- peut se calculer en divisant la valeur P1100 par P2556
                },
            {type = 'mixed',
                label = 'Taxa de compressão',
                value = 'taxa de compressão',
                wikidata = function ( item )
                    local claims = wikidata.getClaims{
                        entity = item,
                        property = 'P1247',
                        conjtype = '<br />',
                    }
                    if not claims then
                        return nil
                    end
                    return wikidata.formatAndCat{
                        entity = item,
                        property = 'P1247',
                        linktopic = ':55-',
                    } .. ':1'
                    end,
                },
            {type = 'mixed',
                label = 'Consumo',
                value = 'consumo'
                },
            },
        },
        {type = 'table', title = 'Dimensões', titlestyle={color='white'}, rows = {
            dimensions,
            {type = 'mixed',
                label = 'Massa',
                plurallabel = 'Massas',
                value = 'massa',
                wikidata = {property = 'P2067', targetunit = 'kg', rounding = '2'},
                },
            },
        },
        {type = 'navbox',
            separated = true,
            color = 'default',
            previousparameter = 'motor anterior',
            previouswikidata = {property = 'P155', excludespecial = true},
            nextparameter = 'motor seguinte',
            nextwikidata = {property = 'P156', excludespecial = true}
            },
        },
    }