MediaWiki:Common.js: Difference between revisions

425 bytes removed ,  22:08, 26 August 2025
no edit summary
No edit summary
No edit summary
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
//Final working Common.js
mw.loader.load('//wiki.ekatrafoundation.org/index.php?title=User:Gurwinder/Edittool.js&action=raw&ctype=text/javascript');
mw.loader.load('//wiki.ekatrafoundation.org/index.php?title=User:Gurwinder/Edittool.js&action=raw&ctype=text/javascript');
'MediaWiki:InterWikiTransclusion.js'


// Turn <span class="mw-charinsert">foo</span> into a button that inserts "foo"
// Turn <span class="mw-charinsert">foo</span> into a button that inserts "foo"
Line 627: Line 629:
};
};


$.getScript( '//wiki.ekatrafoundation.org/index.php?title=MediaWiki:Base.js&action=raw&ctype=text/javascript' )
//$.getScript( '//wiki.ekatrafoundation.org/index.php?title=MediaWiki:Base.js&action=raw&ctype=text/javascript' )
.done( function() {
//.done( function() {
importScript('MediaWiki:InterWikiTransclusion.js');
// importScript('MediaWiki:InterWikiTransclusion.js');
importScript('MediaWiki:TranscludedIn.js');
// importScript('MediaWiki:TranscludedIn.js');
importScript('MediaWiki:Compare.js');
// importScript('MediaWiki:Compare.js');
} );
//} );
$.getScript('//wiki.ekatrafoundation.org/index.php?title=MediaWiki:Base.js&action=raw&ctype=text/javascript')
.done(function () {
    mw.loader.load('//wiki.ekatrafoundation.org/index.php?title=MediaWiki:InterWikiTransclusion.js&action=raw&ctype=text/javascript');
    mw.loader.load('//wiki.ekatrafoundation.org/index.php?title=MediaWiki:TranscludedIn.js&action=raw&ctype=text/javascript');
    mw.loader.load('//wiki.ekatrafoundation.org/index.php?title=MediaWiki:Compare.js&action=raw&ctype=text/javascript');
});


/* Footnotes as tooltip - from it.wikipedia.org - request by Candalua */
/* Footnotes as tooltip - from it.wikipedia.org - request by Candalua */
Line 820: Line 828:
         var $clickedHeader = $(this);
         var $clickedHeader = $(this);
         var columnIndex = $clickedHeader.index();
         var columnIndex = $clickedHeader.index();
       
        console.log('Clicked header column index:', columnIndex);
          
          
         var $allHeaders = $table.find('th');
         var $allHeaders = $table.find('th');
Line 830: Line 836:
         }
         }
          
          
         if ($dataRows.length === 0) {
         if ($dataRows.length === 0) return;
            console.log('No data rows found');
            return;
        }
       
        console.log('Found', $dataRows.length, 'data rows');
          
          
         var currentSortClass = $clickedHeader.hasClass('sort-asc') ? 'asc' :  
         var currentSortClass = $clickedHeader.hasClass('sort-asc') ? 'asc' :  
Line 851: Line 852:
          
          
         rowsArray.sort(function(rowA, rowB) {
         rowsArray.sort(function(rowA, rowB) {
             var $rowACells = $(rowA).find('td, th');
             var $cellA = $(rowA).find('td').eq(columnIndex);
             var $rowBCells = $(rowB).find('td, th');
             var $cellB = $(rowB).find('td').eq(columnIndex);
              
              
            var $cellA = $rowACells.eq(columnIndex);
             if ($cellA.length === 0 || $cellB.length === 0) return 0;
            var $cellB = $rowBCells.eq(columnIndex);
           
             if ($cellA.length === 0 || $cellB.length === 0) {
                console.log('Cell not found for column', columnIndex);
                return 0;
            }
              
              
             var textA = $cellA.text().trim();
             var textA = $cellA.text().trim();
             var textB = $cellB.text().trim();
             var textB = $cellB.text().trim();
              
              
            console.log('Comparing:', textA, 'vs', textB);
           
            // Handle empty cells
            if (textA === '' && textB === '') return 0;
            if (textA === '') return newSortDirection === 'asc' ? -1 : 1;
            if (textB === '') return newSortDirection === 'asc' ? 1 : -1;
           
            // Try numeric comparison first
             var numA = parseFloat(textA.replace(/[,$%\s]/g, ''));
             var numA = parseFloat(textA.replace(/[,$%\s]/g, ''));
             var numB = parseFloat(textB.replace(/[,$%\s]/g, ''));
             var numB = parseFloat(textB.replace(/[,$%\s]/g, ''));
Line 879: Line 866:
             if (!isNaN(numA) && !isNaN(numB)) {
             if (!isNaN(numA) && !isNaN(numB)) {
                 result = numA - numB;
                 result = numA - numB;
                console.log('Numeric sort:', numA, 'vs', numB, '=', result);
             } else {
             } else {
                 result = textA.localeCompare(textB);
                 result = textA.localeCompare(textB);
                console.log('Text sort:', textA, 'vs', textB, '=', result);
             }
             }
              
              
Line 895: Line 880:
             $table.append(rowsArray);
             $table.append(rowsArray);
         }
         }
       
        console.log('Sorting completed for column', columnIndex);
          
          
         setTimeout(function() {
         setTimeout(function() {