Line 2: |
Line 2: |
| | | |
| local template = { | | local template = { |
− | top_header = [[{|style="text-align:center" | + | footer = "|}", |
| + | header = [[{|style="text-align:center;width:100%" |
| !colspan="5" style="background-color:#3baef5;color:white"|Rewards]], | | !colspan="5" style="background-color:#3baef5;color:white"|Rewards]], |
− | footer = [[|}]], | + | ship_row = [=[|- |
− | ship = [=[|-
| + | !style="background-color:#3baef5;color:white;width:40%%"|Ship |
− | !style="background-color:#3baef5;color:white"|Ship | |
| |colspan="4" style="background-color:#eef2f7"|%s<br>[[%s]]]=], | | |colspan="4" style="background-color:#eef2f7"|%s<br>[[%s]]]=], |
− | header = [[|- | + | item_header = [[{|style="text-align:center;width:100%" class="sortable" |
− | !style="background-color:#3baef5;color:white"|Equipment/Item | + | !style="background-color:#3baef5;color:white;width:40%"|Item/Equipment |
− | !style="background-color:#3baef5;color:white;width:15%"|丁<br>Casual | + | !class="unsortable" style="background-color:#3baef5;color:white;width:15%"|丁<br>Casual |
− | !style="background-color:#3baef5;color:white;width:15%"|丙<br>Easy | + | !class="unsortable" style="background-color:#3baef5;color:white;width:15%"|丙<br>Easy |
− | !style="background-color:#3baef5;color:white;width:15%"|乙<br>Medium | + | !class="unsortable" style="background-color:#3baef5;color:white;width:15%"|乙<br>Medium |
− | !style="background-color:#3baef5;color:white;width:15%"|甲<br>Hard]], | + | !class="unsortable" style="background-color:#3baef5;color:white;width:15%"|甲<br>Hard]], |
− | row = [=[|- | + | item_row = [=[|- |
− | |style="background-color:#eef2f7;font-size:12px"|%s<br>[[%s]] | + | |data-sort-value="%s" style="background-color:#eef2f7;font-size:12px"|%s<br>[[%s]] |
| |style="background-color:#eef2f7;font-size:18px"|%s | | |style="background-color:#eef2f7;font-size:18px"|%s |
| |style="background-color:#eef2f7;font-size:18px"|%s | | |style="background-color:#eef2f7;font-size:18px"|%s |
Line 52: |
Line 52: |
| end | | end |
| local function getCount(name, diff) | | local function getCount(name, diff) |
− | return ((tbl[name] or {})[diff] or {}).count or '' | + | return ((tbl[name] or {})[diff] or {}).count or 0 |
| end | | end |
| local function getLevel(name, diff) | | local function getLevel(name, diff) |
Line 59: |
Line 59: |
| end | | end |
| local function getCell(name, diff) | | local function getCell(name, diff) |
− | return getCount(name, diff) .. getLevel(name, diff) | + | local count = getCount(name, diff) |
| + | return (count == 0 and '' or count) .. getLevel(name, diff) |
| end | | end |
| local function getAsset(name) | | local function getAsset(name) |
Line 68: |
Line 69: |
| setData('Easy') | | setData('Easy') |
| setData('Casual') | | setData('Casual') |
− | local result = { template.top_header } | + | local result = { template.header } |
| if ship then | | if ship then |
− | table.insert(result, string.format(template.ship, getAsset(ship), ship)) | + | table.insert(result, string.format(template.ship_row, getAsset(ship), ship)) |
| end | | end |
− | table.insert(result, template.header) | + | table.insert(result, template.footer) |
− | for _, name in ipairs(index) do | + | table.insert(result, template.item_header) |
− | table.insert(result, string.format(template.row, getAsset(name), name, getCell(name, 'Casual'), getCell(name, 'Easy'), getCell(name, 'Medium'), getCell(name, 'Hard'))) | + | local sortedIndex = U.imap(index, function(name, i) return { name = name, i = i, typ = types[name] } end) |
| + | table.sort(sortedIndex, function (x, y) |
| + | if x.typ ~= y.typ then return x.typ > y.typ end |
| + | if getCount(x.name, 'Casual') ~= getCount(y.name, 'Casual') then return getCount(x.name, 'Casual') > getCount(y.name, 'Casual') end |
| + | if getCount(x.name, 'Easy') ~= getCount(y.name, 'Easy') then return getCount(x.name, 'Easy') > getCount(y.name, 'Easy') end |
| + | if getCount(x.name, 'Medium') ~= getCount(y.name, 'Medium') then return getCount(x.name, 'Medium') > getCount(y.name, 'Medium') end |
| + | if getCount(x.name, 'Hard') ~= getCount(y.name, 'Hard') then return getCount(x.name, 'Hard') > getCount(y.name, 'Hard') end |
| + | return x.i < y.i |
| + | end) |
| + | local sortValues = {} |
| + | for i, e in ipairs(sortedIndex) do sortValues[e.name] = i end |
| + | for i, name in ipairs(index) do |
| + | table.insert(result, string.format(template.item_row, sortValues[name], getAsset(name), name, |
| + | getCell(name, 'Casual'), getCell(name, 'Easy'), getCell(name, 'Medium'), getCell(name, 'Hard'))) |
| end | | end |
| table.insert(result, template.footer) | | table.insert(result, template.footer) |