Changes

no edit summary
Line 9: Line 9:  
|colspan="4" style="background-color:#eef2f7"|%s<br>[[%s]]]=],
 
|colspan="4" style="background-color:#eef2f7"|%s<br>[[%s]]]=],
 
choice = [=[|-
 
choice = [=[|-
!colspan="5" style="background-color:#3baef5;color:red"|OR]=],
+
!style="background-color:#eef2f7;color:red"|OR
 +
|colspan="4" style="background-color:#eef2f7"|]=],
 
-- TODO: class="sortable"
 
-- TODO: class="sortable"
 
item_header = [[{|style="text-align:center;width:100%"
 
item_header = [[{|style="text-align:center;width:100%"
Line 23: Line 24:  
|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]=],
 +
item_row_choice1 = [=[|-
 +
|data-sort-value="%s" style="background-color:#eef2f7;font-size:12px;line-height:14px;border-top:4px solid grey"|%s<br>[[%s]]
 +
|style="background-color:#eef2f7;font-size:18px;border-top:4px solid grey"|%s
 +
|style="background-color:#eef2f7;font-size:18px;border-top:4px solid grey"|%s
 +
|style="background-color:#eef2f7;font-size:18px;border-top:4px solid grey"|%s
 +
|style="background-color:#eef2f7;font-size:18px;border-top:4px solid grey"|%s]=],
 +
item_row_choice2 = [=[|-
 +
|data-sort-value="%s" style="background-color:#eef2f7;font-size:12px;line-height:14px;border-bottom:4px solid grey"|%s<br>[[%s]]
 +
|style="background-color:#eef2f7;font-size:18px;border-bottom:4px solid grey"|%s
 +
|style="background-color:#eef2f7;font-size:18px;border-bottom:4px solid grey"|%s
 +
|style="background-color:#eef2f7;font-size:18px;border-bottom:4px solid grey"|%s
 +
|style="background-color:#eef2f7;font-size:18px;border-bottom:4px solid grey"|%s]=],
 
}
 
}
   Line 29: Line 42:  
local assetSizes = { item = '75px', equipment = '75px', ship = '240px' }
 
local assetSizes = { item = '75px', equipment = '75px', ship = '240px' }
   −
local function render(frame)
+
local function render(frame, event, map)
local event = frame.args[1] or "??"
+
local event = event or frame.args[1] or "??"
local map = frame.args[2] or "??"
+
local map = map or frame.args[2] or "??"
 
local success, data = U.loadData("Data/Map/" .. event)
 
local success, data = U.loadData("Data/Map/" .. event)
 
if not success then return "Unknown event: " .. event end
 
if not success then return "Unknown event: " .. event end
Line 39: Line 52:  
local tbl = {}
 
local tbl = {}
 
local types = {}
 
local types = {}
local choices = {}
   
-- TODO: assuming 0-1 single ship reward on all difficulties
 
-- TODO: assuming 0-1 single ship reward on all difficulties
 
local ship = false
 
local ship = false
local function setDataItem(diff, v, choice, last)
  −
local name = v.item or v.equipment or v.ship or '??'
  −
types[name] = v.item and 'item' or v.equipment and 'equipment' or v.ship and 'ship' or '??'
  −
if choice then
  −
if not U.ifind(index, name) then table.insert(index, name) end
  −
tbl[name] = tbl[name] or {}
  −
tbl[name][diff] = { count = v.count or 1, level = v.level }
  −
if not last then
  −
choices[name] = true
  −
end
  −
else
  −
if v.ship then
  −
ship = v.ship
  −
else
  −
if not U.ifind(index, name) then table.insert(index, name) end
  −
tbl[name] = tbl[name] or {}
  −
tbl[name][diff] = { count = v.count or 1, level = v.level }
  −
end
  −
end
  −
end
   
local function setData(diff)
 
local function setData(diff)
 
for _, v in ipairs(data[diff] or {}) do
 
for _, v in ipairs(data[diff] or {}) do
 
if v.choice then
 
if v.choice then
for i, v in ipairs(v.choice) do
+
local v1 = v.choice[1]
setDataItem(diff, v, true, i == #v.choice)
+
local v2 = v.choice[2]
 +
local name1 = v1.item or v1.equipment or v1.ship or '??'
 +
local name2 = v2.item or v2.equipment or v2.ship or '??'
 +
types[name1] = v1.item and 'item' or v1.equipment and 'equipment' or v1.ship and 'ship' or '??'
 +
types[name2] = v2.item and 'item' or v2.equipment and 'equipment' or v2.ship and 'ship' or '??'
 +
local names = {name1 .. '1', name2 .. '2'}
 +
local name = names[1] .. '||' .. names[2]
 +
types[name] = 'choice'
 +
if not U.ifind(index, name) then table.insert(index, name) end
 +
tbl[name] = tbl[name] or {}
 +
tbl[name][diff] = {
 +
{ name = name1, count = v1.count or 1, level = v1.level },
 +
{ name = name2, count = v2.count or 1, level = v2.level },
 +
}
 +
else
 +
local name = v.item or v.equipment or v.ship or '??'
 +
types[name] = v.item and 'item' or v.equipment and 'equipment' or v.ship and 'ship' or '??'
 +
if v.ship then
 +
ship = v.ship
 +
else
 +
if not U.ifind(index, name) then table.insert(index, name) end
 +
tbl[name] = tbl[name] or {}
 +
tbl[name][diff] = { count = v.count or 1, level = v.level }
 
end
 
end
else
  −
setDataItem(diff, v)
   
end
 
end
 
end
 
end
 
end
 
end
local function getCount(name, diff)
+
local function getCount(name, diff, i)
return ((tbl[name] or {})[diff] or {}).count or 0
+
if i then
 +
return (((tbl[name] or {})[diff] or {})[i] or {}).count or 0
 +
else
 +
return ((tbl[name] or {})[diff] or {}).count or 0
 +
end
 
end
 
end
local function getLevel(name, diff)
+
local function getLevel(name, diff, i)
local level = ((tbl[name] or {})[diff] or {}).level
+
local level
 +
if i then
 +
level = (((tbl[name] or {})[diff] or {})[i] or {}).level
 +
else
 +
level = ((tbl[name] or {})[diff] or {}).level
 +
end
 
return level and string.format(" (★%d)", level) or ''
 
return level and string.format(" (★%d)", level) or ''
 
end
 
end
local function getCell(name, diff)
+
local function getCell(name, diff, i)
local count = getCount(name, diff)
+
local count = getCount(name, diff, i)
return (count == 0 and '' or count) .. getLevel(name, diff)
+
return (count == 0 and '' or count) .. getLevel(name, diff, i)
 
end
 
end
 
local function getAsset(name)
 
local function getAsset(name)
Line 97: Line 118:  
table.insert(result, template.footer)
 
table.insert(result, template.footer)
 
table.insert(result, template.item_header)
 
table.insert(result, template.item_header)
 +
--[[
 
local sortedIndex = U.imap(index, function(name, i) return { name = name, i = i, typ = types[name] } end)
 
local sortedIndex = U.imap(index, function(name, i) return { name = name, i = i, typ = types[name] } end)
 
table.sort(sortedIndex, function (x, y)
 
table.sort(sortedIndex, function (x, y)
Line 108: Line 130:  
local sortValues = {}
 
local sortValues = {}
 
for i, e in ipairs(sortedIndex) do sortValues[e.name] = i end
 
for i, e in ipairs(sortedIndex) do sortValues[e.name] = i end
 +
]]--
 +
-- sortValues[name]
 
for i, name in ipairs(index) do
 
for i, name in ipairs(index) do
table.insert(result, string.format(template.item_row, sortValues[name], getAsset(name), name,
+
if types[name] == 'choice' then
getCell(name, 'Casual'), getCell(name, 'Easy'), getCell(name, 'Medium'), getCell(name, 'Hard')))
+
local names = U.split(name, '||')
if choices[name] then
+
local name1 = names[1]:sub(1, -2)
 +
local name2 = names[2]:sub(1, -2)
 +
table.insert(result, string.format(template.item_row_choice1, 0, getAsset(name1), name1,
 +
getCell(name, 'Casual', 1), getCell(name, 'Easy', 1), getCell(name, 'Medium', 1), getCell(name, 'Hard', 1)))
 
table.insert(result, template.choice)
 
table.insert(result, template.choice)
 +
table.insert(result, string.format(template.item_row_choice2, 0, getAsset(name2), name2,
 +
getCell(name, 'Casual', 2), getCell(name, 'Easy', 2), getCell(name, 'Medium', 2), getCell(name, 'Hard', 2)))
 +
else
 +
table.insert(result, string.format(template.item_row, 0, getAsset(name), name,
 +
getCell(name, 'Casual'), getCell(name, 'Easy'), getCell(name, 'Medium'), getCell(name, 'Hard')))
 
end
 
end
 
end
 
end
Line 119: Line 151:  
end
 
end
   −
return { render = render }
+
local function test()
 +
mw.log(render(nil, 'Summer 2022 Event', 'E-1'))
 +
end
 +
 
 +
return { render = render, test = test }
cssedit, gkautomate
7,064

edits