• Welcome to the Kancolle Wiki!
  • If you have any questions regarding site content, account registration, etc., please visit the KanColle Wiki Discord

Difference between revisions of "Module:DropTable"

From Kancolle Wiki
Jump to navigation Jump to search
m (Undo revision 307777 by IbarakiIbuki (talk))
 
(6 intermediate revisions by 3 users not shown)
Line 7: Line 7:
 
for param, list in pairs(frame.args) do
 
for param, list in pairs(frame.args) do
 
local label = string.upper(mw.text.split(param, "_")[1]) -- Should be single letter in uppercase
 
local label = string.upper(mw.text.split(param, "_")[1]) -- Should be single letter in uppercase
local shipCode = mw.text.split(param, "_")[2] -- One of DD, CL, CA, BB, CV, CVL, AV, SS, AUX
+
local shipCode = mw.text.split(param, "_")[2] -- One of DE, DD, CL, CA, BB, CV, CVL, AV, SS, AUX
 
if drops[label] == nil then
 
if drops[label] == nil then
 
drops[label] = {}
 
drops[label] = {}
Line 14: Line 14:
 
end
 
end
  
local headerList = {}
+
local numTypes = {}
local validLabels = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"}
+
local validLabels = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","Z1", "Z2", "Z3", "Z4", "Z5", "Z6", "Z7", "Z8", "Z9", "ZZ1", "ZZ2", "ZZ3"}
local shipTypes = {"DD", "CL", "CA", "BB", "CV", "CVL", "AV", "SS", "AUX"}
+
local shipTypes = {"DE", "DD", "CL", "CA", "BB", "CV", "CVL", "AV", "SS", "AUX"}
  
for i, ship in pairs(shipTypes) do
+
for i, letter in pairs(validLabels) do
headerList[ship] = false
+
numTypes[letter] = 0
 
end
 
end
 
for x, node in pairs(validLabels) do
 
for x, node in pairs(validLabels) do
Line 25: Line 25:
 
for y, ship in pairs(shipTypes) do
 
for y, ship in pairs(shipTypes) do
 
if drops[node][ship] ~= nil then
 
if drops[node][ship] ~= nil then
headerList[ship] = true
+
numTypes[node] = numTypes[node] + 1
 
end
 
end
 
end
 
end
Line 32: Line 32:
  
 
local tablehtml = '<table class="mw-collapsible mw-collapsed wikitable" style="width:100%">'
 
local tablehtml = '<table class="mw-collapsible mw-collapsed wikitable" style="width:100%">'
 +
tablehtml = tablehtml .. '<tr><th style="width:50px;">Node</th><th colspan="2">Ship List</th></tr>'
  
-- Creating header --
+
local classLink = {}
local numCols = 0
+
classLink["DE"] = '[[Destroyer Escorts]]'
for i, ship in pairs(shipTypes) do
+
classLink["DD"] = '[[EliteDD|Destroyers]]'
if headerList[ship] == true then
+
classLink["CL"] = '[[EliteCL|Light Cruisers]]'
numCols = numCols + 1
+
classLink["CA"] = '[[EliteCA|Heavy Cruisers]]'
end
+
classLink["BB"] = '[[EliteBB|Battleships]]'
end
+
classLink["CV"] = '[[EliteDD|Aircraft Carriers]]'
 +
classLink["CVL"] = '[[EliteDD|Light Aircraft Carriers]]'
 +
classLink["AV"] = '[[EliteAV|Seaplane Tenders]]'
 +
classLink["SS"] = '[[EliteSS|Submarines]]'
 +
classLink["AUX"] = '[[Auxiliary Ships]]'
  
local headertext = {}
 
headertext["DD"] = '[[EliteDD|Destroyers]]'
 
headertext["CL"] = '[[EliteCL|Light Cruisers]]'
 
headertext["CA"] = '[[EliteCA|Heavy Cruisers]]'
 
headertext["BB"] = '[[EliteBB|Battleships]]'
 
headertext["CV"] = '[[EliteDD|Aircraft Carriers]]'
 
headertext["CVL"] = '[[EliteDD|Light Aircraft Carriers]]'
 
headertext["AV"] = '[[EliteAV|Seaplane Tenders]]'
 
headertext["SS"] = '[[EliteSS|Submarines]]'
 
headertext["AUX"] = '[[Auxiliary Ships]]'
 
 
if numCols == 0 then -- no valid entries
 
tablehtml = tablehtml .. '<tr><th style="width:50px;">Node</th><th>Ship List</th></tr>'
 
else
 
tablehtml = tablehtml .. '<tr><th style="width:50px;" rowspan="2">Node</th><th colspan="' .. numCols .. '">Ship List</th></tr>'
 
tablehtml = tablehtml .. '<tr>'
 
for i, ship in pairs(shipTypes) do
 
if headerList[ship] == true then
 
tablehtml = tablehtml .. '<th>' .. headertext[ship] .. '</th>'
 
end
 
end
 
tablehtml = tablehtml .. '</tr>'
 
end
 
 
 
for x, node in pairs(validLabels) do
 
for x, node in pairs(validLabels) do
if drops[node] ~= nil then
+
if numTypes[node] > 0 then
tablehtml = tablehtml .. '<tr><td style="text-align:center; font-size:18px; font-weight:bold;">' .. node .. '</td>'
+
tablehtml = tablehtml .. '<tr><td style="text-align:center; font-size:18px; font-weight:bold;" '
 +
tablehtml = tablehtml .. 'rowspan="' .. numTypes[node] .. '">' .. node .. '</td>'
 +
 +
remTypes = numTypes[node]
 
for y, ship in pairs(shipTypes) do
 
for y, ship in pairs(shipTypes) do
if headerList[ship] == true then
+
if drops[node][ship] ~= nil then
tablehtml = tablehtml .. '<td>'
+
tablehtml = tablehtml .. '<td style="text-align:center; width:70px;">' .. classLink[ship] .. '</td>'
if drops[node][ship] ~= nil then
+
tablehtml = tablehtml .. '<td>' .. drops[node][ship] .. '</td>'
tablehtml = tablehtml .. drops[node][ship]
+
remTypes = remTypes - 1
 +
if remTypes > 0 then
 +
tablehtml = tablehtml .. '</tr><tr>'
 +
else
 +
tablehtml = tablehtml .. '</tr>'
 +
break
 
end
 
end
tablehtml = tablehtml .. '</td>'
 
 
end
 
end
 
end
 
end
tablehtml = tablehtml .. '</tr>'
 
 
end
 
end
 
end
 
end
+
 
 
tablehtml = tablehtml .. '</table>'
 
tablehtml = tablehtml .. '</table>'
 
return tablehtml
 
return tablehtml

Latest revision as of 14:38, 19 November 2017

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

local p = {}
local remiLib = require("Module:RemiLib")

function p.createDropTable(frame)
	-- entries are in the form of <Node>_<Ship Type> = <List of Ships>
	local drops = {}
	for param, list in pairs(frame.args) do
		local label = string.upper(mw.text.split(param, "_")[1]) -- Should be single letter in uppercase
		local shipCode = mw.text.split(param, "_")[2] -- One of DE, DD, CL, CA, BB, CV, CVL, AV, SS, AUX
		if drops[label] == nil then
			drops[label] = {}
		end
		drops[label][shipCode] = list
	end

	local numTypes = {}
	local validLabels = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","Z1", "Z2", "Z3", "Z4", "Z5", "Z6", "Z7", "Z8", "Z9", "ZZ1", "ZZ2", "ZZ3"}
	local shipTypes = {"DE", "DD", "CL", "CA", "BB", "CV", "CVL", "AV", "SS", "AUX"}

	for i, letter in pairs(validLabels) do
		numTypes[letter] = 0
	end
	for x, node in pairs(validLabels) do
		if drops[node] ~= nil then
			for y, ship in pairs(shipTypes) do
				if drops[node][ship] ~= nil then
					numTypes[node] = numTypes[node] + 1
				end
			end
		end
	end

	local tablehtml = '<table class="mw-collapsible mw-collapsed wikitable" style="width:100%">'
	tablehtml = tablehtml .. '<tr><th style="width:50px;">Node</th><th colspan="2">Ship List</th></tr>'

	local classLink = {}
	classLink["DE"] = '[[Destroyer Escorts]]'
	classLink["DD"] = '[[EliteDD|Destroyers]]'
	classLink["CL"] = '[[EliteCL|Light Cruisers]]'
	classLink["CA"] = '[[EliteCA|Heavy Cruisers]]'
	classLink["BB"] = '[[EliteBB|Battleships]]'
	classLink["CV"] = '[[EliteDD|Aircraft Carriers]]'
	classLink["CVL"] = '[[EliteDD|Light Aircraft Carriers]]'
	classLink["AV"] = '[[EliteAV|Seaplane Tenders]]'
	classLink["SS"] = '[[EliteSS|Submarines]]'
	classLink["AUX"] = '[[Auxiliary Ships]]'

	for x, node in pairs(validLabels) do
		if numTypes[node] > 0 then
			tablehtml = tablehtml .. '<tr><td style="text-align:center; font-size:18px; font-weight:bold;" '
			tablehtml = tablehtml .. 'rowspan="' .. numTypes[node] .. '">' .. node .. '</td>'
			
			remTypes = numTypes[node]
			for y, ship in pairs(shipTypes) do
				if drops[node][ship] ~= nil then
					tablehtml = tablehtml .. '<td style="text-align:center; width:70px;">' .. classLink[ship] .. '</td>'
					tablehtml = tablehtml .. '<td>' .. drops[node][ship] .. '</td>'
					remTypes = remTypes - 1
					if remTypes > 0 then
						tablehtml = tablehtml .. '</tr><tr>'
					else
						tablehtml = tablehtml .. '</tr>'
						break
					end
				end
			end
		end
	end

	tablehtml = tablehtml .. '</table>'
	return tablehtml
end

return p