Fullcalendar 是否支持全天事件的自定义排序
Does Fullcalendar support custom sorting for all day events
我一直在研究早期的问题,例如 this one 关于 Fullcalendar 中全天事件的自定义排序,但无法实现我想要的。我的目标是实施自定义排序解决方案,该解决方案将根据整数 属性 对同一天发生的事件进行排序。日历的视图设置为月份,事件为全天事件。
这是数据示例:
[
{
"title": "Zed item",
"start": "2015-01-12T17:12:00-05:00",
"end": "2015-01-13T17:12:00-05:00",
"level": 1
},
{
"title": "Alpha item",
"start": "2015-01-12T17:12:00-05:00",
"end": "2015-01-13T17:12:00-05:00",
"level": 2
}
]
我希望首先看到 "Zed",然后是 "Alpha"。 Fullcalendar 根据标题排序。
一些消息来源建议每次增加一分钟来设置顺序,我也试过了:
event.start = moment(step.StartDate()).add(level, "m");
我用这种方法也没有成功。
更新
我想到,由于排序顺序默认使用标题,因此可以通过 pre-pending 实现相同的效果 space 标题将强制正确排序。呈现日历时,不显示 spaces。这个变通办法可能是唯一的办法,虽然我更愿意增加一分钟而不是增加 spaces.
我 运行 遇到了同样的问题,我只使用了全天事件,我的事件源已经按照我希望它们出现的正确顺序包含了事件,但是完整的校准是按字母顺序对它们进行排序.我打开 fullcalendar.js 文件并注释掉所有实例 segs.sort(compareSegs);
这解决了我的问题并允许我的事件按照它们在我的事件源 JSON 对象中发生的顺序显示。我不确定这是否破坏了任何其他功能,但对于我的应用程序来说,这非常有效。
我正在寻找类似的解决方案。
Fullcalendar 版本 2.4.0 现在支持 eventOrder 方法,文档在这里:
如果您想完全覆盖所有日期时段、月份、基本视图的按开始日期排序。
例如按颜色排序。
1.InitialiseeventOrder来上色。 (html/php 您正在使用的文件)
eventOrder: 'color,start'
2.Change compareSegs 函数。 (fullcalendar.js)
// original function
compareSegs: function(seg1, seg2) {
return seg1.eventStartMS - seg2.eventStartMS || // earlier events go first
seg2.eventDurationMS - seg1.eventDurationMS || // tie? longer events go first
seg2.event.allDay - seg1.event.allDay || // tie? put all-day events first (booleans cast to 0/1)
compareByFieldSpecs(seg1.event, seg2.event, this.view.eventOrderSpecs);
}
// custom function
compareSegs: function(seg1, seg2) {
if(this.view.name=="basicWeek"){ // ordering events by color in ListView
return seg2.event.allDay - seg1.event.allDay || // tie? put all-day events first (booleans cast to 0/1)
compareByFieldSpecs(seg1.event, seg2.event, this.view.eventOrderSpecs);
}
else{
return seg1.eventStartMS - seg2.eventStartMS || // earlier events go first
seg2.eventDurationMS - seg1.eventDurationMS || // tie? longer events go first
seg2.event.allDay - seg1.event.allDay || // tie? put all-day events first (booleans cast to 0/1)
compareByFieldSpecs(seg1.event, seg2.event, this.view.eventOrderSpecs);
}
}
在这种情况下,我只想在 "basicVeek" 视图中按颜色对事件进行排序。
然后我删除了 eventStartMS 和 eventDurationMS 测试。
删除:
seg1.eventStartMS - seg2.eventStartMS || // earlier events go first
seg2.eventDurationMS - seg1.eventDurationMS || // tie? longer events go first
我一直在研究早期的问题,例如 this one 关于 Fullcalendar 中全天事件的自定义排序,但无法实现我想要的。我的目标是实施自定义排序解决方案,该解决方案将根据整数 属性 对同一天发生的事件进行排序。日历的视图设置为月份,事件为全天事件。
这是数据示例:
[
{
"title": "Zed item",
"start": "2015-01-12T17:12:00-05:00",
"end": "2015-01-13T17:12:00-05:00",
"level": 1
},
{
"title": "Alpha item",
"start": "2015-01-12T17:12:00-05:00",
"end": "2015-01-13T17:12:00-05:00",
"level": 2
}
]
我希望首先看到 "Zed",然后是 "Alpha"。 Fullcalendar 根据标题排序。
一些消息来源建议每次增加一分钟来设置顺序,我也试过了:
event.start = moment(step.StartDate()).add(level, "m");
我用这种方法也没有成功。
更新
我想到,由于排序顺序默认使用标题,因此可以通过 pre-pending 实现相同的效果 space 标题将强制正确排序。呈现日历时,不显示 spaces。这个变通办法可能是唯一的办法,虽然我更愿意增加一分钟而不是增加 spaces.
我 运行 遇到了同样的问题,我只使用了全天事件,我的事件源已经按照我希望它们出现的正确顺序包含了事件,但是完整的校准是按字母顺序对它们进行排序.我打开 fullcalendar.js 文件并注释掉所有实例 segs.sort(compareSegs);
这解决了我的问题并允许我的事件按照它们在我的事件源 JSON 对象中发生的顺序显示。我不确定这是否破坏了任何其他功能,但对于我的应用程序来说,这非常有效。
我正在寻找类似的解决方案。
Fullcalendar 版本 2.4.0 现在支持 eventOrder 方法,文档在这里:
如果您想完全覆盖所有日期时段、月份、基本视图的按开始日期排序。 例如按颜色排序。
1.InitialiseeventOrder来上色。 (html/php 您正在使用的文件)
eventOrder: 'color,start'
2.Change compareSegs 函数。 (fullcalendar.js)
// original function
compareSegs: function(seg1, seg2) {
return seg1.eventStartMS - seg2.eventStartMS || // earlier events go first
seg2.eventDurationMS - seg1.eventDurationMS || // tie? longer events go first
seg2.event.allDay - seg1.event.allDay || // tie? put all-day events first (booleans cast to 0/1)
compareByFieldSpecs(seg1.event, seg2.event, this.view.eventOrderSpecs);
}
// custom function
compareSegs: function(seg1, seg2) {
if(this.view.name=="basicWeek"){ // ordering events by color in ListView
return seg2.event.allDay - seg1.event.allDay || // tie? put all-day events first (booleans cast to 0/1)
compareByFieldSpecs(seg1.event, seg2.event, this.view.eventOrderSpecs);
}
else{
return seg1.eventStartMS - seg2.eventStartMS || // earlier events go first
seg2.eventDurationMS - seg1.eventDurationMS || // tie? longer events go first
seg2.event.allDay - seg1.event.allDay || // tie? put all-day events first (booleans cast to 0/1)
compareByFieldSpecs(seg1.event, seg2.event, this.view.eventOrderSpecs);
}
}
在这种情况下,我只想在 "basicVeek" 视图中按颜色对事件进行排序。 然后我删除了 eventStartMS 和 eventDurationMS 测试。
删除:
seg1.eventStartMS - seg2.eventStartMS || // earlier events go first
seg2.eventDurationMS - seg1.eventDurationMS || // tie? longer events go first