Inkbound Wiki
Advertisement
Module:Fish
Data

local p = {}
local FishData = mw.loadData [[Module:Fish/Data]]
local Icons = require [[Module:Icons]]
local Shared = require [[Module:Utils]]
local rarityOrder = {'Common','Uncommon','Rare','Epic','Legendary'}

function p.findFish(frame)
	local sorted, unsorted = Shared.getFilteredTableStack(frame,nil,FishData,rarityOrder)
	sorted.unsorted= unsorted
	return p.drawTableByNames(sorted, {Header=true,NestedOrder=classOrder})
end

function p.drawTableByNames(itemNames, args)
	args = args or {}
	args.RowFunction = args.RowFunction or p.drawFishRow
	args.HeaderClass = args.HeaderClass or 'article-table navtable with-image binding-table mw-collapsible'
	args.NestedOrder = args.NestedOrder or rarityOrder
	if args.Header==true then 
		args.Header = mw.html.create('table'):addClass(args.HeaderClass):tag('tr')
			:tag('th'):attr('colspan','3'):wikitext('Name'):done()
			:tag('th'):wikitext('Rarity'):done()
			:tag('th'):wikitext('Effect'):attr('colspan','5'):addClass('mobile-hidden'):done()
			:allDone()
	end
	return Shared.drawNavTable(itemNames,args)
end

--wraws one row for vestige-table containing Vestige image, Name, Stats and description
function p.drawFishRow(Name,args)
	args = args or {}
	local Fish
	if type(Name)=='table' then
		Fish = Name --binding table passed as a first argument
		else
		Fish = p.getFish(Name)
	end
	return mw.html.create('tr')
			:addClass(Fish.Rarity)
			:tag('td'):attr('colspan','2'):tag('div')
				:tag('span'):css('display','none'):wikitext('[[', Fish.Link, '|', Fish.Name or Name or '', ']]<br>'):done()
				:wikitext('[[File:', Fish.Image or (Fish.Name or Name or '')..' wiki.png', '|',
				args.mini and '65px' or '100px',
				'|link=', Fish.Link or Fish.Name or Name or '', ']]')
			:done()
			:tag('td'):addClass('mobile-hidden'):node(p.drawFish(Fish)):done()
			:tag('td')
				:wikitext(Fish.Type)
				:tag('br'):done()
				:tag('span'):addClass('rarity-text'):addClass(Fish.Rarity)
				:node(Fish.Rarity):done()
			:done()
			:tag('td'):attr('colspan','5')
				:node(Icons.convertTooltipText(Fish.Desc,true)):done()
			:allDone()
end

--Returns copy of a specified table from DB or creates a new one
function p.getFish(Name)
	if Name then
		if not FishData[Name] then
			Name = mw.text.decode(Name) --converts &#39; in PAGENAME into ' 
			Name = Shared.trim(Name) 
		end
		if not FishData[Name] and FishData[Shared.titleCase(Name)] then 
			Name = Shared.titleCase(Name)
		end
	end
	local Item = {Name=Name}
	setmetatable(Item, {__index = FishData[Name]})
	Item.Link = Item.Link or "Consumables"
	return Item
end

--Draws an inline string with tooltip
function p.drawFish(Name,displayName)
	local Fish
	if type(Name)=='table' then Fish = Name else Fish = p.getFish(Name) end
	return 	mw.html.create('span')
			:addClass('vestige-tooltip')
			:attr('data-param', Fish.Name)
				:tag('span'):addClass('dottedText')
				:wikitext('[[', Fish.Link or Fish.Name, '|', displayName or Fish.Name, ']]'):allDone()
end
return p
Advertisement