Module:StonemasonPassiveList: Difference between revisions
offload much of the search, screen, and format functions to the new ProfessionList module, so they work the same for all table
(No need to hide broken image file links. Should encourage people to upload them.) |
(offload much of the search, screen, and format functions to the new ProfessionList module, so they work the same for all table) |
||
Line 1:
require('strict')
require('Module:Mw.html extension')
local lang = mw.getContentLanguage()
local plist = require('Module:ProfessionList')
local rts = require('Module:RecipeTreeSearch')
local p = {}
Line 9:
-- non dynamic module, no inputs
function p.main()
local queryString = '[[Category:Stonemason]] AND [[Category:Pages with recipes]] OR [[Category:Pages with activities]]'
local function screenFunction(item)
return item.passive
end
local results = plist.generate_recipe_table(queryString,screenFunction)
results = p.formatResults(results)
Line 40 ⟶ 25:
--return '<pre>'..mw.text.jsonEncode(results, mw.text.JSON_PRETTY)..'</pre>'
end
-- do calculations and determine strings to go in cells
function p.formatResults(results)
--simple check for nil results
if results ==nil or results[1] == nil then
return nil
end
-- iterate through products
for _, item in ipairs(results) do
-- Ebsworth work
if item.
item.profit = item.coins
end
--
item.
-- no downtime for passives
item.productPerHour = item.duration and 1 / item.duration * 3600
-- properties per hour
item.
item.profitPerHour = item.profit and item.productPerHour and math.floor(item.profit * item.productPerHour)
end
Line 125 ⟶ 59:
-- make the table
function p.displayTable(results)
--simple check for nil results
if results ==nil or results[1] == nil then
return 'No data found for table'
end
local out = mw.html.create('table')
:addClass('wikitable sortable')
Line 133 ⟶ 73:
:tag('th')
:attr{ colspan = '3' }
:wikitext('
:done()
:tag('th')
Line 165 ⟶ 105:
:done()
:done()
for i, item in ipairs(results) do
local row = out:tag('tr')
--level
:IF(item.level)
:tag('td')
:css{ ['text-align'] = 'center' }
:wikitext(item.
:done()
:ELSE()
:node(plist.unknown_value_edit_cell(item.pageName,1))
:END()
-- recipe
:node(plist.three_column_image_text(item.product,item.output[1].quantity,'File:' .. item.product .. '.png',item.product,item.product))
-- materials
:node(
:node(plist.currency_cell(item.buyPrice))
:node(plist.currency_cell(item.sellPrice))
:
:
:
:css{ ['text-align'] = 'center' }
:attr{ colspan = '21' }
:
:done()
:END()
:IF(item.type=='activity' and not item.profit)
:node(
:ELSE()
:node(plist.currency_cell(item.profit))
:END()
:node(plist.currency_cell(item.profitPerHour))
-- XP
:IF(item.xp)
:tag('td')
:wikitext(item.
:done()
:ELSE()
:node(plist.unknown_value_edit_cell(item.pageName,1))
:END()
-- XP per hour
:IF(item.xpPerHour)
:tag('td')
:wikitext(item.
:done()
:ELSE()
:node(plist.unknown_value_cell(1))
:END()
-- XP per hour
:node(plist.currency_cell(item.profitPerXP))
:done()
end
|