Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Сортировка строк в таблице (https://javascript.ru/forum/dom-window/59260-sortirovka-strok-v-tablice.html)

tvixa 03.11.2015 12:56

Сортировка строк в таблице
 
Добрый день. Возникла проблема, я получаю XML со списком и параметрами транзакций, и пробегая по нему each- ем заполняю таблицу. Соответственно первое строка таблицы содержит самую давнюю транзакцию из полученного списка, мне же нужно отсортировать по дате. Попытка использовать tablesort не увенчалась успехом, сортировал по сначала по дню а потом по алфавиту. Пробовала по разному - не получилось. Возникает вопрос как решить эту проблемку.
var table = '<table class="transactions-table" id="transactions-table">' +
                    '<thead>' +
                    '<tr>' +
                        '<th>Дата транзакции</th>' +
                        '<th>Партнёр</th>' +
                        '<th>Бонусы</th>' +
                        '<th>Сумма чека</th>' +
                    '</tr>' +
                    '</thead>';

                    for (var i = 0; i < transactions.length; i++) {
                        var transaction = transactions.get(i);
                        var merchantId = $(transaction).find("merchantId").text();
                        reqId = $(transaction).find("trnReqId").text();
                       /* var reqDate = (new Date($(transaction).find("trnReqDate").text().substring(0, 10))).toLocaleDateString('ru-RU',{  day: 'numeric', month: 'short'});*/

                        var monthsArr = ["Янв", "Фев", "Мар", "Апр", "Мая", "Июн",
                            "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"];
                        var dateObj = new Date($(transaction).find("trnReqDate").text().substring(0, 10));
                        var month = dateObj.getMonth();
                        var numDay = dateObj.getDate();
                        var reqDate =  numDay + " " + monthsArr[month];

                        var reference = $(transaction).find("reference").text();
                        var merchantName = $(transaction).find("merchantName").text();
                        var salesPointTitle = $(transaction).find("salesPointTitle").text();
                        var srcTrnAmountChange = $(transaction).find("srcTrnAmountChange").text().replace(',', '.');
                        var bonusesCharged = $(transaction).find("bonusesCharged").text().replace(',', '.');
                        var bonusesWithdrawn = $(transaction).find("bonusesWithdrawn").text().replace(',', '.');
                        var bonusesChargedRev = $(transaction).find("bonusesChargedRev").text().replace(',', '.');
                        var bonusesWithdrawnRev = $(transaction).find("bonusesWithdrawnRev").text().replace(',', '.');
                        if(bonusesChargedRev != 0){
                            bonusesCharged = bonusesWithdrawnRev ;
                        }
                        if (bonusesWithdrawnRev != 0){
                            bonusesWithdrawn = bonusesChargedRev;
                        }
                        totalSrcTrnAmountChange += parseFloat(srcTrnAmountChange);
                        totalBonusesCharged += parseFloat(bonusesCharged);
                        totalBonusesWithdrawn += parseFloat(bonusesWithdrawn);
                        table = table +
                        '<tr>' +
                            '<td class="trans_day">' +reqDate+ '</td>' +
                            '<td>' + " <img class='transactions_img'  src='../images/merchants/" + merchantId + "_200x200.png'" +"onerror='this.onerror=null;this.src=\"../images/merchants/nologo_200x200.gif\"' height='200' width='200' >"   + '</td>' +
                            '<td id="'+reqId+'"><span class="trans_add">+'+bonusesCharged+"</span><br/><span class='trans_del'>-"+ bonusesWithdrawn + '</span></td>' +
                            '<td >' + srcTrnAmountChange + '</td>' +
                            '</tr>';
                    }
                    table = table + '<tfoot>' +
                    '<tr class="alt">' +
                        '<td colspan="2">Всего: </td>' +
                        '<td style="width: 30%">Накоплено: <span class="trans_add">+' + totalBonusesCharged.toFixed(2) +"</span><br/>Списано: <span class='trans_del'>-"+ totalBonusesWithdrawn.toFixed(2) +'</span></td>' +
                        '<td>' + totalSrcTrnAmountChange.toFixed(2) + '</td>' +
                        '</tr>' +
                        '</tfoot>' +
                        '</table>';
                    $('#transactionsData_' + cardId + ' #transactions_' + cardId).append(table);
                    $('#transactions-table_' + cardId).tablesorter();
                }

Спасибо за внимание

рони 03.11.2015 13:28

tvixa, мысли вслух
в строку 43 добавить данные для примера

'<td class="trans_day"  data-reg="' +dateObj+'">'
а плагину указать что сортировать нужно не по тексту ячейки а по этим данным data-reg ... читать документацию.


Часовой пояс GMT +3, время: 15:44.