繁体   English   中英

回调函数总计一小时和一分钟的时间

[英]Callback function sum a hours and minutes of a column

我正在尝试汇总数据表中某列的总时数和分钟数。

我在DT单元格中使用了以下时间格式:4h 12m

然后是这样的:

4h 12m 2h 8m 4h 0m

总数必须为:

10h 20m

我尝试类似的东西:

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

                                //Remove the formatting to get integer data for summation
                                var numVal = function ( i ) {
                                    return typeof i === 'string' ?
                                            parseFloat(i.split("€")[1].split("<")[0].replace(/,/, '.')) :
                                            typeof i === 'number' ?
                                                    i : 0;
                                };
                                var perTemp = function ( i ) {
                                    // I need some help here...
                                }

                                // Total over all pages
                                totalvar = api
                                        .column( 3 )
                                        .data()
                                        .reduce( function (a, b) {
                                            return numVal(a) + numVal(b);
                                        }, 0 );
                                totaltemp= api
                                        .column( 4 )
                                        .data()
                                        .reduce( function (a, b) {
                                            return perTemp(a) + perTemp(b);
                                        }, 0 );

                                // Update footer
                                $( api.column( 3 ).footer() ).html('€ ' + totalvar);
                                $( api.column( 4 ).footer() ).html(totaltemp[0] + "h" + totaltemp[1] + "m");

我需要有关“ perTemp”功能的帮助。

var a = ["4h 12m 2h 8m 4h 0m", "4h 12m"];
var s = a.join(","); // "4h 12m 2h 8m 4h 0m,4h 12m"
var re = /([\d]*?(h|m))/gmi;

var res = s.match(re); // Array [ "4h", "12m", "2h", "8m", "4h", "0m", "4h", "12m" ]

var hours = res.filter(function(value){
   if(value.indexOf("h") > -1){
     return true;
   }
}).map(function(value){
   return parseInt(value.substr(0, value.length-1))
}).reduce(function(pre, cur){
  return pre + cur
}); // Array [ "4h", "2h", "4h", "4h" ] -> Array [ 4, 2, 4, 4 ] -> 14

 var min = res.filter(function(value){
   if(value.indexOf("m") > -1){
     return true;
   }
}).map(function(value){
   return parseInt(value.substr(0, value.length-1))
}).reduce(function(pre, cur){
  return pre + cur
}); // 32

// add hour if > 60 min
hour += Math.floor(min/60);
min = min % 60;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM