Module:Cooking Effects List: Difference between revisions

From Caves of Qud Wiki
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
 
(4 intermediate revisions by the same user not shown)
Line 21: Line 21:
end
end


function p.triggerConditions(frame)
function p.triggeredEffects(frame)
   return p.main(frame, 'TriggeredEffects')
   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
end


Line 28: Line 41:


frame=mw.getCurrentFrame()
frame=mw.getCurrentFrame()
        p.setcols(effecttype)
local data = h.makeAndRunQuery(effecttype)
local data = h.makeAndRunQuery(effecttype)
         h.formatRows(data, effecttype)
         h.formatRows(data, effecttype)
Line 42: 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 53: Line 67:


function h.formatOneRow(row, type)
function h.formatOneRow(row, type)
        if type == 'UnitEffects' then
         row[COLUMNS[1]] = row.Type
            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
         row[effectrow] = row.Type
         row['Cooking Domain'] = row.CookingDomain:gsub('-based]]', ']]')
         row['Cooking Domain'] = row.CookingDomain:gsub('-based]]', ']]')
         row['Possible Ingredients'] = mw.getCurrentFrame():expandTemplate{ title = 'food that grants', args = { row.PlainName, 'commas' } }
         row['Possible Ingredients'] = mw.getCurrentFrame():expandTemplate{ title = 'food that grants', args = { row.PlainName, 'commas' } }
Line 70: 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