Module:Sandbox/User:The Gaffer/Modules/Infobox Recipe: Difference between revisions
Jump to navigation
Jump to search
Content added Content deleted
The Gaffer (talk | contribs) No edit summary |
The Gaffer (talk | contribs) No edit summary |
||
Line 7: | Line 7: | ||
local currency = require('Module:Currency').parse |
local currency = require('Module:Currency').parse |
||
-- |
-- get the buy price from the query result |
||
local function getCost(queryResult) |
local function getCost(queryResult) |
||
if type(queryResult) == "table" and queryResult[1]['Shop buy price'] then |
if type(queryResult) == "table" and queryResult[1]['Shop buy price'] then |
||
Line 15: | Line 15: | ||
end |
end |
||
-- Get buy prices of raw materials |
|||
local rawmat1cost = args.rawmat1 and getCost(mw.smw.ask('[[:+]][[Sold item::' .. args.rawmat1 .. ']]|?Shop buy price|sort=Shop buy price|order=asc|limit=1')) or 0 |
local rawmat1cost = args.rawmat1 and getCost(mw.smw.ask('[[:+]][[Sold item::' .. args.rawmat1 .. ']]|?Shop buy price|sort=Shop buy price|order=asc|limit=1')) or 0 |
||
local rawmat2cost = args.rawmat2 and getCost(mw.smw.ask('[[:+]][[Sold item::' .. args.rawmat2 .. ']]|?Shop buy price|sort=Shop buy price|order=asc|limit=1')) or 0 |
local rawmat2cost = args.rawmat2 and getCost(mw.smw.ask('[[:+]][[Sold item::' .. args.rawmat2 .. ']]|?Shop buy price|sort=Shop buy price|order=asc|limit=1')) or 0 |
||
local rawmat3cost = args.rawmat3 and getCost(mw.smw.ask('[[:+]][[Sold item::' .. args.rawmat3 .. ']]|?Shop buy price|sort=Shop buy price|order=asc|limit=1')) or 0 |
local rawmat3cost = args.rawmat3 and getCost(mw.smw.ask('[[:+]][[Sold item::' .. args.rawmat3 .. ']]|?Shop buy price|sort=Shop buy price|order=asc|limit=1')) or 0 |
||
-- Calculate total |
-- Calculate total cost |
||
local totalCost = (rawmat1cost * (tonumber(args.rawmat1qty) or 1)) + |
local totalCost = (rawmat1cost * (tonumber(args.rawmat1qty) or 1)) + |
||
(rawmat2cost * (tonumber(args.rawmat2qty) or 1)) + |
(rawmat2cost * (tonumber(args.rawmat2qty) or 1)) + |
||
(rawmat3cost * (tonumber(args.rawmat3qty) or 1)) |
(rawmat3cost * (tonumber(args.rawmat3qty) or 1)) |
||
local output1cost = args.output1 and getCost(mw.smw.ask('[[:+]][[' .. args.output1 .. ']]|?Value|limit=1')) or 0 |
|||
-- Calculate output cost total and profit |
-- Calculate output cost total and profit |
||
local |
local output1cost = args.output1 and mw.smw.ask('[[:+]][[' .. args.output1 .. ']]|?Value|limit=1') |
||
local output1costTotal = output1cost[1]['Value'] * (tonumber(args.output1qty) or 1) |
|||
local profit = output1costTotal - totalCost |
local profit = output1costTotal - totalCost |
||
-- |
-- Recipe Table Head |
||
local out = {} |
local out = {} |
||
table.insert(out, '{| class="wikitable"') |
table.insert(out, '{| class="wikitable"') |
||
Line 35: | Line 36: | ||
table.insert(out, '|-') |
table.insert(out, '|-') |
||
table.insert(out, '! colspan="2" | Facility') |
table.insert(out, '! colspan="2" | Facility') |
||
table.insert(out, ' |
table.insert(out, '| colspan="2" | ' .. (args.facility and '[[' .. args.facility .. ']]' or 'Unknown')) |
||
table.insert(out, '|-') |
table.insert(out, '|-') |
||
table.insert(out, '! colspan="2" | Profession') |
table.insert(out, '! colspan="2" | Profession') |
||
Line 41: | Line 42: | ||
table.insert(out, '! XP') |
table.insert(out, '! XP') |
||
table.insert(out, '|-') |
table.insert(out, '|-') |
||
table.insert(out, '| colspan="2" | ' .. (args.profession and '[[' .. args.profession .. ']]' or 'Unknown')) |
table.insert(out, '| colspan="2" style="text-align:center;" | ' .. (args.profession and '[[' .. args.profession .. ']]' or 'Unknown')) |
||
table.insert(out, '| style="text-align: center;" | ' .. (args.level or 'Unknown')) |
table.insert(out, '| style="text-align: center;" | ' .. (args.level or 'Unknown')) |
||
table.insert(out, '| style="text-align: center;" | ' .. (args.exp or 'Unknown')) |
table.insert(out, '| style="text-align: center;" | ' .. (args.exp or 'Unknown')) |
||
table.insert(out, '|-') |
table.insert(out, '|-') |
||
-- Add raw materials |
|||
-- Headers |
|||
table.insert(out, '! colspan="2" | Raw Ingredient') |
table.insert(out, '! colspan="2" | Raw Ingredient') |
||
table.insert(out, '! Quantity') |
table.insert(out, '! Quantity') |
||
Line 50: | Line 54: | ||
table.insert(out, '|-') |
table.insert(out, '|-') |
||
-- Values |
|||
-- Add each raw material to the table |
|||
if args.rawmat1 then |
if args.rawmat1 then |
||
table.insert(out, '| [[File:' .. args.rawmat1 .. '.png|30px]]') |
table.insert(out, '| [[File:' .. args.rawmat1 .. '.png|30px]]') |
||
Line 75: | Line 79: | ||
-- Add total raw cost |
-- Add total raw cost |
||
table.insert(out, '! colspan="3" | Total Raw cost') |
table.insert(out, '! colspan="3" | Total Raw cost') |
||
table.insert(out, '| style="text-align: right;" | ' .. totalCost) |
table.insert(out, '| style="text-align: right;" | ' .. currency(totalCost)) |
||
table.insert(out, '|-') |
table.insert(out, '|-') |
||
Line 87: | Line 91: | ||
-- Values |
-- Values |
||
if args.preparedmat1 then |
if args.preparedmat1 then |
||
table.insert(out, '| [[File:' .. args.preparedmat1 .. '.png|30px |
table.insert(out, '| [[File:' .. args.preparedmat1 .. '.png|30px]]') |
||
table.insert(out, '| [[' .. args.preparedmat1 .. ']]') |
|||
table.insert(out, '| style="text-align: right;" | ' .. (args.preparedmat1qty or 1)) |
table.insert(out, '| style="text-align: right;" | ' .. (args.preparedmat1qty or 1)) |
||
table.insert(out, '| style="text-align: right;" | [[File:' .. args.preparedmat1fac .. '.png|30px]] [[' .. args.preparedmat1fac .. ']]') |
table.insert(out, '| style="text-align: right;" | [[File:' .. args.preparedmat1fac .. '.png|30px]] [[' .. args.preparedmat1fac .. ']]') |
||
⚫ | |||
end |
|||
if args.preparedmat2 then |
|||
table.insert(out, '| [[File:' .. args.preparedmat2 .. '.png|30px]]') |
|||
table.insert(out, '| [[' .. args.preparedmat2 .. ']]') |
|||
table.insert(out, '| style="text-align: right;" | ' .. (args.preparedmat2qty or 1)) |
|||
table.insert(out, '| style="text-align: right;" | [[File:' .. args.preparedmat2fac .. '.png|30px]] [[' .. args.preparedmat2fac .. ']]') |
|||
table.insert(out, '|-') |
|||
end |
|||
if args.preparedmat3 then |
|||
table.insert(out, '| [[File:' .. args.preparedmat3 .. '.png|30px]]') |
|||
table.insert(out, '| [[' .. args.preparedmat3 .. ']]') |
|||
table.insert(out, '| style="text-align: right;" | ' .. (args.preparedmat3qty or 1)) |
|||
table.insert(out, '| style="text-align: right;" | [[File:' .. args.preparedmat3fac .. '.png|30px]] [[' .. args.preparedmat3fac .. ']]') |
|||
table.insert(out, '|-') |
table.insert(out, '|-') |
||
end |
end |
||
-- Add output data |
-- Add output data |
||
-- Headers |
|||
table.insert(out, '! colspan="2" | Output') |
table.insert(out, '! colspan="2" | Output') |
||
table.insert(out, '! Quantity') |
table.insert(out, '! Quantity') |
||
table.insert(out, '! Value') |
table.insert(out, '! Value') |
||
table.insert(out, '|-') |
table.insert(out, '|-') |
||
-- Values |
|||
table.insert(out, '| [[File:' .. args.output1 .. '.png|30px]]') |
|||
table.insert(out, '| ' .. (args.output1 and '[[' .. args.output1 .. ']]' or 'Unknown')) |
table.insert(out, '| ' .. (args.output1 and '[[' .. args.output1 .. ']]' or 'Unknown')) |
||
table.insert(out, '| style="text-align: right;" | ' .. (args.output1qty or 1)) |
table.insert(out, '| style="text-align: right;" | ' .. (args.output1qty or 1)) |
||
table.insert(out, '| style="text-align: right;" | ' .. output1costTotal) |
table.insert(out, '| style="text-align: right;" | ' .. currency(output1costTotal)) |
||
table.insert(out, '|-') |
table.insert(out, '|-') |
||
-- Add profit data |
|||
table.insert(out, '! colspan="3" | Profit') |
table.insert(out, '! colspan="3" | Profit') |
||
table.insert(out, '| style="text-align: right;" | ' .. profit) |
table.insert(out, '| style="text-align: right;" | ' .. currency(profit)) |
||
table.insert(out, '|}') |
table.insert(out, '|}') |
||
-- Add debug information to the output as a simple paragraph |
|||
local debugMessage = 'Debug Info:<br>' .. |
|||
'rawmat1query: ' .. (rawmat1query or 'nil') .. '<br>' .. |
|||
'rawmat1cost: ' .. tostring(rawmat1cost) .. '<br>' .. |
|||
'rawmat2query: ' .. (rawmat2query or 'nil') .. '<br>' .. |
|||
'rawmat2cost: ' .. tostring(rawmat2cost) .. '<br>' .. |
|||
'rawmat3query: ' .. (rawmat3query or 'nil') .. '<br>' .. |
|||
'rawmat3cost: ' .. tostring(rawmat3cost) .. '<br>' .. |
|||
'totalCost: ' .. tostring(totalCost) .. '<br>' .. |
|||
'output1query: ' .. (output1query or 'nil') .. '<br>' .. |
|||
'output1cost: ' .. tostring(output1cost) .. '<br>' .. |
|||
'output1costTotal: ' .. tostring(output1costTotal) .. '<br>' .. |
|||
'profit: ' .. tostring(profit) |
|||
⚫ | |||
return table.concat(out, '\n') |
return table.concat(out, '\n') |