Documentation for this module may be created at Module:RecipeUsedIn/doc
local util_args = require('Module:ArgsUtil')
local util_cargo = require("Module:CargoUtil")
local lang = mw.getLanguage('en')
local COLUMNS = { 'Ingredients', 'Outcome', 'CraftTime', 'Experience' }
local COL_NAMES = {
CraftTime = 'Craft time',
Experience = 'Experience<br>gained'
}
local h = {}
local p = {}
function p.main(frame)
local args = util_args.merge()
local data = util_cargo.queryAndCast(h.getQuery(args))
h.processData(data)
return h.makeOutput(result)
end
function h.getQuery(args)
local query = {
tables = {
'Recipes',
'Items',
'Recipes=Recipes2',
'Items=Items2',
},
join = {
'Recipes._pageName=Items._pageName',
'Recipes.id=Recipes2.id',
'Recipes2._pageName=Items2._pageName',
},
fields = {
'Items',
-- TODO
},
oneToMany = {
groupBy = { 'RecipeId' },
fields = {
Ingredients = {
'Recipes2.',
'Items2.',
'Items2.',
-- TODO
},
}
},
}
return query
end
function h.makeOutput(result)
local output = mw.html.create('table')
:addClass('wikitable')
:addClass('sortable')
:css('min-width', '50%')
:css('white-space', 'nowrap')
h.printCaption(output)
h.printHeader(output)
h.printData(output, result)
end
function h.processData(data)
-- TODO
end
function h.printCaption(output)
output:tag('caption')
:addClass('infoboxname')
:attr('colspan', 4)
:wikitext('Used in the following Recipes')
end
function h.printHeader(output)
local tr = output:tag('tr')
for _, col in ipairs(COLUMNS) do
tr:tag('th')
:wikitext(COL_NAMES[col] or col)
end
end
function h.printData(output, result)
for _, dataRow in ipairs(result) do
local tr = output:tag('tr')
h.printOneDataRow(tr, dataRow)
end
end
function h.printOneDataRow(tr, dataRow)
for _, col in ipairs(COLUMNS) do
tr:tag('td')
td:wikitext(dataRow[col])
end
end
return p