Line 1: |
Line 1: |
− | local find = require('Module:Utils').includes | + | local find = require('Module:Core').includes |
− | local format = require('Module:Utils').format | + | local format = require('Module:Core').format |
| local getArgs = require('Module:GetArgs') | | local getArgs = require('Module:GetArgs') |
| local Ship = require('Module:Ship') | | local Ship = require('Module:Ship') |
| local Formatting = require('Module:Formatting') | | local Formatting = require('Module:Formatting') |
| + | local SortId = require('Module:DropList/Sort') |
| | | |
| -- * Rarity definitions. | | -- * Rarity definitions. |
− | -- sync with http://kancolle.wikia.com/wiki/Template:DropList/doc
| |
| | | |
| local rare_ships = { | | local rare_ships = { |
Line 27: |
Line 27: |
| | | |
| 'Akishimo', 'Hirato', 'Atlanta', | | 'Akishimo', 'Hirato', 'Atlanta', |
| + | |
| + | 'Usugumo', 'I-47', 'Matsu', 'Jingei', 'Kaiboukan No.4', |
| + | |
| + | 'Ariake', 'Helena', 'Yashiro', 'South Dakota', 'Hornet', |
| + | |
| + | 'Scirocco', 'Sheffield', 'Washington', 'Take', |
| + | |
| + | 'Momo', 'I-203', 'Northampton', 'Makinami', |
| + | |
| + | 'Honolulu', 'Suzunami', 'Souya', |
| + | |
| + | 'Chougei', 'Conte di Cavour', 'Victorious', 'Kaiboukan No.30', |
| + | |
| + | 'Shounan', 'Scamp', |
| + | |
| + | 'Yawata Maru', |
| + | |
| + | 'Ume', 'Yamashio Maru', 'Fuyutsuki', 'Tamanami', |
| + | |
| + | 'Hayashio', 'I-201', 'Maryland', 'Kurahashi', |
| + | |
| + | 'Ukuru', 'Natsugumo', 'Langley', 'Brooklyn', 'Massachusetts', 'Ranger', 'Jean Bart', |
| + | |
| + | 'Yuugure', 'Heywood L. Edwards', 'Kumano Maru', 'Noumi', 'Tuscaloosa', 'No.101 Transport Ship', |
| + | |
| + | 'Kaiboukan No.22', 'Inagi', 'Shirakumo', 'Salmon', 'Asahi', 'C.Cappellini', 'Javelin', 'Nevada', 'Rodney', |
| + | |
| + | 'Drum', 'I-41', 'I-36', 'Heian Maru', |
| } | | } |
| | | |
Line 56: |
Line 84: |
| ['Hard'] = 'Hard+', | | ['Hard'] = 'Hard+', |
| ['?'] = '?', | | ['?'] = '?', |
− | ['Regular'] = '✓', | + | ['Regular'] = '✔️', |
| } | | } |
| | | |
Line 71: |
Line 99: |
| | | |
| local table_format = { | | local table_format = { |
− | header = '{| class="article-table sortable ${classes}" align="center" width="100%" style="text-align:center; line-height:15px;"\n!Type\n!<span style="border-bottom:1px dotted;">Ship<sup>[[Template:DropList/doc|?]]</sup></span>\n', | + | -- header = '{| class="article-table sortable center ${classes}" width="100%" style="text-align:center; line-height:15px;"\n!Type\n!<span style="border-bottom:1px dotted;">Ship<sup>[[Template:DropList/doc|?]]</sup></span>\n', |
| + | header = '{|class="wikitable mw-collapsible mw-collapsed" width="50%" style="text-align:center"\n!colspan="100"|Ship drops\n|-\n!Type\n!Ship<sup>[[Module:DropList|?]]</sup>\n', |
| header_node = '!${node}\n', | | header_node = '!${node}\n', |
− | header_boss_node = '!style="background-color:#FFCDD2;color:red;"|\'\'\'${node}\'\'\'\n', | + | header_boss_node = '!style="background-color:#FFCDD2;color:red"|\'\'\'${node}\'\'\'\n', |
− | row = '|- class="toggle-target-droplist-non-rare-ship" style="display:none;"\n', | + | row = '|-\n', -- class="toggle-target-droplist-non-rare-ship" style="display:none;" |
| rare_row = '|-\n', | | rare_row = '|-\n', |
| type_cell = '|${type}\n', | | type_cell = '|${type}\n', |
| -- TODO: japanese tooltips | | -- TODO: japanese tooltips |
− | ship_cell = '|[[${ship}|<span style="color:${color};">${ship}</span>]]\n', | + | ship_cell = '|[[${ship}|<span style="color:${color}">${ship}</span>]]\n', |
| none_cell = '|None\n', | | none_cell = '|None\n', |
− | node_cell = '|style="background-color:#${background_color};color:${color}"|${diff}\n', | + | node_cell = '|style="background-color:#${background_color}${color}"|${diff}\n', |
| empty_cell = '|\n', | | empty_cell = '|\n', |
| footer = '|}\n', | | footer = '|}\n', |
− | debugger = [[{| style="width:100%;" align="center" cellspacing="0" class="article-table mw-collapsible mw-collapsed" | + | debugger = [[{|style="width:100%" align="center" cellspacing="0" class="article-table mw-collapsible mw-collapsed" |
| !Notes | | !Notes |
| |- | | |- |
Line 182: |
Line 211: |
| ship = ship, | | ship = ship, |
| rare = rare, | | rare = rare, |
| + | ignored = ignored, |
| regular = regular, | | regular = regular, |
| ship_color = rarity_colors[ignored][rare], | | ship_color = rarity_colors[ignored][rare], |
| type = Formatting:format_ship_code(ship_table._type) or '?', | | type = Formatting:format_ship_code(ship_table._type) or '?', |
| + | type_id = ship_table._type or 0, |
| + | sort_id = SortId[ship_table._api_id] or 0, |
| nodes = {}, | | nodes = {}, |
| }) | | }) |
Line 265: |
Line 297: |
| table_format.node_cell, | | table_format.node_cell, |
| background_color = node.color, | | background_color = node.color, |
− | color = node.s_only and 'red' or '', | + | color = node.s_only and ';color:red' or '', |
| diff = node.tooltip and Formatting:tooltip2(node.diff, node.tooltip:gsub("@", " / @@"), " / ", "@") or node.diff | | diff = node.tooltip and Formatting:tooltip2(node.diff, node.tooltip:gsub("@", " / @@"), " / ", "@") or node.diff |
| } or table_format.empty_cell) | | } or table_format.empty_cell) |
Line 278: |
Line 310: |
| }) | | }) |
| end | | end |
| + | |
| + | -- true when the first is less than the second (so that not comp(a[i+1],a[i]) will be true after the sort). If comp is not given, then the standard Lua operator < is used instead. |
| + | |
| + | table.sort(tbl.rows, function(a, b) |
| + | if a.type_id < b.type_id then |
| + | return true |
| + | elseif a.type_id == b.type_id then |
| + | return a.sort_id < b.sort_id |
| + | else |
| + | return false |
| + | end |
| + | end) |
| | | |
− | -- rows
| |
| for _, row in pairs(tbl.rows) do | | for _, row in pairs(tbl.rows) do |
− | -- TODO: Sort by type/name
| |
| if row.rare then | | if row.rare then |
| add_row(row) | | add_row(row) |
Line 287: |
Line 329: |
| end | | end |
| for key, row in pairs(tbl.rows) do | | for key, row in pairs(tbl.rows) do |
− | -- TODO: Sort by type/name | + | if not row.rare and not row.ignored then |
− | if not row.rare then | + | add_row(row) |
| + | end |
| + | end |
| + | for key, row in pairs(tbl.rows) do |
| + | if row.ignored then |
| add_row(row) | | add_row(row) |
| end | | end |
Line 295: |
Line 341: |
| add(table_format.footer) | | add(table_format.footer) |
| | | |
− | if tbl.debug ~= '' then | + | if tbl.debug ~= '' and tbl.log then |
| add(format{table_format.debugger, debug = tbl.debug}) | | add(format{table_format.debugger, debug = tbl.debug}) |
| end | | end |
Line 309: |
Line 355: |
| return showTable(parseArgs(args)) | | return showTable(parseArgs(args)) |
| end | | end |
− |
| |
− | DropList.t = Formatting:format_ship_code('')
| |
| | | |
| return DropList | | return DropList |