More actions
Content deleted Content added
No edit summary |
No edit summary |
||
Line 56: | Line 56: | ||
:setOffset(args['offset']) |
:setOffset(args['offset']) |
||
qb |
qb |
||
:addWhereList( |
|||
'cards.card_id', |
|||
'=', |
|||
args['card ids'], |
|||
',', |
|||
'OR' |
|||
) |
|||
:addWhere('rarity', '=', args['rarity']) |
:addWhere('rarity', '=', args['rarity']) |
||
:addWhere('character', '=', args['card_character']) |
:addWhere('character', '=', args['card_character']) |
Revision as of 03:14, 12 July 2024
Documentation for this module may be created at Module:Side story datatable/doc
local getArgs = require('Module:Arguments').getArgs
local DatatableBuilder = require('Module:DatatableBuilder')
local QueryBuilder = require('Module:QueryBuilder')
local Yesno = require('Module:Yesno')
local Tabs = require('Module:Card tabs alt')
local DisplayFns = require('Module:DisplayFunctions')
local ProcessingFns = require('Module:ProcessingFunctions')
local VariablesLua = mw.ext.VariablesLua
local p = {}
local DisplayType = {
text = 'TEXT',
icon = 'ICON',
both = 'BOTH'
}
local function formatLink(page, name)
if page and name then
return string.format('[[%s|%s]]', page, name)
end
local Tabs = args['cardPageName']
return nil
end
local function formatIfPretty(pretty, fn)
if pretty == true then return fn end
return nil
end
function p.main(frame)
local args = getArgs(frame)
local columns = args['columns']
local isPretty = Yesno(args['pretty'])
local displayType = DisplayType[args['display type']] or DisplayType.text
local qb = QueryBuilder.new()
qb
:setTables('cards')
:setFields([[
cards._pageName = cardPageName,
cards.card_id,
cards.card_name,
cards.thumbnail,
cards.card_character,
cards.rarity,
]])
:addWhere('card_id', '>', 0)
:setOrderBy('cards.card_id ASC')
:setGroupBy('cards._pageID')
:setLimit(args['limit'] or 500)
:setOffset(args['offset'])
qb
:addWhere('rarity', '=', args['rarity'])
:addWhere('character', '=', args['card_character'])
local datatable = DatatableBuilder.new()
datatable
:setColumns{
{
name = 'id',
header = 'ID',
dataFields = { 'cards.card_id' },
visible = false
},
{
name = 'thumbnail',
header = 'Card',
dataFields = { 'cards.thumbnail' },
fn = DisplayFns.image('64px'),
sortable = false
},
{
name = 'name',
header = 'Side stories',
dataFields = { 'cardPageName', 'cards.card_name' },
css = { ['width'] = '30em' },
fn = formatLink
},
{
name = 'character',
header = 'Character',
dataFields = { 'cards.card_character' },
fn = formatIfPretty(isPretty, formatCharacter),
visible = false
},
{
name = 'rarity',
header = 'Rarity',
dataFields = { 'cards.rarity' },
fn = formatIfPretty(isPretty, formatRarity),
visible = false
}
}
:setData(qb:query())
columns = ProcessingFns.stringToArray(',')(columns)
if columns and #columns > 0 then
for _, column in ipairs(columns) do
datatable:setColumnVisibility(column, true)
end
end
return datatable:tostring()
end
return p