Modul:ManufacturerNavplate

From Star Citizen Wiki
Dokumentations-Unterseite Diese Dokumentationsseite spiegelt den Inhalt der Seite Modul:ManufacturerNavplate/Doku wieder.

Modulabhängigkeiten

  • OOjs UI icon bookmarkOutline.svg Dieses Modul setzt folgende Kategorie Universum

Modulinfo

Dieses Modul setzt die Vorlage:HerstellerNavplate um. Anweisungen zur Verwendung findest du auf der Vorlagenseite.


local ManufacturerNavplate = {}

local metatable = {}
local methodtable = {}

metatable.__index = methodtable

--- Queries the SMW Store
--- @return table
function methodtable.getSmwData( self )
    -- Cache multiple calls
    if self.smwData ~= nil then
        return self.smwData
    end

    manufacturer = self.manufacturer

    local askData = {
        '?#-=page',
        '?Name#-=name',
        '?Typ#-=type',
        '+lang=' .. self.translation._getLanguageSubpage( self.title ),
        '?Rüstungsklasse#-=armortype',
        '+lang=' .. self.translation._getLanguageSubpage( self.title ),
        '?Fahrzeugtyp#-=vehicletype',
        '+lang=' .. self.translation._getLanguageSubpage( self.title ),
        '?Waffentyp#-=weapontype',
        '+lang=' .. self.translation._getLanguageSubpage( self.title ),
        '?Ist Basisversion=base_version',
        order = 'asc',
        limit = 250,
    }

    local query = ''

    if string.sub( manufacturer, 1, 2 ) == '[[' then
    	query = manufacturer
    else
    	query = '[[Hersteller::' .. manufacturer .. '|+depth=0]]'
    end

	query = query .. '[[Kategorie:Universum]]' -- Ignore subobjects
	table.insert( askData, 1, query )

    local data = mw.smw.ask( askData )

    if data == nil or data[ 1 ] == nil then
        return nil
    end

    local presort = {}
    for _, row in pairs( data ) do
    	if type( row['armortype'] ) == 'string' then
    		row['type'] = row['armortype']
    	end

    	if type( row['weapontype'] ) == 'string' then
    		row['type'] = row['weapontype']
    	end
    	
    	if row.vehicletype ~= nil then
    		-- TODO: Localize and fix ground vehicles
    		row['type'] = 'Raumschiff'
		end

		if row.base_version == nil or row.base_version == true then
			table.insert( presort, row )
		end
    end

	mw.logObject(presort)

    self.smwData = presort

    return self.smwData
end

--- Outputs the table
---
--- @return string
function methodtable.make( self )
    if self.manufacturer == nil or self.manufacturer == '' then
        return ''
    end

    local data = self:getSmwData( self.manufacturer )

    if data == nil then
        return ''
    end

    local plateTitle = string.format( 'Produkte von %s', self.manufacturer )
    if self.translation._getLanguageSubpage( self.title ) ~= 'de' then
    	plateTitle = string.format( 'Products from %s', self.manufacturer )
	end

    return self.navplate:createTable(
        self.navplate:group( data, 'type' ),
        plateTitle
    )
end


--- New Instance
--- @return table ManufacturerNavplate
function ManufacturerNavplate.new( self, frameArgs )
    local manufacturer = frameArgs[ 1 ] or frameArgs[ 'Hersteller' ] or frameArgs[ 'Manufacturer' ]
	local title = mw.title.getCurrentTitle()

    local instance = {
        args = frameArgs,
        manufacturer = manufacturer,
        plateType = 'Hersteller',
        title = title,
        navplate = require( 'Module:Navplate' ):new( manufacturer ),
        translation = require( 'Module:Template translation' )
    }

    setmetatable( instance, metatable )

    return instance
end


--- Entry for module calls
---
--- @return string
function ManufacturerNavplate.fromArgs( frame )
    local args = require( 'Module:Arguments ').getArgs( frame )

    local instance = ManufacturerNavplate:new( args )

    return instance:make()
end


return ManufacturerNavplate
Cookies help us deliver our services. By using our services, you agree to our use of cookies.