フルカレンダーから過去の日付と翌月の日付を削除することはできますか?したがって、現在の月については、現在の日付と曜日のみを表示する必要があります。
EventRender()メソッドでイベントをスキップしてみてください。
eventRender: function(event, element, view)
{
if(event.start.getMonth() !== view.start.getMonth()) { return false; }
}
翌月と前月のグリッドセルには「fc-other-month」というクラスがあるため、そのようにターゲットに設定できます。
例:非表示の日番号、CSSを追加:
.fc-other-month .fc-day-number { display:none;}
またはこのJavaScriptを実行します。
$(".fc-other-month .fc-day-number").hide()
これを試して!
$('.fc-other-month').html('');
これは私にとってはうまくいきます!
この設定を追加しますshowNonCurrentDates: false
。この設定では、当月に属さない日付やイベントは表示されません。
$('#calendarId').fullCalendar({
// Other settings
showNonCurrentDates: false
});
この回答で提供されているソリューションはいずれも、現在のバージョンのFullCalendarの問題を適切に解決していません。 Baschtの回答を出発点として使用して、現在のFullCalendar APIを使用するように彼のアプローチを更新しました。以下は、このタスクを実行する実際のサンプルコードです。
eventRender: function (event, element) {
var eventDate = event.start;
var calendarDate = $('#activitiesCalendar').fullCalendar('getDate');
if (eventDate.get('month') !== calendarDate.get('month')) {
return false;
}
}
$('.fc-other-month').html('');
他の月を無効にする場合:
$(".fc-other-month").addClass('fc-state-disabled');
eventRender: function (event, element, view) {
var currentMon = new Date(event.start);
var currentMonth = currentMon.getMonth();
var currentMonViewStart = new Date(view.start);
var currentMonthViewStart = currentMon.getMonth();
var currentMonViewEnd = new Date(view.end);
var currentMonthViewEnd = currentMonViewEnd.getMonth();
if((currentMonth == currentMonthViewStart) && (currentMonth == currentMonthViewEnd)){
return false;
}
}
FullCalendarプラグインの新しいバージョンでは、Moment.jsヘルパー関数を利用して以下が機能します。
eventRender: function(event, element, view){ var evStart = moment(view.intervalStart).subtract(1, 'days'); var evEnd = moment(view.intervalEnd).subtract(1, 'days'); if (!event.start.isAfter(evStart) || event.start.isAfter(evEnd)) { return false; } },
WeekModeを使用してみてください: http://fullcalendar.io/docs/display/weekMode/ 。
weekMode: 'liquid', or `weekMode: 'variable',`
それが役に立てば幸い
バージョン2.0以降の場合:
eventRender: function (event, element, view) {
if(event.start._d.getMonth() !== $('calendar').fullCalendar('getDate')._d.getMonth()) {
return false;
}
}
// if you want to remove other month's days from view add to css:
.fcc-other-month {
visibility:hidden;
}
私が使用した最新バージョンの場合:
eventRender: function(event,element,view) {
var view_title = view.title;
var event_title = event.start;
var event_title2 = moment(event_title).format('MMMM YYYY');
if(event_title2 !== view_title) {
return false;
} else {
var idname = 'event' + event.id;
$(element).attr('id', idname).addClass('ttLT').attr('title', event.title);
var mytitle = event.title;
if (mytitle.toLowerCase().indexOf("open timeslot") >= 0)
{
$(element).addClass('alert').addClass('alert-success');
}
else{
$(element).addClass('alert').addClass('alert-info');
$(element).find('.fc-event-title').addClass('capitalize');
$(element).find('.fc-event-inner').addClass('capitalize');
}
element.qtip({
content: event.description,
style:{classes:'qtip-bootstrap'},
position:{my:'bottom right',at:'top left'}
});
}
}
イベントレンダリングとコールバック関数を使用すると、私の問題が解決しました。現在のビューから前月と翌月のイベントを完全に非表示にします。
eventRender: function(event, element, view) {
if (view.name == "month") {
if (event.start._i.split("-")[1] != getMonthFromString(view.title.split(" ")[0])) {
return false;
}
}
}
function getMonthFromString(mon) {
var d = Date.parse(mon + "1, 2016");
if (!isNaN(d))
return new Date(d).getMonth() + 1;
return -1;
}
それが役に立てば幸い
これはバージョン3.6.1で機能しています
eventRender: function(event, element, view)
{
if(!event.start.isBetween(view.intervalStart, view.intervalEnd)) { return false; }
}
テキストの色を背景色、つまり白に変更して非表示にすることができます
td.fc-other-month {
color: white;
}
しかし、バージョンが3以上の場合は、parameter- showNonCurrentDays:false を確認できますが、これは月表示用です。
フルカレンダーバージョン-4のソリューションを以下で確認しました。これは機能し、前月と翌月の日を非表示にし、イベントURLで前月/翌月の日付を渡しません。
showNonCurrentDates: false
この質問をしていただきありがとうございます。
このclientOptions'showNonCurrentDates' => false, and 'fixedWeekCount' => false,
を試すことができます
このコードを使用すると、前の月と次の月の日を非表示にできますが、thouse日のセルは残ります。 Fullcalendar Doc を使用してみてください。
<?= $JSCode = <<<EOF
function(event, element, view) {
if(event.nonstandard.status =='0'){
element.find(".fc-title").css({"color": "red"});
$('.fc-day-top[data-date="'+event.nonstandard.date+'"]').find('.fc-day-number').css({"background-color": "red", "color": "white"});
} else if(event.nonstandard.status == '1'){
element.find(".fc-title").css({"color": "#1ab394"});
$('.fc-day-top[data-date="'+event.nonstandard.date+'"]').find('.fc-day-number').css({"background-color": "#1ab394", "color": "white"});
}else if(event.nonstandard.status == '4' || event.nonstandard.status == '5'){
$('.fc-day-top[data-date="'+event.nonstandard.date+'"]').find('.fc-day-number').css({"background-color": "#676a6c", "color": "white"});
}else if(event.nonstandard.status == '3'){
element.find(".fc-title").css({"color": "red"});
$('.fc-day-top[data-date="'+event.nonstandard.date+'"]').find('.fc-day-number').css({"background-color": "red", "color": "white"});
}else if(event.nonstandard.status == '2'){
element.find(".fc-title").css({"color": "orange"});
$('.fc-day-top[data-date="'+event.nonstandard.date+'"]').find('.fc-day-number').css({"background-color": "orange", "color": "white"});
}
if(event.nonstandard.working_hours) {
var new_description = '<strong>Total' + ' : </strong>' + event.nonstandard.working_hours + '<br/>';
element.append(new_description);
} } EOF;
yii2fullcalendar\yii2fullcalendar::widget([
'id' => 'calendar',
'options' => [
'lang' => 'en',
'header' => [
'left' => 'prev,next today',
'center' => 'title',
'right' => 'month,agendaWeek,agendaDay'
],
],
'clientOptions' => [
'height' => 750,
'showNonCurrentDates' => false,
'language' => 'en',
'eventLimit' => true,
'selectable' => true,
'selectHelper' => true,
'droppable' => false,
'editable' => false,
'fixedWeekCount' => false,
'defaultDate' => date('Y-m-d'),
'eventRender' => new JsExpression($JSCode),
],
'events' => Url::to(['/user/myattr/jsoncalendar'])
]);
?>
このトリックを使用して、年ビューの現在の月から過去の日付と翌月の日付のイベントを削除します。
eventAfterAllRender: function() {
$(".fc-other-month").each(function() {
var index=$(this).index();
var aa= $(this).closest("table").find("tbody").find("tr").
find("td:nth-child("+(index+1)+")");
aa.find(".fc-day-grid-event").hide();
});
},