Module:StoreLine: Difference between revisions
Jump to navigation
Jump to search
No edit summary Tag: Reverted |
No edit summary Tag: Manual revert |
||
Line 105: | Line 105: | ||
if gemw and tonumber(geprice) ~= nil then | |||
geprice = showCurrencyAmount('coins', geprice) | |||
else | |||
ge_sort = 0 | |||
geprice = 'Not sold' | |||
end | |||
if stock=='inf' then stock='∞' end --inf is easier to type | |||
if stock=='∞' then restock='N/A' end --self-documenting code | |||
local ret = mw.html.create('tr'):css('text-align','center') | |||
if not hideimage then | |||
ret:tag('td'):wikitext(mw.ustring.format('[[%s|link=%s]]', image, name)) | |||
end | |||
-- no hideXXX parameter for the column that lists the actual items. | -- no hideXXX parameter for the column that lists the actual items. | ||
ret:tag('td'):css('text-align','left'):wikitext(mw.ustring.format('[[%s|%s]]', name, displayname)) | ret:tag('td'):css('text-align','left'):wikitext(mw.ustring.format('[[%s|%s]]', name, displayname)) |
Revision as of 16:17, 1 April 2024
Documentation for this module may be created at Module:StoreLine/doc
local p = {}
local lang = mw.language.getContentLanguage()
local var = mw.ext.VariablesLua
local params = require('Module:Paramtest')
local yesno = require('Module:Yesno')
local currency_image = require("Module:Currency Image")
local commas = require("Module:Addcommas")
local exchange = require('Module:Exchange')
local find_gevalue = exchange._value
local find_geprice = exchange._price
local geprices_data = mw.loadJsonData('Module:GEPrices/data.json')
local ptitle = mw.title.getCurrentTitle()
local ns = ptitle.nsText
local title = ptitle.fullText
local pgTitle = ptitle.text
local function ticktime(ticks)
local ret = ''
local days = math.floor(ticks/144000)
local hours = math.floor(ticks%144000/6000)
local minutes = math.floor(ticks%6000/100)
local seconds = ticks%100*0.6
if days > 0 then
ret = ret .. days .. 'd '
end
if hours > 0 then
ret = ret .. hours .. 'h '
end
if minutes > 0 then
ret = ret .. minutes .. 'm '
end
if seconds > 0 then
ret = ret .. seconds .. 's'
end
return ret
end
function p.main(frame)
local args = frame:getParent().args
-- Params and defaults
local name, stock, buyvalue, sellvalue, geprice = params.defaults{
{args.name or args.Name, ''},
{args.stock or args.Stock, ''},
{args.buy or args.Buy, ''},
{args.sell or args.Sell, ''},
{args.geprice or args.geprice, ''}
}
local itemvalue = ''
local gemwname = params.default_to(args.gemwname,name)
local smwname = params.default_to(args.smwname,name)
local displayname = params.default_to(args.displayname or args.DisplayName,name)
local image = 'File:' .. params.default_to(args.image or args.Image, name .. '.png')
local gemw = yesno(args.gemw or 'yes', false)
local restock = params.default_to(args.restock or args.Restock,-1)
-- Check precached Module:GEPrices/data
if gemw and geprice == '' then
local cached_price = geprices_data[gemwname]
if type(cached_price) == 'number' and cached_price > 0 then
geprice = cached_price
end
end
-- Lookup GE price
if gemw and geprice == '' then
local has_geprice, geprice_check = pcall(find_geprice,gemwname)
if has_geprice and geprice_check > -1 then
geprice = geprice_check
end
end
-- Lookup GE value
if gemw and itemvalue == '' then
local has_gevalue, gevalue = pcall(find_gevalue,gemwname)
if has_gevalue and gevalue > -1 then
itemvalue = gevalue
end
end
-- Check precached Module:GEHighAlch/data - gets GE alch so inaccurate
if itemvalue == '' then
local highalch_data = mw.loadJsonData('Module:GEHighAlchs/data.json')
local cached_data = highalch_data[name]
if type(cached_data) == 'number' and cached_data > -1 then
itemvalue = cached_data/.6
end
end
buyvalue = commas._strip(buyvalue)
sellvalue = commas._strip(sellvalue)
local buy_smw = tonumber(buyvalue)
local sell_smw = tonumber(sellvalue) or 1e10
local ge_sort = tonumber(geprice)
local buyCurrency = ''
local sellCurrency = ''
if gemw and tonumber(geprice) ~= nil then
geprice = showCurrencyAmount('coins', geprice)
else
ge_sort = 0
geprice = 'Not sold'
end
if stock=='inf' then stock='∞' end --inf is easier to type
if stock=='∞' then restock='N/A' end --self-documenting code
local ret = mw.html.create('tr'):css('text-align','center')
if not hideimage then
ret:tag('td'):wikitext(mw.ustring.format('[[%s|link=%s]]', image, name))
end
-- no hideXXX parameter for the column that lists the actual items.
ret:tag('td'):css('text-align','left'):wikitext(mw.ustring.format('[[%s|%s]]', name, displayname))
if not hidestock then
if stock=='N/A' then
ret:tag('td'):attr('data-sort-value', 0):attr('class','table-na'):wikitext('<small>N/A</small>'):done()
elseif stock=='∞' then
ret:tag('td'):wikitext('<span style="font-size:120%;">∞</span>'):done()
else
ret:tag('td')
:wikitext(stock)
:done()
end
end
if not hidege then
ret:tag('td')
:attr('data-sort-value', ge_sort)
:wikitext(geprice)
:done()
end
local onMain = ns == '' or ns == 'RuneScape'
if onMain and useSmw then
local smw = {}
local smw_sub = {}
local source = pgTitle
smw['Sells item'] = name
smw_sub['Sold by'] = source
smw_sub['Sold item image'] = image
smw_sub['Sold item'] = name
smw_sub['Sold item text'] = displayname
smw_sub['Store stock'] = stock
smw_sub['Restock time'] = restock
smw_sub['Store sell price'] = sell_smw --type = number for sorting purposes
smw_sub['Store buy price'] = buy_smw or 'N/A'
smw_sub['Store currency'] = currency
smw_sub['Store notes'] = namenotes
smw_sub['Store delta'] = delta
mw.smw.subobject(smw_sub) -- add item subobject to page
mw.smw.set(smw) -- add data to page
end
return tostring(ret)
end
function showCurrencyAmount(currency, amount)
local image = currency and currency_image(currency, amount) or ''
if image ~= '' and currency and tonumber(amount) then
return string.format('[[File:%s|link=%s]] %s', image, currency, commas._add(amount))
else
return amount
end
end
return p