每天的事件數我有一天許多事件,它工作正常,但現在看着月視圖,我的日曆網格是高得多的預期。我想隱藏月視圖中的部分事件,就像使用視覺闕報的摘要那樣,在當天有更多事件可以顯示。fullcalendar,如何限制在月視圖
我可以使用eventRender並返回false,但我想知道有多少事件在給定的一天,所以我可以限制渲染約4,那麼也許我會添加一個事件,說「更多.. 。「
所以問題可能是:如何計算給定日期的事件?
或者這更像是一個功能請求公開月視圖最大計數器?
謝謝
每天的事件數我有一天許多事件,它工作正常,但現在看着月視圖,我的日曆網格是高得多的預期。我想隱藏月視圖中的部分事件,就像使用視覺闕報的摘要那樣,在當天有更多事件可以顯示。fullcalendar,如何限制在月視圖
我可以使用eventRender並返回false,但我想知道有多少事件在給定的一天,所以我可以限制渲染約4,那麼也許我會添加一個事件,說「更多.. 。「
所以問題可能是:如何計算給定日期的事件?
或者這更像是一個功能請求公開月視圖最大計數器?
謝謝
鏈接的功能請求現已更新,並附有此評論「四年後,我終於實現了此功能,它是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
我也有類似的要求,並打算做這樣的事情的:
在JSON提要,我將返回包含每天事件的計數特殊事件。
,利用適當的全歷eventRender回調,我只會在eventRender返回false(),因爲我不希望看到任何事件顯示這取決於鑑於這些特殊總數的事件。
我還沒有實現,但也許它可能是一個有效的途徑。如我錯了請糾正我。
我做了這樣的事情:
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
。
這馬車(主要是廢棄的)插件不正是你問什麼。檢查一下,並隨時做出貢獻。 警告:這是一個黑客攻擊,但fullcalendar本身有一個需要大量工作的API。大部分重要部件都被困在封閉裝置中,這使得擴展非常困難。除非你想編輯插件的源代碼,否則真的沒有辦法做到這一點,沒有hackery。
話雖這麼說,這是我發現你問最接近的:https://github.com/lyconic/fullcalendar/tree/view-more
我做這樣的
的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();
});
}
},
你不需要花費很多努力就算總數甚至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()
上的某些內容來根據您的意願限制事件的數量,那並不困難。
雖然感謝。
由於FullCalendar 2.1.0,此功能包括,只需使用:
$('#calendarBlock').fullCalendar({
eventLimit: true
[...]
});
演示:http://arshaw.com/js/fullcalendar-2.1.0-beta2/demos/agenda-views.html
這是一個很好的問題的確,我遇到的同樣的問題。查看API文檔是否可以幫助您:http://arshaw.com/fullcalendar/docs/ – 2010-04-05 00:45:09