0

我有一个场景,我想计算两行之间的时间差(以分钟为单位)并将数据放在连续行中。我正在使用制表符。目前我已经完成了用于列的自定义格式化程序的定义,但我不确定如何在行上实现这种情况。但是我尝试了以下选项,但它似乎不起作用。

var table = new Tabulator("#editor", {
        downloadConfig:{
            columnGroups:false, 
            rowGroups:false,
        },
        height:360, 
        data: arrayFlight,
        pagination:"local",
        resizableColumns: false,
        paginationSize:12,
        columnVertAlign:"center",
        columnHoriAlign:"center",
        columns:[
                {title:"Start time", field:"sTime", align:"center", formatter:"datetime", formatterParams:{inputFormat:"DD-MM-YYYY hh:mm:ss", outputFormat:"DD-MM-YYYY hh:mm:ss", invalidPlaceholder:"-"}, sorter:false, headerSort:false, width:95},
                {title:"End time", field:"eTime", align:"center", formatter:"datetime", formatterParams:{inputFormat:"DD-MM-YYYY hh:mm:ss", outputFormat:"DD-MM-YY hh:mm:ss", invalidPlaceholder:"-"}, sorter:false, headerSort:false, width:95},
                {title:"Duration", field:"durTime", align:"center", calc: sTime-eTime, sorter:false, headerSort:false, width:95},
                ],
            },  
        ],

这是我想形象化的方式:

在此处输入图像描述

非常感谢任何帮助。

4

1 回答 1

0

正如@Adrian Klaver 所说,正确的方法是使用Muataor来计算新列的值

而且正如@adrian 已经说过的那样,您看到的错误与他的提议无关。

本质上,您首先创建一个 mutator 函数,该函数将接收行数据,然后根据该行数据为该列返回一个新值。

var durationMutator = function(value, data){
    //value - original value of the cell
    //data - the data for the row

    var start = new Date(data.sTime);
    var end = new Date(data.eTime);

    return end - start ;
}

然后,您可以将其分配给mutator属性上的持续时间列:

{title:"Duration", field:"durTime", mutator:durationMutator},

这就是您需要做的所有事情。

于 2020-11-15T16:26:53.023 回答