« MediaWiki:Common.js » : différence entre les versions
Aller à la navigation
Aller à la recherche
Page créée avec « →Tout JavaScript présent ici sera exécuté par tous les utilisateurs à chaque chargement de page. : $( function () { $( 'table.filtrable' ).each( function () { var $table = $( this ); var $th = $table.find( 'thead th' ); var selectCols = [ 3, 4 ]; // 3 = Attribution, 4 = Cible var $bar = $( '<div>' ).css( { margin: '0 0 .6em', display: 'flex', gap: '.5em', flexWrap: 'wrap' } ); var $search = $( '<input>' ).attr( { type: 'search', placeholder: '... » |
Aucun résumé des modifications |
||
| Ligne 1 : | Ligne 1 : | ||
$( function () { | $( function () { | ||
$( 'table.filtrable' ).each( function () { | $( 'table.filtrable' ).each( function () { | ||
var $table = $( this ); | var $table = $( this ); | ||
var $th = $table.find( ' | var $th = $table.find( 'tr' ).first().find( 'th' ); | ||
var $rows = $table.find( 'tr' ).filter( function () { | |||
return $( this ).children( 'td' ).length > 0; | |||
} ); | |||
var selectCols = [ 3, 4 ]; // 3 = Attribution, 4 = Cible | var selectCols = [ 3, 4 ]; // 3 = Attribution, 4 = Cible | ||
| Ligne 15 : | Ligne 16 : | ||
selectCols.forEach( function ( c ) { | selectCols.forEach( function ( c ) { | ||
var label = $th.eq( c ).text().trim(), vals = {}; | var label = $th.eq( c ).text().trim(), vals = {}; | ||
$ | $rows.each( function () { | ||
var v = $( this ). | var v = $( this ).children( 'td' ).eq( c ).text().trim(); | ||
if ( v ) { vals[ v ] = true; } | if ( v ) { vals[ v ] = true; } | ||
} ); | } ); | ||
| Ligne 31 : | Ligne 32 : | ||
function apply() { | function apply() { | ||
var q = $search.val().toLowerCase(); | var q = $search.val().toLowerCase(); | ||
$ | $rows.each( function () { | ||
var $row = $( this ), ok = $row.text().toLowerCase().indexOf( q ) !== -1; | var $row = $( this ), ok = $row.text().toLowerCase().indexOf( q ) !== -1; | ||
selectCols.forEach( function ( c ) { | selectCols.forEach( function ( c ) { | ||
var want = selects[ c ].val(); | var want = selects[ c ].val(); | ||
if ( ok && want ) { ok = $row. | if ( ok && want ) { ok = $row.children( 'td' ).eq( c ).text().trim() === want; } | ||
} ); | } ); | ||
$row.toggle( ok ); | $row.toggle( ok ); | ||
Dernière version du 2 juillet 2026 à 18:45
$( function () {
$( 'table.filtrable' ).each( function () {
var $table = $( this );
var $th = $table.find( 'tr' ).first().find( 'th' );
var $rows = $table.find( 'tr' ).filter( function () {
return $( this ).children( 'td' ).length > 0;
} );
var selectCols = [ 3, 4 ]; // 3 = Attribution, 4 = Cible
var $bar = $( '<div>' ).css( { margin: '0 0 .6em', display: 'flex', gap: '.5em', flexWrap: 'wrap' } );
var $search = $( '<input>' ).attr( { type: 'search', placeholder: 'Rechercher…' } )
.css( { padding: '.3em .5em', minWidth: '16em' } );
$bar.append( $search );
var selects = {};
selectCols.forEach( function ( c ) {
var label = $th.eq( c ).text().trim(), vals = {};
$rows.each( function () {
var v = $( this ).children( 'td' ).eq( c ).text().trim();
if ( v ) { vals[ v ] = true; }
} );
var $sel = $( '<select>' ).css( { padding: '.3em' } );
$sel.append( $( '<option>' ).val( '' ).text( label + ' : tous' ) );
Object.keys( vals ).sort().forEach( function ( v ) {
$sel.append( $( '<option>' ).val( v ).text( v ) );
} );
selects[ c ] = $sel;
$bar.append( $sel );
} );
$table.before( $bar );
function apply() {
var q = $search.val().toLowerCase();
$rows.each( function () {
var $row = $( this ), ok = $row.text().toLowerCase().indexOf( q ) !== -1;
selectCols.forEach( function ( c ) {
var want = selects[ c ].val();
if ( ok && want ) { ok = $row.children( 'td' ).eq( c ).text().trim() === want; }
} );
$row.toggle( ok );
} );
}
$search.on( 'input', apply );
selectCols.forEach( function ( c ) { selects[ c ].on( 'change', apply ); } );
} );
} );