完整日历中的剩余通知

时间:2016-01-11 17:50:35

标签: jquery notifications fullcalendar

我尝试在完整日历(jQuery插件)中实现剩余通知 例如:如果我在下午06:00召开会议,我应该在会议开始前15或20分钟通知我。

这是我的代码,

 setInterval(function(){ 
            var month=['january','february','march','april','may','june','july','august','september','october','november','december'];
            var date = new Date();
            $('.remainder').html("");
            var headerDate = $('.fc-center').text().split(' '); 
            if(headerDate[0].toLowerCase() == month[date.getMonth()] && headerDate[1] == date.getFullYear()){
                console.log(1);
               var allEvents = $('.fc-day-grid-event');
                $.each(allEvents,function(key,value){
                    var eventTime = $(value).find('.fc-time').text();   
                    if(eventTime.length !=0){
                    var getAmPm = eventTime.split('');
                    var AmPm = getAmPm[getAmPm.length-1];
                    var eventTimeArr = eventTime.split(':');
                    var eventDateIndex = $(value).closest('td').index();
                    var eventDate = $(value).closest('.fc-content-skeleton').find('thead td').eq(eventDateIndex).data('date');
                    if($(value).closest('.fc-content-skeleton').find('thead td.fc-day-number').eq(eventDateIndex).html() == date.getDate()){    
                        if(eventTimeArr.length == 1){   
                            eventTimeArr[0] = eventTimeArr[0].slice(0,-1);
                            eventTimeArr[0] = parseInt(eventTimeArr[0])
                            if(AmPm == 'p'){
                                eventTimeArr[0] = parseInt(eventTimeArr[0])+12;
                            }

                            if( Date.parse(eventDate+' '+eventTimeArr[0]+":"+eventTimeArr[1]) - date.valueOf() <= 900000 ){
                                $('.remainder').append( "<span>"+($(value).find('.fc-title').text())+"</span>, ");
                            }
                        }
                        else{
                            eventTimeArr[1] = eventTimeArr[1].slice(0,-1);
                            eventTimeArr[0] = parseInt(eventTimeArr[0])
                            if(AmPm == 'p'){
                                eventTimeArr[0] = parseInt(eventTimeArr[0])+12;
                            }
                            eventTimeArr[1] = parseInt(eventTimeArr[1]);

                            if( Date.parse(eventDate+' '+eventTimeArr[0]+":"+eventTimeArr[1]) - date.valueOf() <= 900000 ){
                               $('.remainder').append( "<span>"+($(value).find('.fc-title').text())+"</span>, ");
                            }
                        }
                    }
                  }
                });    
            }

        }, 1000);

我的HTML,

Remainder : The following task comes up in 15 mins ---- <label class="remainder"></label>

我尝试使用console.log调试它,发现我的代码在执行时都卡住了.fc- *(。fc-center,.fc-day-grid-event,.fc-time)

任何人都可以帮我解决这个问题。如果您有任何其他解决方案来实现剩余功能,请告诉我。

1 个答案:

答案 0 :(得分:0)

假设您从数据库中提取事件,我认为在此解决方案中我根本不会使用fullCalendar。如果用户登录到我的站点,每隔一分钟左右,我会通过ajax调用查询数据库,查找属于该用户的任何事件,该事件在下一个X分钟开始,然后创建通知(如果有任何返回)。