Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
MediaWiki help
Creopedia
Search
Search
Appearance
Log in
Personal tools
Log in
View source for Module:ElementChart
Module
Discussion
English
Read
View source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
View source
View history
General
What links here
Related changes
Special pages
Page information
Appearance
move to sidebar
hide
←
Module:ElementChart
require( 'strict' ) local TableLua = require( 'Module:TableLua' ) local Element = require( 'Module:Element' ) local p = {} --- @param elementName string --- @return string local function getElementWikitext( elementName ) return Element._main( elementName ) end --- @param elements table --- @return table local function getBonusMap( elements ) local bonusMap = {} for _, attackElement in ipairs( elements ) do bonusMap[attackElement.id] = {} if attackElement.elementComparisonMaps then for _, comparison in ipairs( attackElement.elementComparisonMaps ) do bonusMap[attackElement.id][comparison.elementToCompareId] = comparison.bonus end end end return bonusMap end --- @param elements table --- @return TableColumn[] local function getColumns( elements ) local columns = { { label = '' } } for _, element in ipairs( elements ) do table.insert( columns, { label = getElementWikitext( element.name ) } ) end return columns end --- @param elements table --- @param bonusMap table --- @return TableRow[] local function getRows( elements, bonusMap ) local rows = {} for _, attackElement in ipairs( elements ) do local row = { getElementWikitext( attackElement.name ) } for _, defenseElement in ipairs( elements ) do local bonus = bonusMap[attackElement.id][defenseElement.id] local cellContent = mw.html.create( 'div' ):addClass( 't-element-chart__cell' ) if type( bonus ) == 'number' then if bonus > 0 then cellContent:addClass( 't-element-chart__cell--strong' ):wikitext( tostring( bonus ) ) elseif bonus < 0 then cellContent:addClass( 't-element-chart__cell--weak' ):wikitext( tostring( bonus ) ) else cellContent:addClass( 't-element-chart__cell--neutral' ) end end table.insert( row, tostring( cellContent ) ) end table.insert( rows, row ) end return rows end --- @param elements table --- @return TableProps local function getTableProps( elements ) local bonusMap = getBonusMap( elements ) return { caption = 'Element chart', hideCaption = true, columns = getColumns( elements ), data = getRows( elements, bonusMap ), class = table.concat( { 't-element-chart', 'wikitable--border' -- Citizen built-in class for vertical borders }, ' ' ) } end --- Get the element table --- --- @return table local function getElementTable() return mw.loadJsonData( 'Module:GameData/EvoCreo2/ElementTable.json' ) end --- Wikitext entry point for the module --- --- @param frame mw.frame --- @return string function p.main( frame ) local getArgs = require( 'Module:Arguments' ).getArgs return p._main( getArgs( frame ) ) end --- Lua entry point for the module --- --- @param args table --- @return string function p._main( args ) local elementTable = getElementTable() return mw.getCurrentFrame():extensionTag { name = 'templatestyles', args = { src = 'Module:ElementChart/styles.css' } } .. TableLua.render( getTableProps( elementTable ) ) end return p
Templates used on this page:
Template:Documentation
(
view source
)
Module:ElementChart/doc
(
view source
)
Return to
Module:ElementChart
.