Menü aufrufen
Toggle preferences menu
Persönliches Menü aufrufen
Nicht angemeldet
Ihre IP-Adresse wird öffentlich sichtbar sein, wenn Sie Änderungen vornehmen.

MediaWiki:Common.js: Unterschied zwischen den Versionen

MediaWiki-Schnittstellenseite
CF (Diskussion | Beiträge)
CF (Diskussion | Beiträge)
Überschreiben der Tabellensortierung, damit leere Einträge immer unten stehen
Zeile 245: Zeile 245:
if(execute_hotcat==true) importScript('MediaWiki:HotCat.js');
if(execute_hotcat==true) importScript('MediaWiki:HotCat.js');
}
}
//================================================================================
// Überschreiben der Tabellensortierung, damit leere Einträge immer unten stehen 
//================================================================================
function ts_resortTable( lnk ) {
// get the span
var span = lnk.getElementsByTagName('span')[0];
var td = lnk.parentNode;
var tr = td.parentNode;
var column = td.cellIndex;
var table = tr.parentNode;
while ( table && !( table.tagName && table.tagName.toLowerCase() == 'table' ) ) {
table = table.parentNode;
}
if ( !table ) {
return;
}
if ( table.rows.length <= 1 ) {
return;
}
// Generate the number transform table if it's not done already
if ( ts_number_transform_table === null ) {
ts_initTransformTable();
}
// Work out a type for the column
// Skip the first row if that's where the headings are
var rowStart = ( table.tHead && table.tHead.rows.length > 0 ? 0 : 1 );
var itm = '';
for ( var i = rowStart; i < table.rows.length; i++ ) {
if ( table.rows[i].cells.length > column ) {
itm = ts_getInnerText(table.rows[i].cells[column]);
itm = itm.replace(/^[\s\xa0]+/, '').replace(/[\s\xa0]+$/, '');
if ( itm != '' ) {
break;
}
}
}
// TODO: bug 8226, localised date formats
var sortfn = ts_sort_generic;
var preprocessor = ts_toLowerCase;
if ( /^\d\d[\/. -][a-zA-Z]{3}[\/. -]\d\d\d\d$/.test( itm ) ) {
preprocessor = ts_dateToSortKey;
} else if ( /^\d\d[\/.-]\d\d[\/.-]\d\d\d\d$/.test( itm ) ) {
preprocessor = ts_dateToSortKey;
} else if ( /^\d\d[\/.-]\d\d[\/.-]\d\d$/.test( itm ) ) {
preprocessor = ts_dateToSortKey;
// (minus sign)([pound dollar euro yen currency]|cents)
} else if ( /(^([-\u2212] *)?[\u00a3$\u20ac\u00a4\u00a5]|\u00a2$)/.test( itm ) ) {
preprocessor = ts_currencyToSortKey;
} else if ( ts_number_regex.test( itm ) ) {
preprocessor = ts_parseFloat;
}
var reverse = ( span.getAttribute( 'sortdir' ) == 'down' );
var newRows = new Array();
var staticRows = new Array();
for ( var j = rowStart; j < table.rows.length; j++ ) {
var row = table.rows[j];
if( (' ' + row.className + ' ').indexOf(' unsortable ') < 0 ) {
var keyText = ts_getInnerText( row.cells[column] );
if( keyText === undefined ) {
keyText = '';
}
var oldIndex = ( reverse ? -j : j );
var preprocessed = preprocessor( keyText.replace(/^[\s\xa0]+/, '').replace(/[\s\xa0]+$/, '') );
newRows[newRows.length] = new Array( row, preprocessed, oldIndex );
} else {
staticRows[staticRows.length] = new Array( row, false, j-rowStart );
}
}
newRows.sort( sortfn );
var arrowHTML;
if ( reverse ) {
arrowHTML = '<img src="' + ts_image_path + ts_image_down + '" alt="&darr;"/>';
newRows.reverse();
span.setAttribute( 'sortdir', 'up' );
} else {
arrowHTML = '<img src="' + ts_image_path + ts_image_up + '" alt="&uarr;"/>';
span.setAttribute( 'sortdir', 'down' );
}
for ( var i = 0; i < staticRows.length; i++ ) {
var row = staticRows[i];
newRows.splice( row[2], 0, row );
}
// We appendChild rows that already exist to the tbody, so it moves them rather than creating new ones
// don't do sortbottom rows
for ( var i = 0; i < newRows.length; i++ ) {
if ( ( ' ' + newRows[i][0].className + ' ').indexOf(' sortbottom ') == -1 && ( ' ' + newRows[i][0].cells[column].className + ' ').indexOf(' sortbottom ') == -1 ) {
table.tBodies[0].appendChild( newRows[i][0] );
}
}
// do sortbottom rows only
for ( var i = 0; i < newRows.length; i++ ) {
if ( ( ' ' + newRows[i][0].className + ' ').indexOf(' sortbottom ') != -1 || ( ' ' + newRows[i][0].cells[column].className + ' ').indexOf(' sortbottom ') != -1 ) {
table.tBodies[0].appendChild( newRows[i][0] );
}
}
// Delete any other arrows there may be showing
var spans = getElementsByClassName( tr, 'span', 'sortarrow' );
for ( var i = 0; i < spans.length; i++ ) {
spans[i].innerHTML = '<img src="' + ts_image_path + ts_image_none + '" alt="&darr;"/>';
}
span.innerHTML = arrowHTML;
if ( ts_alternate_row_colors ) {
ts_alternate( table );
}
}
//================================================================================