gpt4 book ai didi

javascript - 如何更改Webix dateFilter的过滤模式?

转载 作者:行者123 更新时间:2023-12-03 05:31:41 26 4
gpt4 key购买 nike

如何指定Webix数据表中dateFilter的格式?

我有一个网格,其中日期格式为“%d.%m.%Y”:

columns:[
{ id:"date", header:[{ content:"dateFilter" }], width:160, format:myFormat }
]

其中 myFormatwebix.Date.dateToStr("%d.%m.%Y"); 结果为 dd.mm.yyyy

这是具有类似网格的片段:http://webix.com/snippet/1ec86aa8

重点是 dateFilter 仍然需要完整日期,如 %m-%d-%Y (mm-dd-yyyy)

pattern of the Webix date filter

所以我正在寻找一种方法来改变这个预定义的模式。如有任何建议,我们将不胜感激。

最佳答案

dateFilter 使用 webix.i18n.dateFormatDate 将用户输入的日期从 str 转换为 date

顺便说一句,它还可以做更多的事情。例如,您可以输入“<1996”,这样它就不会使用上述方法转换日期,而是提取年份。

然后它将猜测的日期转换为整数并与数据日期进行整数比较

遗憾的是,“webix.i18n.dateFormatDate”使用 webix.i18n.dateFormat,它依赖于语言环境将字符串转换为日期。并且无法自定义 dateFilter 使用的格式。

您的解决方案是创建一个自定义过滤器,它与 dateFilter 执行相同的工作,但使用您自己的日期转换:

这里是 dateFilter 的修改后的 webix 代码:

webix.ui.datafilter.myDateFilter = webix.extend({
format:function(value){
if (value === "") return "";
var date = new Date();

if (value.indexOf("today") != -1){
date = webix.Date.dayStart(date);
} else if (value.indexOf("now") == -1){
var parts = value.match(/[0-9]+/g);
if (!parts||!parts.length) return "";
if (parts.length < 3){
parts.reverse();
date = new Date(parts[0], (parts[1]||1)-1, 1);
} else
// Change here
date = webix.Date.strToDate("%d.%m.%Y")(value.replace(/^[>< =]+/,""));

}

return date.valueOf();
}
}, webix.ui.datafilter.numberFilter);

更新的代码片段:http://webix.com/snippet/20c0175a

关于javascript - 如何更改Webix dateFilter的过滤模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40916871/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com