datatables - DataTables - 基于时间跨度的过滤
问题描述
我在数据表中有一个包含数据的列,类似于以下内容:
0500-1300
0500-1430
0600-0915
0600-1000
0600-1100
0600-1115
0600-1130
0600-1200
0600-1215
0600-1300
0600-1315
我想要一个与http://yadcf-showcase.appspot.com/dom_bootstrap_time.html不太相似的过滤器,其中有人可以选择 FROM 时间和 TO 时间,然后过滤数据。
假设有人选择:
FROM: 0600
TO: 1100
然后只有 3 会显示。但是,如果我选择:
FROM: 0500
TO: 1400
一切都会显示。这样的事情可能吗?上面网站的插件会是我所追求的吗?
解决方案
试试这个:
const timeStringToInt = (time) => {
const hoursMinutes = time.split(/[.:]/);
const hours = parseInt(hoursMinutes[0], 10) * 60;
var minutes = parseInt(hoursMinutes[1], 10);
return hours + minutes;
}
$.fn.dataTable.ext.search.push(
(settings, data, dataIndex) => {
const min = timeStringToInt($('#timeFrom').val());
const max = timeStringToInt($('#timeTo').val());
const start = timeStringToInt(data[0]);
const end = timeStringToInt(data[1]);
return start >= min && end <= max;
}
);
您可能需要根据小时列的位置更改函数。在这里工作 JSFiddle 。
编辑
在查看了您的数据后,我在最初的答案中犯了一个错误,应该这样做:
const timeStringToInt = (time) => {
const hoursMinutes = time.split(":");
const hours = parseInt(hoursMinutes[0], 10) * 60;
var minutes = parseInt(hoursMinutes[1], 10);
return hours + minutes;
}
const stringToInt = (time) => {
var minutes = parseInt(time.slice(-2), 10);
const hours = parseInt(time.slice(0, -2), 10) * 60;
return hours + minutes;
}
$.fn.dataTable.ext.search.push(
(settings, data, dataIndex) => {
const min = timeStringToInt($('#timeFrom').val());
const max = timeStringToInt($('#timeTo').val());
const timeParts = data[0].split("-");
const start = stringToInt(timeParts[0]);
const end = stringToInt(timeParts[1]);
return start >= min && end <= max;
}
);
在这里更新了 JSFiddle 。
希望有帮助:-)
推荐阅读
- elasticsearch - 使用 Delete By Query 从 ElasticSearch 中删除 200k+ 文档
- c# - 为什么当计时器倒计时时它从不显示秒数?
- python-3.x - 成功安装 pip 后,aws cli 在 Jupyter 中不起作用?
- ruby-on-rails - Rails 表单测试:直接发布还是通过表单发布?
- macos - 在 Mac Application 和 Extension + App Group 之间共享 Application Scripts 目录
- swagger - OpenAPI 3.0 - oneOf 中的 allOf
- javascript - 过滤器的行为与数组中的 0 不一样。Javascript
- ios - 从推送的视图控制器传回图像并在原始 VC 上显示图像
- r - R Studio 不显示内联输出数据帧(例如标题、尾部...)
- java - 将投影形式的休眠 HQL 查询映射到对象