Пользовательские уравнения Tablesorter по расчетным данным - PullRequest
0 голосов
/ 11 мая 2018

Мне нужно сложить два столбца, а затем найти разницу между этими двумя. Вариант использования прост: в одном столбце у меня есть все покупки, а во втором - все транзакции, пользователь будетсм. разницу.

Вот соответствующий код для расчета:

<tfoot>
<tr>
<th>Total</th>
<th data-math="col-sum"></th>
<th data-math="col-sum"></th>
<th data-math="row-difference"></th>
</tr>
</tfoot>

И формула может быть очень простой, как

$.tablesorter.equations['difference'] = function(arry) {
    return arry[1] - arry[2];
  };

Как бы вы сделалиэто работает?

1 Ответ

0 голосов
/ 11 мая 2018

При настройке математического виджета он определяет приоритеты вычислений строк перед вычислениями столбцов. Таким образом, в этом случае строка нижнего колонтитула будет пытаться вычислить разницу строк перед вычислением суммы столбца.

Чтобы исправить это, измените параметр виджета math_priority , чтобы 'col' предшествовал 'row' ( demo ):

$(function() {
  $.tablesorter.equations.difference = function(arry) {
    return arry[1] - arry[2];
  };
  $("table").tablesorter({
    theme: 'blue',
    widgets: ['math', 'zebra'],
    widgetOptions: {
      // default [ 'row', 'above', 'below', 'col' ]
      // move 'col' first in this case
      math_priority: ['col', 'row', 'above', 'below']
    }
  });
});
...