Editing Module:ProfessionList

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
local currency = require('Module:Currency')
local currency = require('Module:Currency')
local search = require('Module:RecipeTreeSearch')


local p = {}
local p = {}
Line 57: Line 56:
-- the queryString is just a selection of pages, from any combination of SMW properties and categories
-- the queryString is just a selection of pages, from any combination of SMW properties and categories
-- for pages with multiple recipes or activities, will make on entry into the results table for each
-- for pages with multiple recipes or activities, will make on entry into the results table for each
function p.generate_recipe_table(queryString)
-- screenFunction takes a decoded recipe/activity JSON and returns true if it is to be kept
function p.generate_recipe_table(queryString,screenFunction)
-- first formulate the query to get the list of pages
-- first formulate the query to get the list of pages
Line 76: Line 74:
end
end
-- collate structure
-- output structure
local recipes = {}
local output = {}
-- iterate through pages found
-- iterate through pages found
Line 89: Line 87:
for _, JSON in ipairs(page.activityJSON) do
for _, JSON in ipairs(page.activityJSON) do
local item = mw.text.jsonDecode(JSON)
local item = mw.text.jsonDecode(JSON)
item.pageName = page.pageName
item.page = page.pageName
item.pageImage = page.pageImage
item.pageImage = page.pageImage
item.type = 'activity'
item.type = 'activity'
table.insert(recipes,item)
table.insert(output,item)
end
end
end
end
Line 103: Line 101:
for _, JSON in ipairs(page.recipeJSON) do
for _, JSON in ipairs(page.recipeJSON) do
local item = mw.text.jsonDecode(JSON)
local item = mw.text.jsonDecode(JSON)
item.pageName = page.pageName
item.page = page.pageName
item.pageImage = page.pageImage
item.pageImage = page.pageImage
item.type = 'recipe'
item.type = 'recipe'
table.insert(recipes,item)
table.insert(output,item)
end
end
end
end
Line 112: Line 110:
end
end
-- if none of the pages had recipes of activities, skip the rest of this function
if recipes == nil or recipes[1] == nil then
return nil
end
-- output structure
local output = {}
-- screen using screenFunction
for _, item in ipairs(recipes) do
if screenFunction(item) then
table.insert(output,item)
end
end
-- if all of the results were screened, skip the rest of this function
if output == nil or output[1] == nil then
return nil
end

-- sort the output by the .level parameter
-- sort the output by the .level parameter
table.sort(output, function(item1, item2)
table.sort(output, function(item1, item2)
Line 146: Line 124:
return item1.level < item2.level
return item1.level < item2.level
end)
end)
-- perform a number of useful calculations on the data that are widely useful
-- like cost of materials, profit of products, recipe tree search
for _,item in ipairs(output) do
item.product = item.output[1].name or ''
-- perform the full recipe tree search on the product
local fullRecipe = search.main(item.product)
-- overwrite any parameters from the original recipe with their counterparts from the full recipe
-- parameters which dont exist in the fullRecipe wont be overwritten,
-- first need to nil the xp, kp, and duration, since if they are nil in the fullRecipe they must stay nil
item.xp = nil
item.kp = nil
item.duration = nil
for key,value in pairs(fullRecipe) do
item[key] = value
end
-- include the price of selling the product
local sell = search.getShopSellPrice(item.product)
local qty = item.output[1].quantity
item.sellPrice = sell and qty and sell * qty
item.profit = item.buyPrice and item.sellPrice and item.sellPrice - item.buyPrice
item.profitPerXP = item.profit and item.xp and item.profit / item.xp
end
return output
return output
end

function p.one_column_image_text(materials)
local materialCell = mw.html.create('td')

for _, mat in ipairs(materials) do
materialCell:wikitext(mat.quantity .. ' &times; [[File:' .. mat.name .. '.png|18px|link=' .. mat.name .. ']] [[' .. mat.name .. ']]<br>')
end
return materialCell
end

function p.two_column_image_text(sort,image,text,link)
return mw.html.create('td')
:css{ ['border-right'] = '0', ['text-align'] = 'right', ['max-width'] = '100px' }
:attr{ ['data-sort-value'] = sort }
:wikitext(' [[' .. image .. '|link=' .. link .. '|30x30px]]')
:done()
:tag('td')
:addClass('plinkt-link no-border')
:wikitext('[[' .. link .. '|' .. text ..']]')
:done()
end

function p.three_column_image_text(sort,quantity,image,text,link)
return mw.html.create('td')
:css{ ['border-right'] = '0', ['padding-right'] = '0', ['text-align'] = 'right' }
:attr{ ['data-sort-value'] = sort }
:wikitext(quantity .. ' &times;')
:done()
:tag('td')
:addClass('plinkt-image no-border')
:css{ ['border-left'] = '0', ['padding-left'] = '0' }
:wikitext('[[' .. image .. '|link=' .. link .. '|30px]]')
:done()
:tag('td')
:addClass('plinkt-link no-border')
:wikitext('[[' .. link .. '|' .. text .. ']]')
:done()
end
end
Please note that all contributions to Brighter Shores Wiki are considered to be released under the CC BY-NC-SA 3.0 (see Brighter Shores:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!
Cancel Editing help (opens in new window)
Preview page with this template

This page is a member of a hidden category: