jQuery Tablesorter - Можно ли группировать «отсортированные» строки? - PullRequest
1 голос
/ 12 февраля 2012

Я использую jQuery tablesorter для сортировки таблицы и хотел бы произвести какое-то разделение между группами строк после их сортировки.Например, если бы я использовал таблицу с заголовком, категорией и годом после сортировки, все строки определенного года имели бы отступы между остальными.

например:

Title Cat 2012
Title Cat 2012
Title Cat 2012


Title Cat 2011
Title Cat 2011
Title Cat 2011


Title Cat 2010
Title Cat 2010

Я предполагаю, что это будет связано с созданием виджета и сравнением значения каждой строки, и если строка не соответствует предыдущему значению, тогда она должна применить некоторый некоторый отступ, но я немного растерялся.1006 *

JSBIN: http://jsbin.com/osehoy

Любое направление / помощь будет принята с благодарностью, спасибо!

1 Ответ

1 голос
/ 20 февраля 2012

Я не был уверен, хотите ли вы просто добавить пустую строку между ними или просто сделать строку выше, поэтому я выбрал последнее. Вот виджет, который я сделал, и демо :

$.tablesorter.addWidget({
    id: 'spacer',
    format: function(table) {
        var c = table.config,
        $t = $(table),
        $r = $t.find('tbody').find('tr'),
        i, l, last, col, rows, spacers = [];
        if (c.sortList && c.sortList[0]) {
            $t.find('tr.spacer').removeClass('spacer');
            col = c.sortList[0][0]; // first sorted column
            rows = table.config.cache.normalized;
            last = rows[0][col]; // text from first row
            l = rows.length;
            for (i=0; i < l; i++) {
                // if text from row doesn't match last row,
                // save it to add a spacer
                if (rows[i][col] !== last) {
                    spacers.push(i-1);
                    last = rows[i][col];
                }
            }
            // add spacer class to the appropriate rows
            for (i=0; i<spacers.length; i++){
                $r.eq(spacers[i]).addClass('spacer');
            }
        }
    }
});

$('table').tablesorter({
    widgets : ['spacer']
});​

Обновление : Мой форк таблиц может сортировать по нескольким тантам, поэтому приведенный выше скрипт не работает без незначительных изменений rows = table.config.cache[0].normalized; - вот обновленная демоверсия , которая работает с моей вилкой. Приведенный выше код будет работать с оригинальным плагином TableSorter.

...