2016-05-24 1 views
0

я могу получить колонтитула всего столбца INT, как это:JQuery DataTables Footer сумма чч: мм: сс тип данных столбца

footerCallback: function (row, data, start, end, display) { 
     var quantita = this.api(), data; 

     // Total over all pages 
     total_quantita = quantita 
      .column(5) 
      .data() 
      .reduce(function (a, b) { 
       return intVal(a) + intVal(b); 
      }, 0); 

     // Total over this page 
     pageTotal_quantita = quantita 
      .column(5, { page: 'current'}) 
      .data() 
      .reduce(function (a, b) { 
       return intVal(a) + intVal(b); 
      }, 0); 

     // Update footer Column "quantita" 
     $(quantita.column(5).footer()).html(
     pageTotal_quantita +' ('+ total_quantita +' total)' 
     ); 

enter image description here

Мой вопрос: Как я могу получить всего hh: mm: ss тип данных столбец, как указано выше? Спасибо!

+0

Точно так же, возможно, с использованием продолжительности [MomentJS] (http://momentjs.com/docs/#/durations/) – annoyingmouse

ответ

1

Я обновил свой код, вы были почти там, но момент был использован для создания этого:

var table = $('#example').DataTable({ 
    "footerCallback": function (row, data, start, end, display) { 
     var api = this.api(), data; 
     // Total over all pages 
     total_ID = api.column(0).data().reduce(function (a, b) { 
      return ~~a + ~~b; 
     }, 0); 
     total_Duration = api.column(1).data().reduce(function (a, b) { 
      return moment.duration(a).asMilliseconds() + moment.duration(b).asMilliseconds(); 
     }, 0); 
     // Total over this page 
     pageTotal_ID = api.column(0, { page: 'current'}).data().reduce(function (a, b) { 
      return ~~a + ~~b; 
     }, 0); 
     pageTotal_Duration = api.column(1, { page: 'current'}).data().reduce(function (a, b) { 
      return moment.duration(a).asMilliseconds() + moment.duration(b).asMilliseconds(); 
     }, 0); 
     // Update footer Column "quantita" 
     $(api.column(0).footer()).html(
      pageTotal_ID + ' ('+ total_ID +' total)' 
     ); 
     $(api.column(1).footer()).html(
      moment.utc(pageTotal_Duration).format("HH:mm:ss") + ' ('+ moment.utc(total_Duration).format("HH:mm:ss") + ' total)' 
     ); 
    } 
}); 

Это похоже на работу с ограниченным примером я created. Надеюсь, это поможет.

+0

. Добро пожаловать, пожалуйста, имейте в виду, что функция 'format' может нужно настроить на большие длительности, так как я [спуфинг] (http://stackoverflow.com/questions/13262621/how-do-i-use-format-on-a-moment-js-duration) момент, чтобы подумать, что это Дата. Посмотрите вокруг, и я уверен, что вы найдете другой способ правильно форматировать свою продолжительность. – annoyingmouse

+0

Действительно, есть проблема с часами. Если час> 24, то час = 1. Большая проблема :( –

0

Пытаясь найти решение ... первое, что я должен сделать это данные суммы столбцов() (https://cdn.datatables.net/plug-ins/1.10.11/api/sum%28%29.js)

 var time_api = this.api(); 
     //total for all pages 
     var total = time_api.column(3) 
       .data() 
       .sum();   

     //write in footer 
     $(time_api.column(3) 
      .footer()) 
      .html(total); 

Это дает мне этот выход, который представляет собой сумму, но она нуждается в некоторых ухищрениях, и я не могу понять, как превратить этот:

enter image description here

в этом: 12:03:05 (правильный вывод суммы).

Мне, вероятно, придется создать новый вопрос для этого, и если он получит ответ, я обновлю здесь.

Пожалуйста, помогите.

Смежные вопросы