More actions
No edit summary |
No edit summary |
||
(40 intermediate revisions by the same user not shown) | |||
Line 11: | Line 11: | ||
local difficulties = config.difficulties | local difficulties = config.difficulties | ||
local output = mw.html.create('table') | local output = mw.html.create('table') | ||
output:addClass() | output:addClass('wikitable') | ||
output:addClass('center') | |||
output:addClass('full-width') | |||
output:attr('style', 'width:100%;') | |||
local header_row = output:tag('tr') | |||
header_row:tag('th'):wikitext('Icon') | |||
header_row:tag('th'):wikitext('Difficulty') | |||
header_row:tag('th'):wikitext('Stages') | |||
header_row:tag('th'):wikitext('Completion %') | |||
header_row:tag('th'):wikitext('Rewards'):addClass('center') | |||
local difficulties_s = {} | |||
for k, v in pairs(difficulties) do | |||
table.insert(difficulties_s, { | |||
key = k, | |||
data = v | |||
}) | |||
end | |||
table.sort(difficulties_s, function(a,b) | |||
return a.data.priority < b.data.priority | |||
end) | |||
for _, entry in pairs(difficulties_s) do | |||
local i = entry.key | |||
local v = entry.data | |||
local difficulty_param_name = mw.text.trim(i) | |||
local enabled_param = args[ucfirst(difficulty_param_name)] or args[difficulty_param_name] | |||
if enabled_param and mw.text.trim(enabled_param):lower() == 'true' then | |||
entry.data.priority = tonumber(args[difficulty_param_name .. '_priority']) or tonumber(args[difficulty_param_name .. '_index']) or entry.data.priority | |||
end | |||
end | |||
table.sort(difficulties_s, function(a,b) | |||
return a.data.priority < b.data.priority | |||
end) | |||
local inclonlystr = '' | |||
for _, entry in pairs(difficulties_s) do | |||
local i = entry.key | |||
local v = entry.data | |||
local difficulty_param_name = mw.text.trim(i) | local difficulty_param_name = mw.text.trim(i) | ||
local enabled_param = args[ucfirst(difficulty_param_name)] or args[difficulty_param_name] | local enabled_param = args[ucfirst(difficulty_param_name)] or args[difficulty_param_name] | ||
if enabled_param and mw.text.trim(enabled_param):lower() == 'true' then | if enabled_param and mw.text.trim(enabled_param):lower() == 'true' then | ||
inclonlystr = inclonlystr .. '[[Category:'.. ucfirst(difficulty_param_name) .. ']]' | |||
local row = output:tag('tr') | local row = output:tag('tr') | ||
local icon_cell = row:tag('td') | local icon_cell = row:tag('td') | ||
local color_hex = args[difficulty_param_name .. '_hex'] | |||
local icon_file = args[difficulty_param_name .. '_file_name'] | |||
-- if v.file then | -- if v.file then | ||
icon_cell:tag('div') | |||
if icon_file then | |||
icon_cell:wikitext('[[File:' .. icon_file .. '|48px|alt=Difficulty ' .. v.display .. ']]'):attr('style', 'border-radius: 8px; overflow: hidden; display:inline-block;') | |||
else | |||
icon_cell:tag('div') | |||
:attr('style', 'width: 48px; height: 48px; background-color: ' .. ((color_hex and '#'.. color_hex) or v.color) .. '; vertical-align: middle; border-radius: 8px;') | |||
end | |||
local name_cell = row:tag('td') | local name_cell = row:tag('td') | ||
Line 32: | Line 85: | ||
-- name_cell:tag('a') | -- name_cell:tag('a') | ||
name_cell:wikitext('[[' .. v.display .. ']]') -- maybe thats how this works | name_cell:wikitext('[[' .. page_link .. '|' .. v.display .. ']]'):attr('style', 'color:'..v.color..';') -- maybe thats how this works | ||
-- :wikitext('[[' .. v.display .. ']]') | -- :wikitext('[[' .. v.display .. ']]') | ||
-- :attr('href', mw.title.makeTitle('',page_link):fullUrl()) | -- :attr('href', mw.title.makeTitle('',page_link):fullUrl()) | ||
-- :wikitext(v.display or ucfirst(i)) | -- :wikitext(v.display or ucfirst(i)) | ||
local | local stage_cell = row:tag('td') | ||
local start_value = args[difficulty_param_name .. '_start'] | |||
local end_value = args[difficulty_param_name .. '_end'] | |||
local is_coming_soon = args[difficulty_param_name .. '_unreleased'] | |||
if is_coming_soon then | |||
stage_cell:wikitext('\'\'Unreleased\'\'') | |||
else | |||
stage_cell:wikitext( (start_value or '??') .. ' - ' .. (end_value or '??')) | |||
end | |||
local completionp_cell = row:tag('td') | |||
local completionp_value = args[difficulty_param_name .. '_completion'] | |||
completionp_cell:wikitext( (completionp_value or '??') .. '%') | |||
local rewards_cell = row:tag('td') | |||
local badge_param_name = difficulty_param_name .. '_badge' | local badge_param_name = difficulty_param_name .. '_badge' | ||
local badge_value = args[badge_param_name] | local badge_value = args[badge_param_name] | ||
Line 44: | Line 113: | ||
-- :attr('href', 'https://roblox.com/badges' .. badge_value) | -- :attr('href', 'https://roblox.com/badges' .. badge_value) | ||
-- :attr('target', '_blank') | -- :attr('target', '_blank') | ||
rewards_cell:wikitext('[[File:Icons Badge Small White.png|link=https://roblox.com/badges/' .. badge_value .. '/obbywikidifficultylink|alt=Badge|28px]]') | |||
rewards_cell:attr('style', 'vertical-align: middle; margin-auto;') | |||
-- :attr('src', mw.file.makeUrl('Icons Badge Small White.png')) | -- :attr('src', mw.file.makeUrl('Icons Badge Small White.png')) | ||
-- :attr('alt', 'Badge') | -- :attr('alt', 'Badge') | ||
-- :attr('style', 'width: 20px; height: 20px; vertical-align: middle;') | -- :attr('style', 'width: 20px; height: 20px; vertical-align: middle;') | ||
else | else | ||
rewards_cell:wikitext('\'\'None\'\'') | |||
end | end | ||
end | end | ||
end | end | ||
return tostring(output) | return tostring(output) .. inclonlystr | ||
end | end | ||
return p | return p |
Latest revision as of 04:48, 10 April 2025
Documentation for this module may be created at Module:Difficulties/doc
local p = {}
local config = require('Module:Difficulties/config')
local function ucfirst(str)
return str:sub(1,1):upper() .. str:sub(2)
end
function p.main(frame)
local args = frame:getParent().args
local difficulties = config.difficulties
local output = mw.html.create('table')
output:addClass('wikitable')
output:addClass('center')
output:addClass('full-width')
output:attr('style', 'width:100%;')
local header_row = output:tag('tr')
header_row:tag('th'):wikitext('Icon')
header_row:tag('th'):wikitext('Difficulty')
header_row:tag('th'):wikitext('Stages')
header_row:tag('th'):wikitext('Completion %')
header_row:tag('th'):wikitext('Rewards'):addClass('center')
local difficulties_s = {}
for k, v in pairs(difficulties) do
table.insert(difficulties_s, {
key = k,
data = v
})
end
table.sort(difficulties_s, function(a,b)
return a.data.priority < b.data.priority
end)
for _, entry in pairs(difficulties_s) do
local i = entry.key
local v = entry.data
local difficulty_param_name = mw.text.trim(i)
local enabled_param = args[ucfirst(difficulty_param_name)] or args[difficulty_param_name]
if enabled_param and mw.text.trim(enabled_param):lower() == 'true' then
entry.data.priority = tonumber(args[difficulty_param_name .. '_priority']) or tonumber(args[difficulty_param_name .. '_index']) or entry.data.priority
end
end
table.sort(difficulties_s, function(a,b)
return a.data.priority < b.data.priority
end)
local inclonlystr = ''
for _, entry in pairs(difficulties_s) do
local i = entry.key
local v = entry.data
local difficulty_param_name = mw.text.trim(i)
local enabled_param = args[ucfirst(difficulty_param_name)] or args[difficulty_param_name]
if enabled_param and mw.text.trim(enabled_param):lower() == 'true' then
inclonlystr = inclonlystr .. '[[Category:'.. ucfirst(difficulty_param_name) .. ']]'
local row = output:tag('tr')
local icon_cell = row:tag('td')
local color_hex = args[difficulty_param_name .. '_hex']
local icon_file = args[difficulty_param_name .. '_file_name']
-- if v.file then
if icon_file then
icon_cell:wikitext('[[File:' .. icon_file .. '|48px|alt=Difficulty ' .. v.display .. ']]'):attr('style', 'border-radius: 8px; overflow: hidden; display:inline-block;')
else
icon_cell:tag('div')
:attr('style', 'width: 48px; height: 48px; background-color: ' .. ((color_hex and '#'.. color_hex) or v.color) .. '; vertical-align: middle; border-radius: 8px;')
end
local name_cell = row:tag('td')
local page_link = config.meta.page_prefix .. v.display
if not v.display then
page_link = config.meta.page_prefix .. ucfirst(i)
end
-- name_cell:tag('a')
name_cell:wikitext('[[' .. page_link .. '|' .. v.display .. ']]'):attr('style', 'color:'..v.color..';') -- maybe thats how this works
-- :wikitext('[[' .. v.display .. ']]')
-- :attr('href', mw.title.makeTitle('',page_link):fullUrl())
-- :wikitext(v.display or ucfirst(i))
local stage_cell = row:tag('td')
local start_value = args[difficulty_param_name .. '_start']
local end_value = args[difficulty_param_name .. '_end']
local is_coming_soon = args[difficulty_param_name .. '_unreleased']
if is_coming_soon then
stage_cell:wikitext('\'\'Unreleased\'\'')
else
stage_cell:wikitext( (start_value or '??') .. ' - ' .. (end_value or '??'))
end
local completionp_cell = row:tag('td')
local completionp_value = args[difficulty_param_name .. '_completion']
completionp_cell:wikitext( (completionp_value or '??') .. '%')
local rewards_cell = row:tag('td')
local badge_param_name = difficulty_param_name .. '_badge'
local badge_value = args[badge_param_name]
if badge_value then
-- badge_cell:tag('a')
-- :attr('href', 'https://roblox.com/badges' .. badge_value)
-- :attr('target', '_blank')
rewards_cell:wikitext('[[File:Icons Badge Small White.png|link=https://roblox.com/badges/' .. badge_value .. '/obbywikidifficultylink|alt=Badge|28px]]')
rewards_cell:attr('style', 'vertical-align: middle; margin-auto;')
-- :attr('src', mw.file.makeUrl('Icons Badge Small White.png'))
-- :attr('alt', 'Badge')
-- :attr('style', 'width: 20px; height: 20px; vertical-align: middle;')
else
rewards_cell:wikitext('\'\'None\'\'')
end
end
end
return tostring(output) .. inclonlystr
end
return p