Module:Update navigation

From The Remnant 2 Wiki
Jump to navigation Jump to search

Documentation for this module may be created at Module:Update navigation/doc

local m_args = require('Module:ArgsLib')
local patch = require('Module:Patch/data') -- loadData has problems here

local u = {}

function u.getUpdateLink(version)
	local data = patch.map[version]
	return string.format('[[Update: %s|%s]]', data.date, data.title)
end

function u.getOfficialNotes(version)
	local data = patch.map[version]
	return string.format('[%s Official Patch Notes]', data.link)
end

local p = {}

function p.main(frame)
	local args = m_args.merge()
	return p._main(args)
end

function p._main(args)
	local _version = args[1]
	local _previousCount = 3
	local _nextCount = 3
	
	for i, v in ipairs(patch.ordered_list) do
		if v == _version then
			local _first = math.max(1, i - _previousCount)
			local _last = math.min(#patch.ordered_list, i + _nextCount)
			
			local navBox = mw.html.create('table'):addClass('wikitable navbox'):attr('style','text-align:center')
				:tag('caption')
					:wikitext(string.format('Update Navigation (%s, %s)', u.getOfficialNotes(_version), _version))
					:done()
			
			local navRow = navBox:tag('tr')
			for j = _last, _first, -1 do
				local _current = patch.ordered_list[j]
				local _link = u.getUpdateLink(_current)
				navRow:tag('td'):wikitext(_link):done()
			end
			
			return navBox
		end
	end
end

return p