The Alchemist Code Wiki

READ MORE

The Alchemist Code Wiki
Register
Advertisement

Documentation for this module may be created at Module:UpdateHistoryGlobal/doc

local dataModel = require("Module:Data").model
local cargo = require('Module:CargoUtil')
local p = {}

function p.mementoListByDate()
    local mementoExtra = mw.loadData("Module:Data/Extra/Memento")
    local render_mem_icon = require('Module:Render/Memento')._icon
    
    local sb = {}

    table.insert(sb, '{| class="wikitable sortable frozen-header"')
    table.insert(sb, '!Date')
    table.insert(sb, '!Memento')
    table.insert(sb, '!Rarity')
    table.insert(sb, '!Source')
    
    local rows = {}
    
    local inames = {}
    for iname, memData in pairs(mementoExtra) do
    	if memData.glDate then
    		inames[#inames+1] = iname
    	end
    end
    local mementos = cargo.query{
		tables = {'ConceptCard=CC', 'ConceptCardLoc=CCLoc', 'Pages'},
		join = {
			'CC.iname = Pages.iname',
			'CC.iname = CCLoc.iname',
		},
		fields = {
			'Pages._pageName = _pageName',
			'CC.iname = iname',
			'CC.server = server',
			'CC.rare = rare',
			'CC.icon = icon',
			'CCLoc.name = name',
		},
		where = {
			'Pages.type = "Memento"',
			('CC.iname IN ("%s")'):format(table.concat(inames, '","')),
			'CC.server = "gl"',
			'CCLoc.lang = "english"',
		},            	
    	
    }
    for _, mem in ipairs(mementos) do
		local memData = mementoExtra[mem.iname]
    	if mem.rare then
            local tempOutput = {}
            table.insert(tempOutput, '|-')
            table.insert(tempOutput, '| '..memData.glDate)
            table.insert(tempOutput, '|'..render_mem_icon({data=mem, size='small'}))
            table.insert(tempOutput, '|'..(tonumber(mem.rare or 0)+1))
            table.insert(tempOutput, '|'..memData.source)
            
            table.insert(rows, {
                date = memData.glDate,
                output = table.concat(tempOutput, "\n")
            })
	    end
    end

    table.sort(rows, function(a, b) return a.date > b.date end)
    
    for i, row in ipairs(rows) do
        table.insert(sb, row.output)
    end
    
    table.insert(sb, "|}")

    return table.concat(sb, "\n")
end

function p.gearListByDate()
    local gearExtra = mw.loadData("Module:Data/Extra/Gear")
    local render_gear_icon = require('Module:Render/Gear')._icon
    
    local sb = {}

    table.insert(sb, '{| class="wikitable sortable frozen-header"')
    table.insert(sb, '!Date')
    table.insert(sb, '!Gear')
    table.insert(sb, '!Rarity')
    table.insert(sb, '!Source')
    
    local gearRows = {}
    
    for iname, gearData in pairs(gearExtra) do
        if gearData['glDate'] then
            local gear = dataModel.query("Artifact", "_pageName,rini,icon", {where = 'iname="'..iname..'" and server = "gl"'})[1] or {}
            if gear.rini then
                local tempOutput = {}
                table.insert(tempOutput, '|-')
                table.insert(tempOutput, '| '..gearData['glDate'])
                table.insert(tempOutput, '|'..render_gear_icon({iname, data=gear, size='small'}))
                table.insert(tempOutput, '|'..(gear.rini+1))
                table.insert(tempOutput, '|'..gearData['source'])
                
                table.insert(gearRows, {
                    date = gearData['glDate'],
                    output = table.concat(tempOutput, "\n")
                })
            end
        end
    end

    table.sort(gearRows, function(a, b) return a.date > b.date end)
    
    for i, row in ipairs(gearRows) do
        table.insert(sb, row.output)
    end
    
    table.insert(sb, "|}")

    return table.concat(sb, "\n")
end

function p.unitListByDate()
    local unitExtra = mw.loadData("Module:Data/Extra/Unit")
    local render_unit_icon = require('Module:Render/Unit')._icon
    
    local sb = {}

    table.insert(sb, '{| class="wikitable sortable frozen-header"')
    table.insert(sb, '!Date')
    table.insert(sb, '!Unit')
    table.insert(sb, '!Rarity')
    table.insert(sb, '!Source')
    
    local unitRows = {}
    
    for iname, unitData in pairs(unitExtra) do
        if unitData['glDate'] then
            local unit = dataModel.query("Unit", "_pageName,rare,img", {where = 'iname="'..iname..'" and server = "gl"'})[1] or {}
            if unit.rare then
                local tempOutput = {}
                table.insert(tempOutput, '|-')
                table.insert(tempOutput, '| '..unitData['glDate'])
                table.insert(tempOutput, '|'..render_unit_icon({iname, data=unit, size='small'}))
                table.insert(tempOutput, '|'..(unit.rare+1))
                table.insert(tempOutput, '|'..unitData['source'])
                
                table.insert(unitRows, {
                    date = unitData['glDate'],
                    output = table.concat(tempOutput, "\n")
                })
            end
        end
    end

    table.sort(unitRows, function(a, b) return a.date > b.date end)
    
    for i, row in ipairs(unitRows) do
        table.insert(sb, row.output)
    end
    
    table.insert(sb, "|}")

    return table.concat(sb, "\n")
end

return p
Advertisement