Module:CoAbility

From Dragalia Lost Wiki
Revision as of 03:03, 8 April 2020 by >Eave
Jump to navigation Jump to search
50px Documentation

This module abstracts away some of the logical complexity that is difficult to represent in pure Wikitext when it comes to displaying information about co-abilities and chain co-abilities.

Parameters & Invocation

{{#invoke:CoAbility|Filter}}

No arguments, populates the arguments for and calls the Co-ability filter header used in Widget:CoAbilityListFilter.

{{#invoke:CoAbility|AdventurerTableEntries}}

No arguments, populates the table rows used in Adventurer Co-abilities List.


-- <includeonly> (prevents literal interpretation of links or categories within the module code)
-- Lua Templating for Co-ability (and chain co-ability) related displays
local p = {}
local cargo = mw.ext.cargo
local md5 = require('Module:Md5')

-- Usage: {{#invoke:CoAbility|Filter}}
-- Filter header for coability lists
function p.Filter(frame)
  local filterWidget = '{{#widget:CoAbilityListFilter|%s}}'
  local coabFilterValues = 'coabs=%s|coabImages=%s'
  local chainCoabFilterValues = 'chainCoabs=%s|chainCoabImages={{filename:%s.png}}'
  local imageUrl = '/images/%s/%s/%s.png'

  local result = {}
  local coabs = cargo.query('CoAbilities', 'AbilityIconName', {
    groupBy = 'AbilityIconName',
    orderBy = 'Id',
  })
  for i, coab in ipairs(coabs) do
    local icon = coab['AbilityIconName']
    local iconHash = md5.sumhexa(icon):sub(1, 2)
    local iconPath = string.format(imageUrl, iconHash:sub(1,1), iconHash, icon)
    result[#result+1] = string.format(coabFilterValues, icon, iconPath)
  end

  return frame:preprocess(string.format(filterWidget, table.concat(result, '|')))
end


return p
--</includeonly>