2010-04-04 81 views
8

每天的事件數我有一天許多事件,它工作正常,但現在看着月視圖,我的日曆網格是高得多的預期。我想隱藏月視圖中的部分事件,就像使用視覺闕報的摘要那樣,在當天有更多事件可以顯示。fullcalendar,如何限制在月視圖

我可以使用eventRender並返回false,但我想知道有多少事件在給定的一天,所以我可以限制渲染約4,那麼也許我會添加一個事件,說「更多.. 。「

所以問題可能是:如何計算給定日期的事件?

或者這更像是一個功能請求公開月視圖最大計數器?

謝謝

+0

這是一個很好的問題的確,我遇到的同樣的問題。查看API文檔是否可以幫助您:http://arshaw.com/fullcalendar/docs/ – 2010-04-05 00:45:09

回答

1

目前不可能。看功能要求: http://code.google.com/p/fullcalendar/issues/detail?id=304

+0

鏈接的功能請求現已更新,並附有此評論「四年後,我終於實現了此功能,它是v2.1.0的一部分-beta2。請嘗試測試版併發布任何反饋。有關此測試版的更多信息,請訪問:http://blog.arshaw.com/1/post/2014/07/fullcalendar-210-beta.html「完整評論: https://code.google.com/p/fullcalendar/issues/detail?id=304#c137 – 2014-08-11 18:23:18

1

我也有類似的要求,並打算做這樣的事情的:

在JSON提要,我將返回包含每天事件的計數特殊事件。

,利用適當的全歷eventRender回調,我只會在eventRender返回false(),因爲我不希望看到任何事件顯示這取決於鑑於這些特殊總數的事件。

我還沒有實現,但也許它可能是一個有效的途徑。如我錯了請糾正我。

0

我做了這樣的事情:

function(start, end, callback) { 
       var viewName = $("#calendar").fullCalendar('getView'); 
       var startTime = Math.round(start.getTime()/1000); 
       var endTime = Math.round(end.getTime()/1000); 
       MyWebService.MyWebMethod.GetEventsByView(startTime, endTime, viewName.name, 
        function(args) { 
         callback(args); 
        }, 
        function(error) { 
         var e = error; 
        } 
       ); 
      } 

這裏GetEventsByView方法返回月視圖和詳細設置爲agendaWeek和白天景色的分組集。但爲了正確工作,我必須爲日曆設置lazyFetching:false

1

這馬車(主要是廢棄的)插件不正是你問什麼。檢查一下,並隨時做出貢獻。 警告:這是一個黑客攻擊,但fullcalendar本身有一個需要大量工作的API。大部分重要部件都被困在封閉裝置中,這使得擴展非常困難。除非你想編輯插件的源代碼,否則真的沒有辦法做到這一點,沒有hackery。

話雖這麼說,這是我發現你問最接近的:https://github.com/lyconic/fullcalendar/tree/view-more

0

我做這樣的

的CSS:

 .MaxHght 
     { 
     height:16px; 
     } 
     .viewMore 
     { 
     float:right; 
     color: rgb(219, 104, 28); 
     cursor:pointer; 
     } 

插件代碼

dayClick: function (date, allDay, jsEvent, view) { 
        $('#fullCalendar').fullCalendar('changeView', 'agendaDay').fullCalendar('gotoDate', date.getFullYear(), date.getMonth(), date.getDate()); 
       }, 
eventRender: function (event, element, view) { 
       element.qtip({ 
        content: event.QText, 

        position: { 
         my: 'CenterBottom', 
          at:'TopCenter' 

        }, 
        style: { 
         tip: 'bottomMiddle' 

        } 
       }); 
       $(element).removeClass('MaxHght'); 
       if (view.name == 'month') { 

         $(element).addClass('MaxHght'); 
        var year = event.start.getFullYear(), month = event.start.getMonth() + 1, date = event.start.getDate(); 
        var result = year + '-' + (month < 10 ? '0' + month : month) + '-' + (date < 10 ? '0' + date : date); 
        $(element).addClass(result); 
        var ele = $('td[data-date="' + result + '"]'),count=$('.' + result).length; 
        $(ele).find('.viewMore').remove(); 
        if (count> 3) { 
         $('.' + result + ':gt(2)').remove();       
         $(ele).find('.fc-day-number').after('<a class="viewMore"> More</a>'); 

        } 
       } 

      }, 
      eventAfterAllRender: function (view) { 
       if (view.name == 'month') { 
        $('td.fc-day').each(function() { 
         var EventCount = $('.' + $(this).attr('data-date')).length; 
         if (EventCount == 0) 
          $(this).find('.viewMore').remove(); 
        }); 
       } 
      }, 
0

你不需要花費很多努力就算總數甚至TS。 我有一個簡單的方法來統計我的fullCalendar上的總事件。在eventAfterAllRender,寫這樣的事情,

eventAfterAllRender: function(view) { 
        var allevents = $('#calendar').fullCalendar('clientEvents'); 
        var countevents = 0; 
        if(allevents.length) { 
         countevents = countevents + allevents.length; 
        } 
        if(!countevents) { 
         // alert('event count is'+countevents); 
         console.log('event count is',countevents); 
        } 
       } 

-where calendar是我的日曆#

這是我做的所有方式。我從這裏離開。但我相信,如果您嘗試使用fullCalendar的loading: function()上的某些內容來根據您的意願限制事件的數量,那並不困難。

雖然感謝。

相關問題