mirror of
https://github.com/bryanthaboi/gen1recomp.git
synced 2026-08-12 08:21:02 +02:00
Show feed-published release stats on Find Mods rows
A mod index can now publish three optional per-entry fields -- downloads (total across every release), first_release and last_release (ISO days) -- which the FIND MODS listing shows in the same gold line the MODS tab uses. The fields are additive by design: feeds that carry them stay readable by every build that predates them (schema_version stays 1), and feeds that do not render exactly as before. ModUpdate.statsLine builds the shared line; the MODS tab reuses it. Parser, formatting, and parse coverage are tested.
This commit is contained in:
@@ -1167,13 +1167,9 @@ local function buildModsPanel(imp, parent, m)
|
||||
-- counts, so a pre-downloads cache entry costs the line, not a wrong "0".
|
||||
local dlLine
|
||||
if info and info.downloads then
|
||||
local formatted = ModUpdate.formatCount(info.downloads.total)
|
||||
if info.dates then
|
||||
dlLine = Strings("%s downloads across all releases - Released %s - Updated %s",
|
||||
formatted, info.dates.first, info.dates.latest)
|
||||
else
|
||||
dlLine = Strings("%s downloads across all releases", formatted)
|
||||
end
|
||||
local d = info.dates
|
||||
dlLine = ModUpdate.statsLine(info.downloads.total,
|
||||
d and d.first, d and d.latest)
|
||||
end
|
||||
|
||||
-- measure the body: name (with the badge beside it only when it fits),
|
||||
@@ -1441,9 +1437,17 @@ local function buildFindPanel(imp, parent, m)
|
||||
local btnH = math.ceil(textHeight(chipSize)) + 14
|
||||
for _, entry in ipairs(rows) do
|
||||
local action, note = findActionFor(entry, installed[entry.id])
|
||||
-- Feed-published release stats (downloads, first/last release date) in
|
||||
-- the same gold line the MODS tab uses; absent until a feed carries them.
|
||||
local statsLine
|
||||
if entry.downloads ~= nil or entry.first_release or entry.last_release then
|
||||
statsLine = ModUpdate.statsLine(entry.downloads,
|
||||
entry.first_release, entry.last_release)
|
||||
end
|
||||
|
||||
local bodyH = math.ceil(textHeight(titleSize))
|
||||
+ 4 + math.ceil(textHeight(smallSize))
|
||||
if statsLine then bodyH = bodyH + 4 + wrapHeight(smallSize, statsLine, bodyW) end
|
||||
if note then bodyH = bodyH + 4 + wrapHeight(smallSize, note, bodyW) end
|
||||
if entry.summary and entry.summary ~= "" then
|
||||
bodyH = bodyH + 4 + wrapHeight(smallSize, entry.summary, bodyW)
|
||||
@@ -1488,6 +1492,9 @@ local function buildFindPanel(imp, parent, m)
|
||||
end
|
||||
label(body, meta, smallSize, C("detail"),
|
||||
{ width = "100%", textWrap = false, textOverflow = "ellipsis" })
|
||||
if statsLine then
|
||||
label(body, statsLine, smallSize, C("gold"), { width = "100%" })
|
||||
end
|
||||
if note then label(body, note, smallSize, C("green"), { width = "100%" }) end
|
||||
if entry.summary and entry.summary ~= "" then
|
||||
label(body, entry.summary, smallSize, C("detail"), { width = "100%" })
|
||||
|
||||
Reference in New Issue
Block a user