Module:ConduitTable

From Warcraft Wiki
Jump to navigation Jump to search

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

local getArgs = require('Module:Arguments').getArgs
local p = {}
local data = mw.loadData('Module:ConduitTable/data')

function p.GenerateTable(frame)
	local args = getArgs(frame, {wrappers = 'Template:ConduitTable'})

	if data[args.conduit] ~= nil then
		local tableData = {}

		--Add row header
		if data[args.conduit]["bonus"][1] > 0 then
			table.insert(tableData, frame:expandTemplate{ title = 'i-note', args = {data.lastUpdate}} .. "\n{| class='darktable sortable zebra plainlinks' align=center\n! Item Level !! Bonus\n")
		else
			table.insert(tableData, frame:expandTemplate{ title = 'i-note', args = {data.lastUpdate}} .. "\n{| class='darktable sortable zebra plainlinks' align=center\n! Item Level !! Duration\n")
		end
		
		--Conduit variables
		local numrows = 11
		local startIlvl = 145
		
		if args.start ~= nil then
			startIlvl = tonumber(args.start)
		end

		for i=1, numrows do
			if tonumber(data[args.conduit]["ilvls"][i]) >= startIlvl then
				if data[args.conduit]["bonus"][i] > 0 then
					--% value
					table.insert(tableData, "|-\n| " .. data[args.conduit]["ilvls"][i] .. " || " .. data[args.conduit]["bonus"][i] .. "%\n")
				else
					--Proc time
					local procTime = math.abs(data[args.conduit]["bonus"][i]/ 1000)
					table.insert(tableData, "|-\n| " .. data[args.conduit]["ilvls"][i] .. " || " .. procTime .. " sec\n")
				end
			end
		end
		
		--Close table
		table.insert(tableData, "\n|-\n|}")
		return table.concat(tableData)	
	else
		return args.conduit .. " does not exist in [[Module:ConduitTable/data]]"
	end
end
return p