0

私はフルカレンダーとそれが提供するさまざまな機能が本当に好きです。ビューがagendaWeekまたはagendaMonthにあるときに、各イベントの詳細/カスタマイズされた情報を表示するために使用したいと思います。これらをチェックすることは問題ではありません。を使用してビューフォームを快適にフィルタリングできます

eventRender: function(event, element,view) { 
    if(view.name!="month"){
       //my code to come here        
    }

ここに問題があります:私はユーザーの活動を追跡するためのシステムを構築しています。たとえば、1日にユーザーが実行する必要のある3つのアクティビティが含まれる場合があります。アクティビティ1は午前9時に始まり、アクティビティ2は午前11時30分に始まり、最後にアクティビティ3は午後3時に始まります。したがって、イベントは午前9時から午後3時までの1つのブロックにあります。このブロックをカスタマイズして、開始時に各アクティビティを表示し、アクティビティにかかる時間を示すために、それぞれに異なる背景色を含める必要がある場合があります。

注:イベントを1つだけ作成し、このアクティビティを表示するようにスタイルを設定したいと思います。実際の会議と同じように、1つの会議(イベント)と複数の議題があります。

4

1 に答える 1

1

次のコードを見てください (フィドルが利用可能です)。これは、レンダリングの前後にイベント DOM を編集する方法を示しています。

<div style="border:solid 2px red;">
    <div id='calendar'></div>
</div>
<script>
$(document).ready(function() {

    var date = new Date();
    var d = date.getDate();
    var m = date.getMonth();
    var y = date.getFullYear();

    $('#calendar').fullCalendar({
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay'
        },
        defaultView: 'agendaDay',
        editable: true,
        events: [
        {
            id: 1,
            title: "Meeting",
            start: new Date(y, m, d, 9, 0),
            end: new Date(y, m, d, 15, 0),
            allDay: false}
        ],
        eventRender: function(event, element, view) {
            element.find('.fc-event-content').append('<div class="fc-sub-event">9am - 11:30am</div>');
            element.find('.fc-event-content').append('<div class="fc-sub-event">11:30am - 1pm</div>');
            element.find('.fc-event-content').append('<div class="fc-sub-event">1pm - 3pm</div>');
        },
        eventAfterRender: function(event, element, view) {
            var eleHgt = element.height()/3.5;
            $('.fc-sub-event').height(eleHgt);
        }
    });
});
</script>

次に、このコードを確認します ( fiddle )。これは、イベント データをフォーマットしてこの概念を一般化する方法を示しています。

<div style="border:solid 2px red;">
    <div id='calendar'></div>
</div>
<script>
$(document).ready(function() {

    var date = new Date();
    var d = date.getDate();
    var m = date.getMonth();
    var y = date.getFullYear();

    $('#calendar').fullCalendar({
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay'
        },
        defaultView: 'agendaDay',
        editable: true,
        events: [
        {
            id: 1,
            title: '<div class="fc-event-title">Meeting</div><div class="fc-sub-event">9am - 11:30am</div><div class="fc-sub-event">11:30am - 1pm</div><div class="fc-sub-event">1pm - 3pm</div>',
            start: new Date(y, m, d, 9, 0),
            end: new Date(y, m, d, 15, 0),
            allDay: false}
        ],
        eventRender: function(event, element, view) {
            element.find('.fc-event-content').html(element.find('.fc-event-content').text());
        },
        eventAfterRender: function(event, element, view) {
            var eleHgt = element.height()/3.5;
            $('.fc-sub-event').height(eleHgt);
        }
    });
});
</script>
于 2012-06-16T03:57:24.680 に答える