Module:Cooking Effects List: Difference between revisions

From Caves of Qud Wiki
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
 
(One intermediate revision by the same user not shown)
Line 56: Line 56:
                 join = {'CE._ID=CEID._rowID'},
                 join = {'CE._ID=CEID._rowID'},
fields = {'CEID._value=Type', 'CONCAT("[[", CE._pageName, "|", PlainName,"]]")=CookingDomain', 'PlainName'},
fields = {'CEID._value=Type', 'CONCAT("[[", CE._pageName, "|", PlainName,"]]")=CookingDomain', 'PlainName'},
where = 'CE._pageNamespace="0"',
where = 'CE._pageNamespace="0" AND CEID._value <> ""',
orderBy = 'PlainName ASC'
orderBy = 'PlainName ASC'
}
}
Line 75: Line 75:
local output = mw.html.create()
local output = mw.html.create()
local tbl = output:tag('table')
local tbl = output:tag('table')
:addClass('wikitable')
:addClass('cargoDynamicTable display dataTable')
:addClass('sortable')
:addClass('sortable')
util_html.printHeader(tbl, COLUMNS)
-- util_html.printHeader(tbl, COLUMNS)
        tbl:tag('tr')
          :tag('th'):css('width','470px'):wikitext(COLUMNS[1])
          :tag('th'):css('width','130px'):wikitext(COLUMNS[2])
          :tag('th'):wikitext(COLUMNS[3])
util_html.printRowsByList(tbl, data, COLUMNS)
util_html.printRowsByList(tbl, data, COLUMNS)
return output
return output

Latest revision as of 00:45, 1 September 2020


local util_args = require('Module:Args Utility')
local util_cargo = require('Module:Cargo Utility')
local util_map = require('Module:Map Utility')
local util_html = require('Module:HTML Utility')
local util_table = require('Module:Table Utility')
local util_text = require('Module:Text Utility')
local favilink = require('Module:Favilink')

local COLUMNS = { 'Unit Effects', 'Cooking Domain', 'Possible Ingredients' }

local h = {}

local p = {}

function p.basicEffects(frame)
   return p.main(frame, 'UnitEffects')
end

function p.triggerConditions(frame)
   return p.main(frame, 'Triggers')
end

function p.triggeredEffects(frame)
   return p.main(frame, 'TriggeredEffects')
end

function p.setcols(type)
    if type == 'UnitEffects' then
            effectrow = 'Basic Effect'
    elseif type == 'Triggers' then
            effectrow = 'Trigger Condition'
    elseif type == 'TriggeredEffects' then
            effectrow = 'Triggered Effect'
    else
           error('There was no effect type name: ' .. (type or 'nil'))
    end
    COLUMNS[1] = effectrow
end

function p.main(frame, effecttype)

frame=mw.getCurrentFrame()
        p.setcols(effecttype)
	local data = h.makeAndRunQuery(effecttype)
        h.formatRows(data, effecttype)
	return h.makeOutput(data)
end

function h.makeAndRunQuery(args)
	return util_cargo.queryAndCast(h.makeQuery(args))
end

function h.makeQuery(type)
	local query = {
		tables = { 'CookingEffects=CE', 'CookingEffects__'..type..'=CEID' },
                join = {'CE._ID=CEID._rowID'},
		fields = {'CEID._value=Type', 'CONCAT("[[", CE._pageName, "|", PlainName,"]]")=CookingDomain', 'PlainName'},
		where = 'CE._pageNamespace="0" AND CEID._value <> ""',
		orderBy = 'PlainName ASC'
	}
	return query
end

function h.formatRows(data, type)
	util_map.rowsInPlace(data, h.formatOneRow, type)
end

function h.formatOneRow(row, type)
        row[COLUMNS[1]] = row.Type
        row['Cooking Domain'] = row.CookingDomain:gsub('-based]]', ']]')
        row['Possible Ingredients'] = mw.getCurrentFrame():expandTemplate{ title = 'food that grants', args = { row.PlainName, 'commas' } }
end

function h.makeOutput(data)
	local output = mw.html.create()
	local tbl = output:tag('table')
		:addClass('cargoDynamicTable display dataTable')
		:addClass('sortable')
	-- util_html.printHeader(tbl, COLUMNS)
        tbl:tag('tr')
           :tag('th'):css('width','470px'):wikitext(COLUMNS[1])
           :tag('th'):css('width','130px'):wikitext(COLUMNS[2])
           :tag('th'):wikitext(COLUMNS[3])
	util_html.printRowsByList(tbl, data, COLUMNS)
	return output
end

return p