Fullcalendar:如何合并彼此相邻的两个事件?

编程入门 行业动态 更新时间:2024-10-17 15:28:19
本文介绍了Fullcalendar:如何合并彼此相邻的两个事件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

就我而言,我经常吸引用户,而不是单击并拖动以创建长事件(日视图),而是单击一个时隙(30分钟),然后单击下一个时隙(30分钟).

In my case I very often have users that instead of clicking and dragging to create a long event (day view), just click in one time slot (30 min), then click the next one (30 min).

所以不是事件13:00-14:00,我得到的是第一个13:00-13:30和第二个13:30-14:00.

So instead of an event 13:00 - 14:00 I get first 13:00-13:30 and second 13:30-14:00.

为避免这种情况,我想将两个事件合并为一个,以便它们显示为13:00-14:00.

To prevent this I would like to merge both events into one so that they show up as 13:00 - 14:00.

如何正确地做到这一点?

How to do that properly?

推荐答案

这是我最终解决它的方法:

This is how I finally solved it:

// user choses event select: function (start, end, jsEvent, view) { var diffmin = (new Date(end).getTime()/1000 - new Date(start).getTime()/1000)/60; var title = diffmin+' min'; var eventData; // some users click 1 slot, then the following, so we have 2 events each 30 min instead of 60 min // merge both events into one var eventmerge = false; $.each(allevents, function( index, eventitem ) { if(eventitem!==null && typeof eventitem != 'undefined') { // if start time of new event (2nd slot) is end time of existing event (1st slot) if( moment(start).format('YYYY-MM-DD HH:mm') == moment(eventitem.end).format('YYYY-MM-DD HH:mm') ) { eventmerge = true; // existing event gets end data of new merging event eventitem.end = end; } // if end time of new event (1st slot) is start time of existing event (2nd slot) else if( moment(end).format('YYYY-MM-DD HH:mm') == moment(eventitem.start).format('YYYY-MM-DD HH:mm') ) { eventmerge = true; // existing event gets start data of new merging event eventitem.start = start; } if(eventmerge) { // recalculate var diffmin = (new Date(eventitem.end).getTime()/1000 - new Date(eventitem.start).getTime()/1000)/60; eventitem.title = diffmin+' min'; // copy to eventData eventData = eventitem; // find event object in calendar var eventsarr = $('#calendar').fullCalendar('clientEvents'); $.each(eventsarr, function(key, eventobj) { if(eventobj._id == eventitem.id) { console.log('merging events'); eventobj.start = eventitem.start; eventobj.end = eventitem.end; eventobj.title = eventitem.title; $('#calendar').fullCalendar('updateEvent', eventobj); } }); // break each loop return false; } } }); if(!eventmerge) { // console.log('adding event id: '+eventcount); eventData = { id: eventcount, // identifier title: title, start: start, end: end, color: '#00AA00', editable: true, eventDurationEditable: true, }; // register event in array allevents[eventcount] = eventData; eventcount++; $('#calendar').fullCalendar('renderEvent', eventData, true); } // console.log(start, end); setTimePrice(eventData); $('#calendar').fullCalendar('unselect'); },

结果:

示例结果:

Matheboss.de的FullCalendar

更多推荐

Fullcalendar:如何合并彼此相邻的两个事件?

本文发布于:2023-11-29 21:30:08,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1647676.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:两个   事件   Fullcalendar

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!