MediaWiki:Common.js: Unterschied zwischen den Versionen

Aus Primatenwiki
Zur Navigation springen Zur Suche springen
Die Seite wurde neu angelegt: «Das folgende JavaScript wird für alle Benutzer geladen.: Tabellen-Filter-Skript: mw.loader.using('jquery.makeCollapsible').done(function() { $(function() { // Suche alle Tabellen mit der Klasse "filterable" $('table.filterable').each(function() { var $table = $(this); var $input = $('<input type="text" placeholder="Tabelle filtern..." style="margin-bottom: 5px; padding: 5px; width: 200px; border: 1px so…»
 
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
/* Das folgende JavaScript wird für alle Benutzer geladen. */
Das ist ein hervorragendes Projekt! MediaWiki bietet von Haus aus zwar die sortable-Funktion, aber echtes Filtern wie in Excel erfordert in der Tat ein wenig JavaScript-Magie.
/* Tabellen-Filter-Skript */
mw.loader.using('jquery.makeCollapsible').done(function() {
    $(function() {
        // Suche alle Tabellen mit der Klasse "filterable"
        $('table.filterable').each(function() {
            var $table = $(this);
            var $input = $('<input type="text" placeholder="Tabelle filtern..." style="margin-bottom: 5px; padding: 5px; width: 200px; border: 1px solid #a2a9b1;">');


            // Filter-Eingabefeld vor der Tabelle einfügen
Da MediaWiki die jQuery-Bibliothek standardmäßig lädt, nutzen wir diese, um eine schlanke und performante Lösung zu bauen.
            $table.before($input);


            $input.on('keyup', function() {
Die Lösung: Ein dynamischer Header-Filter
                var value = $(this).val().toLowerCase();
Dieser Code fügt automatisch ein Eingabefeld in jede Spalte einer Tabelle ein, die die Klasse filterable besitzt.
               
 
                // Nur die Zeilen im <tbody> filtern, Kopfzeilen bleiben sichtbar
1. Das JavaScript
                $table.find('tbody tr').filter(function() {
Kopiere diesen Code in deine Seite MediaWiki:Common.js:
                    $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1);
 
                 });
JavaScript
$(function() {
    // Suche nach Tabellen mit der Klasse "filterable"
    $('table.filterable').each(function() {
        var $table = $(this);
        var $headerRow = $table.find('tr').first();
        var $filterRow = $('<tr class="filter-row"></tr>');
 
        // Erstelle für jede Header-Zelle ein Eingabefeld
        $headerRow.find('th').each(function() {
            var $filterCell = $('<th></th>');
            var $input = $('<input type="text" placeholder="Filtern..." style="width: 100%; box-sizing: border-box;" />');
 
            $input.on('keyup change', function() {
                 filterTable($table);
             });
             });
            $filterCell.append($input);
            $filterRow.append($filterCell);
         });
         });
        // Füge die Filter-Zeile unter dem Header ein
        $headerRow.after($filterRow);
     });
     });
    function filterTable($table) {
        var $rows = $table.find('tr').not(':first').not('.filter-row');
        var $inputs = $table.find('.filter-row input');
        $rows.each(function() {
            var $row = $(this);
            var showRow = true;
            $inputs.each(function(index) {
                var filterValue = $(this).val().toLowerCase();
                var cellValue = $row.find('td').eq(index).text().toLowerCase();
                if (filterValue && cellValue.indexOf(filterValue) === -1) {
                    showRow = false;
                    return false; // Break loop
                }
            });
            $row.toggle(showRow);
        });
    }
});
});

Version vom 24. Februar 2026, 08:01 Uhr

Das ist ein hervorragendes Projekt! MediaWiki bietet von Haus aus zwar die sortable-Funktion, aber echtes Filtern wie in Excel erfordert in der Tat ein wenig JavaScript-Magie.

Da MediaWiki die jQuery-Bibliothek standardmäßig lädt, nutzen wir diese, um eine schlanke und performante Lösung zu bauen.

Die Lösung: Ein dynamischer Header-Filter
Dieser Code fügt automatisch ein Eingabefeld in jede Spalte einer Tabelle ein, die die Klasse filterable besitzt.

1. Das JavaScript
Kopiere diesen Code in deine Seite MediaWiki:Common.js:

JavaScript
$(function() {
    // Suche nach Tabellen mit der Klasse "filterable"
    $('table.filterable').each(function() {
        var $table = $(this);
        var $headerRow = $table.find('tr').first();
        var $filterRow = $('<tr class="filter-row"></tr>');

        // Erstelle für jede Header-Zelle ein Eingabefeld
        $headerRow.find('th').each(function() {
            var $filterCell = $('<th></th>');
            var $input = $('<input type="text" placeholder="Filtern..." style="width: 100%; box-sizing: border-box;" />');

            $input.on('keyup change', function() {
                filterTable($table);
            });

            $filterCell.append($input);
            $filterRow.append($filterCell);
        });

        // Füge die Filter-Zeile unter dem Header ein
        $headerRow.after($filterRow);
    });

    function filterTable($table) {
        var $rows = $table.find('tr').not(':first').not('.filter-row');
        var $inputs = $table.find('.filter-row input');

        $rows.each(function() {
            var $row = $(this);
            var showRow = true;

            $inputs.each(function(index) {
                var filterValue = $(this).val().toLowerCase();
                var cellValue = $row.find('td').eq(index).text().toLowerCase();

                if (filterValue && cellValue.indexOf(filterValue) === -1) {
                    showRow = false;
                    return false; // Break loop
                }
            });

            $row.toggle(showRow);
        });
    }
});