Dieses Modul benötigt Modul:Template translation
Dieses Modul benötigt Modul:Arguments
Dieses Modul benötigt Modul:Navplate
Diese Dokumentationsseite spiegelt den Inhalt der Seite Modul:ManufacturerNavplate/Doku wieder. |
Modulabhängigkeiten
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