Как рассчитать время с Tabulator.js - PullRequest
0 голосов
/ 08 февраля 2019

В настоящее время я использую Tabulator.js для получения таблицы, сгенерированной для моего проекта.В моем проекте я получаю информацию из firebase и загружаю ее в свою таблицу, разработанную TABULATOR.js (http://tabulator.info).

Я знаю, как рассчитать нормальное значение в моей таблице.Но я бы хотел посчитать время.Например, в строке 1 я получаю 00:45 (45 минут), а в строке 2 я получаю 1:10, строка результата должна дать мне 1:55.

Я не очень знаком с веб-кодированием, поэтому прошу вашей помощи.

Мой код:

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:[ //I show you only the requested column
            {
            title:"SINGLE PILOT FLIGHT TIME",
                columns:[
                {title:"SE", field:"seTime", align:"center", formatter:"datetime", formatterParams:{inputFormat:"hh:mm:ss", outputFormat:"hh:mm:ss", invalidPlaceholder:"-"}, sorter:false, headerSort:false, width:95, bottomCalc:"sum", bottomCalcParams:{precision:2}},
                {title:"ME", field:"meTime", align:"center", formatter:"datetime", formatterParams:{inputFormat:"hh:mm:ss", outputFormat:"hh:mm:ss", invalidPlaceholder:"-"}, sorter:false, headerSort:false, width:95},
                ],
            },  
        ],

спасибо за вашу помощь.

1 Ответ

0 голосов
/ 13 февраля 2019

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

//define custom calculation function
var timeSum = function(values, data, calcParams){
    //values - array of column values
    //data - all table data
    //calcParams - params passed from the column definition object

    var time = 0;

    values.forEach(function(value){
        if(value){
            //split time value into minutes and sum
            var values = value.split(":");

            time += parseInt(values[0]) * 60;
            time += parseInt(values[1]);
        }
    });

    //format sum as hour:minute
    return Math.floor(time/60) + ":" + time%60;
};

Затем вы можете назначить его в определении столбца:

{title:"SE", field:"seTime", bottomCalc:timeSum}
...