1

仕事中のプロジェクトに jquery プラグイン fullCalendar を使用しています。ただし、特定のプロパティを持つ特定のイベントを各日の列の一番上に表示したいと考えています。問題は、必要がなければ Fullcalendar.js のソース コードを変更したくないということです。また、イベントのレンダリングに縮小された .js を使用しているようにさえ見えます。

カスタムイベントをトリガーするトリガーが存在することは知っていeventRender: function (event, element)ますが、イベントを一番上にレンダリングするアイデアは出ていません。この例では、イベントがimportant属性を取得したと言えます。

したがって、この疑似コードにより、私の例がより明確になると思います。

eventRender: function (event, element) {
    if(event.important) {
        //render at top
    }
}
4

2 に答える 2

1

私のタスクの要件は、すべてのイベントが整数である特別な優先順位を持つように変更されました。数値が大きいほど、重要性が高くなります。

年:

// Old function, this won't sort based on importance first!
function segCmp(a, b) {
    return (b.msLength - a.msLength) * 100 + (a.event.start - b.event.start);
}

新しい:

function segCmp(a, b) {
    var priorityDiff = ((a.event.priority || 0) < (b.event.priority || 0)) ? 1 : ((b.event.priority || 0) < (a.event.priority || 0)) ? -1 : 0;
    if(priorityDiff != 0) return priorityDiff;
    return (b.msLength - a.msLength) * 100 + (a.event.start - b.event.start);
}

これを使用したい場合は、イベントJSONも次のようになります。

{
allDay: false,
color: "#7BD148",
id: "1",
key: "1",
start: "2013-01-28 13:07:00",
title: "test event",
url: "http://google.se",
priority: 10
},
{
allDay: false,
color: "#7BD148",
id: "2",
key: "2",
start: "2013-01-28 12:07:00",
title: "test event 2",
url: "http://google.se",
priority: 5
},

ご覧のとおり、2番目のイベントは以前にスケジュールされていますが、コードが追加されると、2つが優先度順に並べられます。したがって、最初のイベントが最初に実行され、2番目のイベントがそれに続きます。

それが私がそれを解決した方法です、優先順位は整数であり、それらが同じであるか存在しない場合(null /未定義)を除いて、それでソートしようとしています。最高の整数によるソート。

その関数はfullCalendar.jsにあります。

于 2013-03-07T10:56:17.847 に答える
1

FullCalendar は v.2.4.0 からこの機能を追加しました。「 eventOrder 」と呼ばれる、カレンダーオプションの設定です。イベントのプロパティの名前を引数として渡すことができ、そのプロパティに従ってイベントをアルファベット順に並べ替えます。

// start calendar
var $calendar = $("#calendar").fullCalendar({
    // Start of calendar settings
    header: {
        left: 'title',
        right: 'today,month,agendaDay,agendaWeek prev,next'
    },

    // setting to display sorted based on this property
    eventOrder: "priority",

    events: data
}

たとえば、データは次のとおりです。

data = [
    {
        title: "event1",
        start: "2017-01-25"
        priority: "a"
    },
    {
        title: "event2",
        start: "2017-01-26"
        priority: "b"
    },
    {
        title: "event3",
        start: "2017-01-27"
        priority: "c"
    }
]
于 2017-02-25T09:46:44.760 に答える