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