Module:MysteryTracker
From Secrets of Hogwarts
More actions
Documentation for this module may be created at Module:MysteryTracker/doc
local p = {}
function p.getTotalMysteries(frame)
return "47"
end
function p.getSolvedCount(frame)
return "23"
end
function p.renderActiveInvestigations(frame)
local investigations = {
{
title = "The Chen Constellation Chain",
status = "Active",
difficulty = 4,
investigators = {"MysterySeeker", "QuantumWizard", "StarGazer"},
progress = 75,
lastUpdate = "2 hours ago",
clues = 8,
nextStep = "Analyze telescope data from Astronomy Tower"
},
{
title = "Operation Mindbridge",
status = "Critical",
difficulty = 5,
investigators = {"CodeBreaker", "RoomWalker"},
progress = 45,
lastUpdate = "1 day ago",
clues = 12,
nextStep = "Access restricted basement archives"
},
{
title = "The Digital Dark Ages",
status = "Recruiting",
difficulty = 3,
investigators = {"HistoryBuff"},
progress = 20,
lastUpdate = "3 days ago",
clues = 4,
nextStep = "Gather testimony from 2040s survivors"
}
}
local output = {}
table.insert(output, '<div class="investigations-grid">')
for i, inv in ipairs(investigations) do
local statusClass = inv.status:lower():gsub(" ", "-")
local difficultyStars = string.rep("⭐", inv.difficulty)
local investigatorsList = table.concat(inv.investigators, ", ")
table.insert(output, '<div class="investigation-card status-' .. statusClass .. '">')
table.insert(output, '<div class="investigation-header">')
table.insert(output, '<h3 class="investigation-title"><a href="/wiki/' .. inv.title .. '">' .. inv.title .. '</a></h3>')
table.insert(output, '<span class="investigation-status">' .. inv.status .. '</span>')
table.insert(output, '</div>')
table.insert(output, '<div class="investigation-meta">')
table.insert(output, '<div class="difficulty">' .. difficultyStars .. '</div>')
table.insert(output, '<div class="progress-section">')
table.insert(output, '<div class="progress-bar">')
table.insert(output, '<div class="progress-fill" style="width: ' .. inv.progress .. '%"></div>')
table.insert(output, '</div>')
table.insert(output, '<span class="progress-text">' .. inv.progress .. '% Complete</span>')
table.insert(output, '</div>')
table.insert(output, '</div>')
table.insert(output, '<div class="investigation-details">')
table.insert(output, '<div class="investigators"><strong>👥 Investigators:</strong> ' .. investigatorsList .. '</div>')
table.insert(output, '<div class="clues"><strong>🔍 Clues Found:</strong> ' .. inv.clues .. '</div>')
table.insert(output, '<div class="next-step"><strong>📋 Next Step:</strong> ' .. inv.nextStep .. '</div>')
table.insert(output, '<div class="last-update"><strong>🕒 Last Update:</strong> ' .. inv.lastUpdate .. '</div>')
table.insert(output, '</div>')
table.insert(output, '<div class="investigation-actions">')
table.insert(output, '<a href="/wiki/' .. inv.title .. '" class="btn-primary">View Case File</a>')
table.insert(output, '<a href="/wiki/Talk:' .. inv.title .. '" class="btn-secondary">Join Discussion</a>')
table.insert(output, '</div>')
table.insert(output, '</div>')
end
table.insert(output, '</div>')
table.insert(output, '<div class="mystery-stats">')
table.insert(output, '<div class="stat-box">')
table.insert(output, '<div class="stat-number">47</div>')
table.insert(output, '<div class="stat-label">Total Mysteries</div>')
table.insert(output, '</div>')
table.insert(output, '<div class="stat-box">')
table.insert(output, '<div class="stat-number">23</div>')
table.insert(output, '<div class="stat-label">Solved</div>')
table.insert(output, '</div>')
table.insert(output, '<div class="stat-box">')
table.insert(output, '<div class="stat-number">24</div>')
table.insert(output, '<div class="stat-label">Active</div>')
table.insert(output, '</div>')
table.insert(output, '<div class="stat-box">')
table.insert(output, '<div class="stat-number">15</div>')
table.insert(output, '<div class="stat-label">Investigators</div>')
table.insert(output, '</div>')
table.insert(output, '</div>')
return table.concat(output)
end
return p