Changes

no edit summary
Line 1: Line 1: −
local BaseData = require('Module:BaseData')
+
local BaseTable = require('Module:BaseTable')
 
local Equipment = require('Module:Equipment')
 
local Equipment = require('Module:Equipment')
 
local Formatting = require('Module:Formatting')
 
local Formatting = require('Module:Formatting')
local StatIcons = require('Module:StatIcons')
+
local StatIcons = require('Module:Data/Asset')
 +
local EquipmentLink = require('Module:EquipmentLink')
   −
local format = require('Module:StringInterpolation').format
+
local format = require('Module:Core').format
   −
local EquipmentListKai = BaseData{
+
-- [[Category:Todo]]: hardcoded iconsClasses
 +
local EquipmentListKai = BaseTable{
 +
_item_class = Equipment,
 
_table_start = [[{| class="wikitable"]],
 
_table_start = [[{| class="wikitable"]],
_row_starter = "|-",
+
_header_template = [=[! No.
_header_template = [[!No.
+
! Rarity
!Rarity
+
! style="width:240px" | Name
!Name
+
! style="width:120px" | Equipment Type
!Type
   
${stat_columns}
 
${stat_columns}
!Classes
+
! style="width:120px" | Refittable Types
!Craftable
+
! [[File:Icon_Dev.png|20px|Craftable|link=Development]]
! style="white-space:nowrap;width:130px;" |Notes]],
+
! [[File:Icon_Imp.png|20px|Improvable|link=Improvement]]
_column_header_cell_template = "!${value}",
+
! style="white-space:nowrap" | Notes]=],
 
_column_cell_templates = {
 
_column_cell_templates = {
name = [[| colspan="1" rowspan="${rowspan}" style="text-align: ${text_align}; background-color: ${bg_color};" |${values.name}<br />${values.icon} ${values.japanese_name}]]
+
id = [[| style="${text_align};background-color:${bg_color}" |${values.value}]],
},
+
rarity = [[| rowspan="${rowspan}"style="${text_align};background-color:${bg_color}" |${values.value}]],
_icons = {
+
name = [[| style="${text_align};background-color:${bg_color}" |${values.name}<br />${values.icon} ${values.japanese_name}]],
firepower = "${stat_icons.firepower}",
+
equipment_type = [[| rowspan="${rowspan}" style="${text_align};background-color:${bg_color}" |${values.value}]],
torpedo = "${stat_icons.torpedo}",
+
stats = [[| style="${text_align};background-color:${bg_color}" |${values.value}]],
bombing = "${stat_icons.bombing}",
+
compatibility = [[| rowspan="${rowspan}"style="${text_align};background-color:${bg_color}" |${values.value}]],
aa = "${stat_icons.aa}",
+
buildable = [[| rowspan="${rowspan}"style="${text_align};background-color:${bg_color}" |${values.value}]],
asw = "${stat_icons.asw}",
+
improvable = [[| rowspan="${rowspan}" style="${text_align};background-color:${bg_color}" |${values.value}]],
los = "${stat_icons.los}",
+
notes = [[| class="${classes}" rowspan="${rowspan}" style="${text_align};background-color:${bg_color}" |${values.value}]]
armor = "${stat_icons.armor}",
  −
accuracy = "${stat_icons.accuracy}",
  −
evasion = "${stat_icons.evasion}",
  −
range = "${stat_icons.range}",
  −
},
  −
_stat_columns = {
  −
"id",
  −
"stars",
  −
"name",
  −
"equipment_type",
  −
"firepower",
  −
"torpedo",
  −
"bombing",
  −
"aa",
  −
"asw",
  −
"los",
  −
"luck",
  −
"hp",
  −
"armor",
  −
"accuracy",
  −
"evasion",
  −
"speed",
  −
"range",
  −
"compatibility",
  −
"buildable",
  −
"notes",
   
},
 
},
 
_columns = {
 
_columns = {
 
"id",
 
"id",
"stars",
+
"rarity",
 
"name",
 
"name",
 
"equipment_type",
 
"equipment_type",
Line 63: Line 39:  
"compatibility",
 
"compatibility",
 
"buildable",
 
"buildable",
 +
"improvable",
 
"notes",
 
"notes",
 
},
 
},
_cell_color = {
  −
firepower = "#F0C0C0",
  −
torpedo = "#C0E4FA",
  −
aa = "#F4CAA6",
  −
asw = "#C5BEEE",
  −
los = "#CCFFEE",
  −
luck = "#C9FBC9",
  −
hp = "#FFD9DF",
  −
armor = "#F2ECC2",
  −
evasion = "#EEBEEE",
  −
speed = "#B8E6E6",
  −
aircraft = "#D9D9D9",
  −
fuel = "#94E094",
  −
ammo = "palegoldenrod",
  −
},
  −
_cell = [[| colspan="1" rowspan="${rowspan}" style="text-align: ${text_align}; background-color: ${bg_color};" |${values.value}]],
  −
_transparent = "transparent",
  −
_start_align = "start",
  −
_center_align = "center",
  −
_notes_suffix = "_notes",
   
_stats_column_label = "Stats",
 
_stats_column_label = "Stats",
_table_end = [[|}]],
   
}
 
}
  −
function EquipmentListKai:Table(args)
  −
return self{
  −
_args = args,
  −
}:create_table()
  −
end
      
function EquipmentListKai:id(equipment)
 
function EquipmentListKai:id(equipment)
return {values = {value = Formatting:format_stat(equipment:id())}, bg_color = self._transparent, text_align = self._center_align}
+
return {values = {value = Formatting:format_stat(equipment:id())}, bg_color = self._transparent, text_align = ""}
 
end
 
end
   −
function EquipmentListKai:stars(equipment)
+
function EquipmentListKai:rarity(equipment)
return {values = {value = Formatting:format_stars(equipment:stars())}, bg_color = self._transparent, text_align = self._center_align}
+
return {values = {value = Formatting:tooltip(Formatting:format_stars(equipment:stars()), Formatting:format_equipment_rarity(equipment:rarity()), nil, Formatting._display_inline_block_css)}, bg_color = self._transparent, text_align = ""}
 
end
 
end
    
function EquipmentListKai:name(equipment)
 
function EquipmentListKai:name(equipment)
return {values = {name = Formatting:format_link(equipment:link()),  
+
return {values = {
 +
name = EquipmentLink.format(nil, { equipment:name() }),  
 
icon = Formatting:format_image{Formatting:format_equipment_icon(equipment:icon())},  
 
icon = Formatting:format_image{Formatting:format_equipment_icon(equipment:icon())},  
 
japanese_name = Formatting:format_stat(equipment:japanese_name())
 
japanese_name = Formatting:format_stat(equipment:japanese_name())
 
},  
 
},  
 
bg_color = self._transparent,
 
bg_color = self._transparent,
text_align = self._start_align,
+
text_align = "text-align: " .. self._start_align,
 
}
 
}
 
end
 
end
    
function EquipmentListKai:equipment_type(equipment)
 
function EquipmentListKai:equipment_type(equipment)
return {values = {value = Formatting:format_equipment_type(equipment:type())}, bg_color = self._transparent, text_align = self._start_align}
+
    return {values = {value = Formatting:format_equipment_type(equipment:type())}, bg_color = self._transparent, text_align = ""}
 
end
 
end
    
function EquipmentListKai:stats(equipment)
 
function EquipmentListKai:stats(equipment)
return {values = {value = Formatting:format_stat_bonuses({
+
    local stats = {
firepower = equipment:firepower(),  
+
firepower = equipment:firepower(),  
bombing = equipment:bombing(),  
+
bombing = equipment:bombing(),  
torpedo = equipment:torpedo(),  
+
torpedo = equipment:torpedo(),  
aa = equipment:aa(),  
+
aa = equipment:aa(),  
armor = equipment:armor(),  
+
armor = equipment:armor(),  
asw = equipment:asw(),  
+
asw = equipment:asw(),  
shelling_accuracy = equipment:shelling_accuracy(),
+
shelling_accuracy = equipment:shelling_accuracy(),
torpedo_accuracy = equipment:torpedo_accuracy(),
+
torpedo_accuracy = equipment:torpedo_accuracy(),
evasion = equipment:evasion(),
+
evasion = equipment:evasion(),
los = equipment:los(),
+
los = equipment:los(),
speed = Formatting:format_speed(equipment:speed()),
+
speed = Formatting:format_speed(equipment:speed()),
luck = equipment:luck(),
+
luck = equipment:luck(),
range = Formatting:format_range(equipment:range()),
+
range = Formatting:format_range(equipment:range()),
special = false,
+
special = false,
}, "<br />"),
+
}
 +
return {values = {value = equipment:type() == 48 and Formatting:format_stat_bonuses_interceptor(stats, "<br />") or Formatting:format_stat_bonuses(stats, "<br />"),
 
},  
 
},  
 
bg_color = self._transparent,  
 
bg_color = self._transparent,  
text_align = self._start_align,
+
text_align = "text-align: " .. self._start_align,
 
}
 
}
 
end
 
end
   −
function EquipmentListKai:firepower(equipment)
+
function EquipmentListKai:compatibility(equipment)
local firepower = equipment:firepower()
+
local value = Formatting:format_ship_compatibility(equipment:equippable())
if firepower ~= false then
+
if equipment:is_lbas_plane() then
self._shown_stats.firepower = true
+
value = value == "" and "LBAS" or value .. "; LBAS"
 
end
 
end
return {values = {value = Formatting:format_stat(firepower)}, bg_color = self._transparent, text_align = self._center_align}
+
return {values = {value = value}, bg_color = self._transparent, text_align = "text-align: " .. self._start_align}
 
end
 
end
   −
function EquipmentListKai:torpedo(equipment)
+
function EquipmentListKai:buildable(equipment)
local torpedo = equipment:torpedo()
+
return {values = {value = Formatting:format_boolean_short(equipment:buildable())}, bg_color = self._transparent, text_align = ""}
if torpedo ~= false then
  −
self._shown_stats.torpedo = true
  −
end
  −
return {values = {value = Formatting:format_stat()}, bg_color = self._transparent, text_align = self._center_align}
  −
end
  −
 
  −
function EquipmentListKai:bombing(equipment)
  −
local bombing = equipment:bombing()
  −
if bombing ~= false then
  −
self._shown_stats.bombing = true
  −
end
  −
return {values = {value = Formatting:format_stat(bombing)}, bg_color = self._transparent, text_align = self._center_align}
  −
end
  −
 
  −
function EquipmentListKai:aa(equipment)
  −
local aa = equipment:aa()
  −
if aa ~= false then
  −
self._shown_stats.aa = true
  −
end
  −
return {values = {value = Formatting:format_stat(aa)}, bg_color = self._transparent, text_align = self._center_align}
  −
end
  −
 
  −
function EquipmentListKai:asw(equipment)
  −
local asw = equipment:asw()
  −
if asw ~= false then
  −
self._shown_stats.asw = true
  −
end
  −
return {values = {value = Formatting:format_stat(asw)}, bg_color = self._transparent, text_align = self._center_align}
  −
end
  −
 
  −
function EquipmentListKai:los(equipment)
  −
local los = equipment:los()
  −
if los ~= false then
  −
self._shown_stats.los = true
  −
end
  −
return {values = {value = Formatting:format_stat(los)}, bg_color = self._transparent, text_align = self._center_align}
  −
end
  −
 
  −
function EquipmentListKai:luck(equipment)
  −
local luck = equipment:luck()
  −
if luck ~= false then
  −
self._shown_stats.luck = true
  −
end
  −
return {values = {value = Formatting:format_stat(luck)}, bg_color = self._transparent, text_align = self._center_align}
   
end
 
end
   −
function EquipmentListKai:hp(equipment)
+
function EquipmentListKai:improvable(equipment)
local hp = equipment:hp()
+
return {values = {value = Formatting:format_boolean_short(equipment:improvable())}, bg_color = self._transparent, text_align = ""}
if hp ~= false then
  −
self._shown_stats.hp = true
  −
end
  −
return {values = {value = Formatting:format_stat(hp)}, bg_color = self._transparent, text_align = self._center_align}
  −
end
  −
 
  −
function EquipmentListKai:armor(equipment)
  −
local armor = equipment:armor()
  −
if armor ~= false then
  −
self._shown_stats.armor = true
  −
end
  −
return {values = {value = Formatting:format_stat(armor)}, bg_color = self._transparent, text_align = self._center_align}
  −
end
  −
 
  −
function EquipmentListKai:shelling_accuracy(equipment)
  −
local shelling_accuracy = equipment:shelling_accuracy()
  −
if shelling_accuracy ~= false then
  −
self._shown_stats.shelling_accuracy = true
  −
end
  −
return {values = {value = Formatting:format_stat(shelling_accuracy)}, bg_color = self._transparent, text_align = self._center_align}
  −
end
  −
 
  −
function EquipmentListKai:evasion(equipment)
  −
local evasion = equipment:evasion()
  −
if evasion ~= false then
  −
self._shown_stats.evasion = true
  −
end
  −
return {values = {value = Formatting:format_stat(evasion)}, bg_color = self._transparent, text_align = self._center_align}
  −
end
  −
 
  −
function EquipmentListKai:speed(equipment)
  −
local speed = equipment:speed()
  −
if speed ~= false then
  −
self._shown_stats.speed = true
  −
end
  −
return {values = {value = Formatting:format_speed(speed)}, bg_color = self._transparent, text_align = self._center_align}
  −
end
  −
 
  −
function EquipmentListKai:range(equipment)
  −
local range = equipment:range()
  −
if range ~= false then
  −
self._shown_stats.range = true
  −
end
  −
return {values = {value = Formatting:format_range(range)}, bg_color = self._transparent, text_align = self._center_align}
  −
end
  −
 
  −
function EquipmentListKai:compatibility(equipment)
  −
return {values = {value = Formatting:format_ship_compatibility(equipment:equippable())}, bg_color = self._transparent, text_align = self._start_align}
  −
end
  −
 
  −
function EquipmentListKai:buildable(equipment)
  −
return {values = {value = Formatting:format_boolean(equipment:buildable())}, bg_color = self._transparent, text_align = self._start_align}
   
end
 
end
    
function EquipmentListKai:notes(equipment)
 
function EquipmentListKai:notes(equipment)
return {values = {value = ""}, bg_color = self._transparent, text_align = self._start_align}
+
local note = self._notes[equipment]
end
+
if note then
 
+
return {values = {value = note.note or ""}, bg_color = self._transparent, text_align = "text-align: " .. self._start_align}
function EquipmentListKai.compare_values(val1, val2)
  −
if #val1 == #val2 then
  −
for value_type, value in pairs(val1) do
  −
if value ~= val2[value_type] then
  −
return false
  −
end
  −
end
  −
else
  −
return false
  −
end
  −
return true
  −
end
  −
 
  −
function EquipmentListKai:create_table()
  −
local equipment_list = {}
  −
self._notes = {}
  −
for index, equipment_name in ipairs(self._args) do
  −
if equipment_name == "-" then
  −
table.insert(equipment_list, "break")
  −
elseif equipment_name == "#" then
  −
table.insert(equipment_list, "header")
  −
else
  −
table.insert(equipment_list, Equipment(equipment_name))
  −
local note = self._args[equipment_name .. self._notes_suffix]
  −
if note then
  −
self._notes[equipment_name] = note
  −
end
  −
end
  −
end
  −
 
  −
local rows = {self._table_start}
  −
local header
  −
local data_rows = {}
  −
 
  −
if self._args.comparison == "true" then
  −
self._shown_stats = {}
  −
 
  −
for _, equipment in ipairs(equipment_list) do
  −
local row_values
  −
if type(equipment) == "string" then
  −
row_values = equipment
  −
else
  −
row_values = {}
  −
for _, column in ipairs(self._stat_columns) do
  −
row_values[column] = self[column](self, equipment)
  −
end
  −
if index > 1 then
  −
for _, column in ipairs(self._stat_columns) do
  −
for i=index-1,1,-1 do
  −
local previous_row = data_rows[i]
  −
local previous_row_type = type(previous_row) ~= "string"
  −
local previous_cell = previous_row_type and previous_row[column] or false
  −
if previous_cell then
  −
if self.compare_values(row_values[column].values, previous_cell.values) then
  −
previous_cell.rowspan = previous_cell.rowspan + 1
  −
row_values[column] = nil
  −
else
  −
row_values[column].rowspan = 1
  −
end
  −
break
  −
elseif not previous_row_type then
  −
row_values[column].rowspan = 1
  −
break
  −
end
  −
end
  −
end
  −
else
  −
for _, column in ipairs(self._columns) do
  −
row_values[column].rowspan = 1
  −
end
  −
end
  −
end
  −
table.insert(data_rows, row_values)
  −
end
  −
 
  −
local stat_columns = {}
  −
local stat_columns_set = {}
  −
for _, stat_column in pairs(self._shown_stats) do
  −
table.insert(stat_columns, Formatting:format_image(StatIcons[stat_column]))
  −
stat_columns_set[stat_column] = true
  −
end
  −
for _, column in ipairs(self._stat_columns) do
  −
if not stat_columns_set[column] then
  −
for _, row_values in ipairs(data_rows) do
  −
row_values[column] = nil
  −
end
  −
end
  −
end
  −
header = format{self._header_template, stat_columns = table.concat(stat_columns, "\n")}
  −
else
  −
header = format{self._header_template, stat_columns = format{self._column_header_cell_template, value = self._stats_column_label}}
  −
for _, equipment in ipairs(equipment_list) do
  −
local row_values
  −
if type(equipment) == "string" then
  −
row_values = equipment
  −
else
  −
row_values = {}
  −
for _, column in ipairs(self._columns) do
  −
row_values[column] = self[column](self, equipment)
  −
row_values[column].rowspan = 1
  −
end
  −
end
  −
table.insert(data_rows, row_values)
  −
end
  −
end
  −
  −
table.insert(rows, header)
  −
for index, row_values in ipairs(data_rows) do
  −
if row_values ~= "break" then
  −
table.insert(rows, self._row_starter)
  −
if row_values == "header" then
  −
table.insert(rows, header)
  −
else
  −
for _, column in ipairs(self._columns) do
  −
if row_values[column] then
  −
table.insert(rows, format(self._column_cell_templates[column] or self._cell, row_values[column]))
  −
end
  −
end
  −
end
  −
end
   
end
 
end
table.insert(rows, self._row_starter)
+
return {values = {value = ""}, bg_color = self._transparent, text_align = "text-align: " .. self._start_align}
table.insert(rows, header)
  −
table.insert(rows, self._table_end)
  −
return table.concat(rows, "\n")
   
end
 
end
   −
function EquipmentListKai.test(frame)
+
function EquipmentListKai:create_header()
local getArgs = require('Module:GetArgs')
+
self._header = format{self._header_template, stat_columns = format{self._column_header_cell_template, value = self._stats_column_label}}
local args = getArgs{frame = frame}
  −
return EquipmentListKai:Table(args)
   
end
 
end
    
return EquipmentListKai
 
return EquipmentListKai
cssedit, gkautomate
6,928

edits