Documentation for this module may be created at Module:Card Table/doc
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
local navbar = require('Module:Navbar')._navbar
local icons = require('Module:Icons')._main
local constants = require('Module:Constants')
local utils = require('Module:Utilities')
local cargo = mw.ext.cargo
local p = {}
local function cargoQuery(cargo_args)
local wheres = {
'card_id > 0'
}
if cargo_args.status then
table.insert(
wheres,
string.format(
'status = "%s"',
cargo_args.status
)
)
end
local tables = 'Cards'
local fields = [[
card_id,
_pageName,
thumbnail,
card_name,
card_character,
unit,
support_unit,
attribute,
rarity,
date,
status
]]
local args = {
where = table.concat(wheres, ' AND '),
orderBy = 'card_id ASC',
limit = cargo_args['limit'] or 600,
offset = cargo_args['offset']
}
return cargo.query( tables, fields, args )
end
function p.main(frame)
local args = getArgs(frame)
return p._main(args)
end
function p._main(args)
local cargo_args = {
['characters'] = args['characters'],
['units'] = args['units'],
['support_units'] = args['support units'],
['attributes'] = args['attributes'],
['rarities'] = args['rarities'],
['status'] = args['status'],
['limit'] = args['limit'],
['offset'] = args['offset']
}
local results = cargoQuery(cargo_args)
local hide_status = yesno(args['hide status'], false)
local root = mw.html.create()
local root_table = root:tag('table')
:addClass('wikitable'):addClass('sortable')
:css({
['margin-bottom'] = '0',
['width'] = '100%',
['text-align'] = 'center'
})
local table_header = root_table:tag('tr')
:tag('th')
:attr('width', '25px')
:wikitext('ID')
:done()
:tag('th')
:attr('width', '96px')
:wikitext('Thumbnail')
:done()
:tag('th')
:wikitext('Card Name')
:done()
:tag('th')
:attr('width', '200px')
:wikitext('Character')
:done()
:tag('th')
:attr('width', '200px')
:wikitext('Unit')
:done()
:tag('th')
:attr('width', '200px')
:wikitext('Support Unit')
:done()
:tag('th')
:attr('width', '150px')
:wikitext('Attribute')
:done()
:tag('th')
:attr('width', '150px')
:wikitext('Rarity')
:done()
:tag('th')
:attr('width', '150px')
:wikitext('Date Added')
:done()
if not hide_status then
table_header:tag('th')
:attr('width', '150px')
:wikitext('Status')
:done()
end
if #results > 0 then
for k,v in ipairs(results) do
local _row = root_table:tag('tr')
_row:tag('td')
:wikitext(v.card_id)
:done()
_row:tag('td')
:wikitext(string.format('[[File:%s|96px]]', v.thumbnail))
:done()
_row:tag('td')
:wikitext(string.format('[[%s|%s]]', v._pageName, v.card_name))
:done()
_row:tag('td')
:wikitext('[[' .. v.card_character .. ']]')
:done()
_row:tag('td')
:wikitext(string.format(
'%s [[%s]]',
icons({ v.unit, size = '25px' }),
constants.get_unit(v.unit)
))
:done()
if v.support_unit and v.support_unit ~= '' then
_row:tag('td')
:wikitext(string.format(
'%s [[%s]]',
icons({ v.support_unit, size = '25px' }),
v.support_unit
))
:done()
else
_row:tag('td')
:wikitext()
:done()
end
_row:tag('td')
:wikitext(
icons({ v.attribute, size = '25px' }) ..
' ' ..
utils.capitalize(v.attribute)
)
:done()
if tonumber(v.rarity) and tonumber(v.rarity) > 0 then
_row:tag('td')
:wikitext(icons({ v.rarity .. ' star', size = '25px' }))
:done()
else
_row:tag('td')
:wikitext(icons({ 'birthday', size = '25px' }))
:done()
end
_row:tag('td')
:wikitext(v.date)
:done()
if not hide_status then
_row:tag('td')
:wikitext(v.status)
:done()
end
end
else
root_table:tag('tr')
:tag('td'):attr('colspan', 10):wikitext('No cards')
:done()
:done()
end
return tostring(root).. tostring(navbar({ 'Card Table', plain = 1, noedit = 1, brackets = 1 }))
end
return p