Module:Cooking Effects List

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("", 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