ATTENTION! The process of updating WiKi to version Eco 10.x has begun. Those wishing to participate can find out more Information on our ECO Contribution Wiki Discord.
From April 26 to May 12, errors may occur in the Wiki, as we will be carrying out a major update to the information processing modules.

Module:VariantDetails: Difference between revisions

From Eco - English Wiki
[checked revision][checked revision]
No edit summary
No edit summary
 
Line 7: Line 7:


-- build a variant card
-- build a variant card
function buildVariant( variantName )
function buildVariant(variantName, variant)
-- variant cards require itemData
local itemData = mw.loadData( "Module:ItemData" )
-- check to see if module loaded
if (itemData == nil) then
return "Item Data not loaded"
end -- if itemData does not exist
-- get the item data tables
local itemList = itemData.items
-- get the variant from the list
local variant = itemList[variantName]
-- variant does not exist as an item then just return
-- variant does not exist as an item then just return
if variant == nil then
if variant == nil then
Line 104: Line 90:
if (k ~= defaultName) then
if (k ~= defaultName) then
-- build the text for each variant
-- build the text for each variant
text = text .. buildVariant(k) .. ''
text = text .. buildVariant(k, v) .. ''
end -- if variant is not default
end -- if variant is not default
end -- for each variant
end -- for each variant

Latest revision as of 18:45, 1 January 2024

Documentation[edit source]

This module provides the back end functionality of the Template:VariantDetails.

If the template is passed, this module creates a table using details from the following Modules:


-- Credit:

local p = {}

local Utils = require('Module:Utils')
local L = require('Module:Localization')

-- build a variant card
function buildVariant(variantName, variant)
	-- variant does not exist as an item then just return
	if variant == nil then
		return "No variant here"
	end
	
	local itemimagename = string.gsub(variant.untranslated, ' ', '')
    
    -- string used to build the card
    local card = '<div class="col mb-4"><div class="card h-100" style="width: 300px; background: #d1ecf1; border: 5px solid #7BC2CE;">'
	    
	-- Name of card
	card = card .. '<div class="card-header" style="color: white; background-color: #1165AF; text-align: center; padding:.1rem;">' .. variantName .. '</div>'

	-- Variant: Icon Image
	local image = 'NoImage.png|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. itemimagename .. '_Icon.png|[[Category:Pages_with_missing_icon]]'
	
-- find the image file if it exists	
	if mw.title.makeTitle('File', itemimagename .. '_Icon.png').file.exists then
		image = itemimagename .. '_Icon.png'
	elseif mw.title.makeTitle('File', itemimagename .. '_Icon.jpg').file.exists then
		image = itemimagename .. '_Icon.jpg'
	end -- if image file found
	
	-- create image cell	
	card = card .. '<div class="iconContainer"><div class="iconStack">[[File:' .. image .. '|frameless|class=iconBlue]]</div><div class=iconBorder style=\"position:absolute;\"></div></div>'

	-- Object Placed Image
	local image = 'NoImage.png|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. itemimagename .. '_Placed.png|[[Category:Pages_with_missing_placed]]'
	if mw.title.makeTitle('File', itemimagename .. '_Placed.png').file.exists then
		image = itemimagename .. '_Placed.png'
	elseif mw.title.makeTitle('File', itemimagename .. '_Placed.jpg').file.exists then
		image = itemimagename .. '_Placed.jpg'
	end
	card = card .. ' <p class="card-img-bottom" style="text-align-last: center;">  [[File:' .. image .. '|250px]] </p> </div></div>'
		
	return card	
end

-- build all variant cards
function p.main(frame)  
	local args = Utils.normaliseArgs(frame)
	
	-- check that all necessary arguments are passed correctly
    if args.name == nil or args.name == '' then
        return '\'name\' must be specified.'
    end
    
	-- name passed in will be the default recipe variant
	local defaultName = args.name
	
	-- need both crafting recipes to find variants
	local recipeData =  mw.loadData( "Module:CraftingRecipes" )
	
	-- get the tables from the modules
	local recipeList = recipeData.recipes
	
	-- get the main recipe
	local defaultRecipe = recipeList[defaultName]
	
	-- break if defaultName not found
	if (defaultRecipe == nil) then
		return defaultName .. " could not be found in the recipe data"
	end -- if default is nil
	
	-- get the variants for the recipe
	local variants = defaultRecipe.variants
	local numVariants = tonumber(defaultRecipe.numberOfVariants)
	-- break if no variants. return blank to not break page flow.
	if (variants == nil or numVariants <= 1) then
		return "No Variants to find"
	end -- if variants don't exist
	
	-- create variable to store returned text
	local text = ""
	text = text .. '<div class="card-deck">'
	text = text .. '<h2>' .. L.t('Variants') .. '</h2>\n'
	text = text .. "'''" .. L.t('Note') .. ":'''''" .. L.t("The Infobox displays information for all Variants as they have the same stats. World Object item variants are crafted using different recipe materials which usually means the items come in a variety of different colours depending on the material used.") .. "''\n"
	text = text .. '<div class="row row-cols-1 row-cols-md-3" style="text-align:-webkit-center;">'
	for k,v in pairs(variants) do		
		--skip the default variant
		if (k ~= defaultName) then
			-- build the text for each variant
			text = text .. buildVariant(k, v) .. ''
		end -- if variant is not default
	end -- for each variant
	
	text = text ..'</div></div>'
	
	return text
end	
	
return p