fullcalendar:如何为每天添加所有事件的总持续时间
我已经注意到这个问题被问了几次,但没有实际的正确答案或良好的反馈,以指导正确的道路。
我正在使用fullcalendar javascript插件并尝试为每天添加多个事件的总小时数,然后我将在每天的页眉或页脚中显示总和。
我已经尝试了很多不同的方法来实现这一点,但最接近我的结果是这个代码:
eventAfterRender: function(event, element, view) { if (event.totalhrs > 0) { var sd = event.startdate; if (dateTotal.hasOwnProperty(sd)) { dateTotal[event.startdate] = (dateTotal[event.startdate] + +event.totalhrs); } else { dateTotal[event.startdate] = +(event.totalhrs); } $(".fc-day-top[data-date='"+event.startdate+"']").find('.fc-dailytotal').text(dateTotal[event.startdate]); } }
这在第一次呈现日历时有效,但如果事件发生更改,则会不断添加错误显示非常高的值。 我理解为什么它不正确地添加总数(dateTotal[event.startdate] + +event.totalhrs)
但我希望有人可以帮助指导我正确的方向来完成正确的结果。
感谢任何反馈/帮助。
我想出了另一种方法来使这项工作没有一个日期数组保存每天的总和。 我希望这能帮助那些一直在寻找的人。
请记住,此示例仅适用于月视图…有一些调整可使其适用于周/日视图。
此外,事件必须有一个总小时对象 ,用于总计总和。 您将在下面看到event.totalhrs
viewRender: function(view, element) { $.each($(".fc-day-top"), function(key, val) { var dateYMD = $(this).attr("data-date"); $(this).append(""); }); }, eventRender: function(event, element, view) { $(".fc-dailytotal").text(0); //Clear total sum }, eventAfterRender: function(event, element, view) { var currentday = moment(event.start).format("YYYY-MM-DD"); if (event.totalhrs > 0) { var prev = $("#dailytotal-"+currentday).text() || 0; $("#dailytotal-"+currentday).text(+prev + +event.totalhrs); } }
您也可以使用此方法计算每周总计。