Content added Content deleted
No edit summary |
(add rate up column) |
||
Line 23: | Line 23: | ||
local qb = QueryBuilder.new() |
local qb = QueryBuilder.new() |
||
qb |
qb |
||
:setTables('Gachas') |
:setTables('Gachas, Gacha_Rate_Up') |
||
:setFields([[ |
:setFields([[ |
||
_pageName, |
Gachas._pageName, |
||
gacha_name, |
Gachas.gacha_name, |
||
logo, |
Gachas.logo, |
||
DATE_FORMAT(DATE_ADD(start, INTERVAL 9 HOUR), "%Y/%m/%d, %H:%i JST") = start, |
DATE_FORMAT(DATE_ADD(Gachas.start, INTERVAL 9 HOUR), "%Y/%m/%d, %H:%i JST") = start, |
||
DATE_FORMAT(DATE_ADD(end, INTERVAL 9 HOUR), "%Y/%m/%d, %H:%i JST") = end, |
DATE_FORMAT(DATE_ADD(Gachas.end, INTERVAL 9 HOUR), "%Y/%m/%d, %H:%i JST") = end, |
||
Gacha_Rate_Up.ids |
|||
]]) |
]]) |
||
:setJoinOn('Gachas._pageID = Gacha_Rate_Up._pageID') |
|||
:addWhere('gacha_id', '>', 0) |
:addWhere('Gachas.gacha_id', '>', 0) |
||
:setOrderBy('Gachas.start ASC') |
:setOrderBy('Gachas.start ASC') |
||
:setGroupBy('_pageName') |
:setGroupBy('Gachas._pageName') |
||
:setLimit(200) |
:setLimit(200) |
||
qb |
qb |
||
Line 47: | Line 49: | ||
name = 'logo', |
name = 'logo', |
||
header = 'Logo', |
header = 'Logo', |
||
dataFields = { 'logo' }, |
dataFields = { 'Gachas.logo' }, |
||
func = formatLogo, |
func = formatLogo, |
||
css = { ['width'] = '192px' }, |
css = { ['width'] = '192px' }, |
||
Line 55: | Line 57: | ||
name = 'name', |
name = 'name', |
||
header = 'Gacha', |
header = 'Gacha', |
||
dataFields = { '_pageName', 'gacha_name' }, |
dataFields = { 'Gachas._pageName', 'Gachas.gacha_name' }, |
||
func = formatName |
func = formatName |
||
}, |
}, |
||
Line 70: | Line 72: | ||
css = { ['white-space'] = 'nowrap' } |
css = { ['white-space'] = 'nowrap' } |
||
}, |
}, |
||
{ |
|||
name = 'rate up', |
|||
header = 'Rate up cards', |
|||
dataFields = { 'Gacha_Rate_Up.ids' }, |
|||
} |
|||
} |
} |
||
:setData(qb:query()) |
:setData(qb:query()) |
Revision as of 15:56, 28 March 2022
This module depends on the following other modules: |
To generate {{Gacha datatable}}, invoke using the main function.
local getArgs = require('Module:Arguments').getArgs
local DatatableBuilder = require('Module:DatatableBuilder')
local QueryBuilder = require('Module:QueryBuilder')
local p = {}
local function formatLogo(logo)
if logo then
return string.format('[[File:%s|192px]]', logo)
end
return nil
end
local function formatName(pageName, gachaName)
return string.format('[[%s|%s]]', pageName, gachaName)
end
function p.main(frame)
local args = getArgs(frame)
local qb = QueryBuilder.new()
qb
:setTables('Gachas, Gacha_Rate_Up')
:setFields([[
Gachas._pageName,
Gachas.gacha_name,
Gachas.logo,
DATE_FORMAT(DATE_ADD(Gachas.start, INTERVAL 9 HOUR), "%Y/%m/%d, %H:%i JST") = start,
DATE_FORMAT(DATE_ADD(Gachas.end, INTERVAL 9 HOUR), "%Y/%m/%d, %H:%i JST") = end,
Gacha_Rate_Up.ids
]])
:setJoinOn('Gachas._pageID = Gacha_Rate_Up._pageID')
:addWhere('Gachas.gacha_id', '>', 0)
:setOrderBy('Gachas.start ASC')
:setGroupBy('Gachas._pageName')
:setLimit(200)
qb
:addWhere('start', '<', args['start before'])
:addWhere('start', '>', args['start after'])
:addWhere('end', '<', args['end before'])
:addWhere('end', '>', args['end after'])
local datatable = DatatableBuilder.new()
datatable
:setColumns{
{
name = 'logo',
header = 'Logo',
dataFields = { 'Gachas.logo' },
func = formatLogo,
css = { ['width'] = '192px' },
sortable = false
},
{
name = 'name',
header = 'Gacha',
dataFields = { 'Gachas._pageName', 'Gachas.gacha_name' },
func = formatName
},
{
name = 'start',
header = 'Start date',
dataFields = { 'start' },
css = { ['white-space'] = 'nowrap' }
},
{
name = 'end',
header = 'End date',
dataFields = { 'end' },
css = { ['white-space'] = 'nowrap' }
},
{
name = 'rate up',
header = 'Rate up cards',
dataFields = { 'Gacha_Rate_Up.ids' },
}
}
:setData(qb:query())
return datatable:tostring()
end
return p