MediaWiki:Common.js: Difference between revisions

Jump to navigation Jump to search
m (remove test)
Tag: Reverted
(update code to display console logs)
Tag: Reverted
Line 3: Line 3:


document.addEventListener("DOMContentLoaded", function() {
document.addEventListener("DOMContentLoaded", function() {
     var table = document.querySelector('.edit-leaderboard');  // Select only the table with this specific class
     var table = document.querySelector('.edit-leaderboard');  // Select the table with the specific class
     if (!table) return;
     if (!table) {
        console.log('Table not found.');
        return;
    }
      
      
     var rows = Array.from(table.querySelectorAll('tr:not(:first-child)'));
     var rows = Array.from(table.querySelectorAll('tr:not(:first-child)'));
    if (rows.length === 0) {
        console.log('No rows found.');
        return;
    }
    console.log('Rows found:', rows.length);
    // Sort rows by the edit count (column index 2)
     rows.sort(function(rowA, rowB) {
     rows.sort(function(rowA, rowB) {
         var editA = parseInt(rowA.cells[2].textContent, 10); // Edit count is in the 3rd column
         var editA = parseInt(rowA.cells[2].textContent.trim(), 10); // Ensure we are reading the correct column
         var editB = parseInt(rowB.cells[2].textContent, 10);
         var editB = parseInt(rowB.cells[2].textContent.trim(), 10);
         return editB - editA; // Sort descending by edit count
 
        console.log('Edit counts:', editA, editB);
 
         return editB - editA; // Sort descending by edit count
     });
     });


Line 16: Line 30:
     var currentRank = 1;
     var currentRank = 1;
     rows.forEach(function(row, index) {
     rows.forEach(function(row, index) {
         var prevEdit = index > 0 ? parseInt(rows[index - 1].cells[2].textContent, 10) : null;
         var prevEdit = index > 0 ? parseInt(rows[index - 1].cells[2].textContent.trim(), 10) : null;
         var currentEdit = parseInt(row.cells[2].textContent, 10);
         var currentEdit = parseInt(row.cells[2].textContent.trim(), 10);
 
        console.log('Current edit count:', currentEdit, 'Previous edit count:', prevEdit);


         // Handle ties: if the current edit count is the same as the previous one, keep the same rank
         // Handle ties: if the current edit count is the same as the previous one, keep the same rank
         if (prevEdit !== null && prevEdit === currentEdit) {
         if (prevEdit !== null && prevEdit === currentEdit) {
             row.cells[0].textContent = currentRank;
             row.cells[0].textContent = currentRank; // Set the rank in the first column
         } else {
         } else {
             row.cells[0].textContent = currentRank;
             row.cells[0].textContent = currentRank;
             currentRank = index + 1; // Update rank for the next user
             currentRank = index + 1; // Update rank for the next user
         }
         }


         table.appendChild(row); // Re-add the sorted row to the table
        console.log('Rank assigned:', row.cells[0].textContent);
 
         table.appendChild(row); // Re-add the sorted row to the table
     });
     });
});
});

Revision as of 03:23, 14 October 2024

/* Any JavaScript here will be loaded for all users on every page load. */


document.addEventListener("DOMContentLoaded", function() {
    var table = document.querySelector('.edit-leaderboard');  // Select the table with the specific class
    if (!table) {
        console.log('Table not found.');
        return;
    }
    
    var rows = Array.from(table.querySelectorAll('tr:not(:first-child)'));
    if (rows.length === 0) {
        console.log('No rows found.');
        return;
    }

    console.log('Rows found:', rows.length);

    // Sort rows by the edit count (column index 2)
    rows.sort(function(rowA, rowB) {
        var editA = parseInt(rowA.cells[2].textContent.trim(), 10);  // Ensure we are reading the correct column
        var editB = parseInt(rowB.cells[2].textContent.trim(), 10);

        console.log('Edit counts:', editA, editB);

        return editB - editA;  // Sort descending by edit count
    });

    // Assign ranks after sorting
    var currentRank = 1;
    rows.forEach(function(row, index) {
        var prevEdit = index > 0 ? parseInt(rows[index - 1].cells[2].textContent.trim(), 10) : null;
        var currentEdit = parseInt(row.cells[2].textContent.trim(), 10);

        console.log('Current edit count:', currentEdit, 'Previous edit count:', prevEdit);

        // Handle ties: if the current edit count is the same as the previous one, keep the same rank
        if (prevEdit !== null && prevEdit === currentEdit) {
            row.cells[0].textContent = currentRank;  // Set the rank in the first column
        } else {
            row.cells[0].textContent = currentRank;
            currentRank = index + 1;  // Update rank for the next user
        }

        console.log('Rank assigned:', row.cells[0].textContent);

        table.appendChild(row);  // Re-add the sorted row to the table
    });
});