Module:AchievementSystem: Difference between revisions
// via Wikitext Extension for VSCode |
// via Wikitext Extension for VSCode |
||
| Line 233: | Line 233: | ||
local key = tostring(pageId) | local key = tostring(pageId) | ||
debugLog("Looking up achievements for ID: " .. key) | debugLog("Looking up achievements for ID: " .. key) | ||
-- Debug logging to show available achievements in JSON | |||
if data.user_achievements then | |||
local availableIds = {} | |||
for k, _ in pairs(data.user_achievements) do | |||
table.insert(availableIds, k) | |||
end | |||
debugLog("Available user IDs in JSON: " .. table.concat(availableIds, ", ")) | |||
end | |||
-- Try to fetch achievements for this pageId | |||
local userAchievements = data.user_achievements[key] or {} | local userAchievements = data.user_achievements[key] or {} | ||
-- If no achievements found under normal ID, try alternative format | |||
if #userAchievements == 0 and key:match("^%d+$") then | if #userAchievements == 0 and key:match("^%d+$") then | ||
local altKey = "n" .. key | local altKey = "n" .. key | ||
debugLog("No achievements under ID '" .. key .. "', trying alternative ID: '" .. altKey .. "'") | |||
userAchievements = data.user_achievements[altKey] or {} | userAchievements = data.user_achievements[altKey] or {} | ||
end | end | ||
if #userAchievements == 0 then | -- If test page and still no achievements, log specific debug info | ||
if key == "18451" and #userAchievements == 0 then | |||
debugLog("WARNING: Test page ID 18451 has no achievements!") | |||
end | |||
-- Log found achievements for debugging | |||
if #userAchievements > 0 then | |||
debugLog("Found " .. #userAchievements .. " achievements for user " .. key) | |||
for i, ach in ipairs(userAchievements) do | |||
debugLog(" Achievement " .. i .. ": type=" .. (ach.type or "nil")) | |||
end | |||
else | |||
debugLog("No achievements found for user " .. key) | debugLog("No achievements found for user " .. key) | ||
return '', '' | return '', '' | ||
| Line 250: | Line 274: | ||
for _, achievement in ipairs(userAchievements) do | for _, achievement in ipairs(userAchievements) do | ||
local achType = achievement.type | local achType = achievement.type | ||
debugLog("Processing achievement type: " .. (achType or "nil")) | |||
for _, typeData in ipairs(data.achievement_types) do | for _, typeData in ipairs(data.achievement_types) do | ||
if typeData.id == achType then | if typeData.id == achType then | ||
local tier = typeData.tier or 999 | local tier = typeData.tier or 999 | ||
debugLog(" Found type '" .. typeData.id .. "' with tier " .. tier .. " and name '" .. (typeData.name or "nil") .. "'") | |||
if tier < highestTier then | if tier < highestTier then | ||
highestTier = tier | highestTier = tier | ||
highestAchievement = typeData | highestAchievement = typeData | ||
debugLog(" New highest tier achievement: " .. typeData.id) | |||
end | end | ||
end | end | ||
| Line 268: | Line 296: | ||
local cssClass = "achievement-" .. highestAchievement.id | local cssClass = "achievement-" .. highestAchievement.id | ||
local displayName = highestAchievement.name or highestAchievement.id or "Award" | local displayName = highestAchievement.name or highestAchievement.id or "Award" | ||
debugLog("Using top-tier achievement: " .. cssClass .. " with name: " .. displayName) | debugLog("Using top-tier achievement: " .. cssClass .. " with name: " .. displayName) | ||
return cssClass, displayName | return cssClass, displayName | ||
end | end | ||