Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:Gacha datatable: Difference between revisions

From Sekaipedia
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


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
Cookies help us deliver our services. By using our services, you agree to our use of cookies.