我已经加载了moment.js,并且可以进行日期时间排序-这似乎需要格式化程序和排序程序FWIW。但是对于“时间”排序,我只是想让数据以这种格式作为字符串输入:
“ hh:mm:ss”
然后,使用“时间”排序器,就这样进行配置:
{'field': 'wall_time', 'title': 'wall_time', 'sorter': 'time', 'sorterParams': {'format': 'hh:mm:ss'}}
问题是,我的排序顺序不正确:
有什么方法可以进一步调试吗?
附录:请注意,在Ajax调用中创建表之后,将装入我的列和行-这可能会影响排序行为:
table.setColumns(response.cols);
table.setData(response.rows);
由于您的时间不是有效时间,因此无法将其转换为标准的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;
}