Difference between revisions of "Module:CoAbility"

From Dragalia Lost Wiki
Jump to navigation Jump to search
>Eave
(adding chain coab support)
>Eave
m
Line 27: Line 27:
 
   local chainCoabs = cargo.query('ChainCoAbilities', 'AbilityIconName', {
 
   local chainCoabs = cargo.query('ChainCoAbilities', 'AbilityIconName', {
 
     groupBy = 'AbilityIconName',
 
     groupBy = 'AbilityIconName',
     orderBy = 'Id',
+
     orderBy = 'AbilityIconName',
 
   })
 
   })
 
   for i, coab in ipairs(chainCoabs) do
 
   for i, coab in ipairs(chainCoabs) do

Revision as of 03:28, 8 April 2020

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=%s'
  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..'.png'):sub(1, 2)
    local iconPath = string.format(imageUrl, iconHash:sub(1,1), iconHash, icon)
    result[#result+1] = string.format(coabFilterValues, icon, iconPath)
  end

  local chainCoabs = cargo.query('ChainCoAbilities', 'AbilityIconName', {
    groupBy = 'AbilityIconName',
    orderBy = 'AbilityIconName',
  })
  for i, coab in ipairs(chainCoabs) do
    local icon = coab['AbilityIconName']
    local iconHash = md5.sumhexa(icon..'.png'):sub(1, 2)
    local iconPath = string.format(imageUrl, iconHash:sub(1,1), iconHash, icon)
    result[#result+1] = string.format(chainCoabFilterValues, icon, iconPath)
  end
  return frame:preprocess(string.format(filterWidget, table.concat(result, '|')))
end


return p
--</includeonly>