制表者的“时间”分类器无法使用hh:mm:ss格式正确分类

问题描述 投票:0回答:1

我已经加载了moment.js,并且可以进行日期时间排序-这似乎需要格式化程序和排序程序FWIW。但是对于“时间”排序,我只是想让数据以这种格式作为字符串输入:

“ hh:mm:ss”

然后,使用“时间”排序器,就这样进行配置:

{'field': 'wall_time', 'title': 'wall_time', 'sorter': 'time', 'sorterParams': {'format': 'hh:mm:ss'}}

问题是,我的排序顺序不正确:

Bad time sort screenshot

有什么方法可以进一步调试吗?

附录:请注意,在Ajax调用中创建表之后,将装入我的列和行-这可能会影响排序行为:

  table.setColumns(response.cols);
  table.setData(response.rows);
tabulator
1个回答
0
投票

由于您的时间不是有效时间,因此无法将其转换为标准的24小时制时间。内置分类器不适用于您。您必须创建自己的。您可以在http://tabulator.info/docs/4.6/sort#func上阅读有关自定义分类器的更多信息。

我相信这对您有用。 https://jsfiddle.net/nrayburn/6wygod1c/27/

一般的想法是更改列以使用自定义排序器。创建一个自定义排序器,该排序器返回要比较的两个值之间的差异。

  {
    field: 'time',
    name: 'Time',
    sorter: customSorter
  }

function customSorter(a, b){
    const aArray = a.split(':');
    const bArray = b.split(':');
    let diff = 0;
    for (let i = 0; i < 3; i++){
        if (aArray[i] !== bArray[i]){
            diff = bArray[i] - aArray[i];
            break;
        }
    }
    return diff;
}
© www.soinside.com 2019 - 2024. All rights reserved.