2013-03-05 3 views
1

Мы используем полный плагин jquery plugin для проекта на работе. Однако мы хотим отображать определенные события с определенными свойствами сверху в столбце каждый день. Проблема в том, что я не хочу менять исходный код Fullcalendar.js, если мне это не нужно, и даже кажется, что он использует миниатюрные .js для рендеринга событий.Render event on full fullcalendar

Я знаю, что существует триггер, запускающий пользовательское событие eventRender: function (event, element), но у меня нет идей, чтобы отображать событие наверху. В этом примере мы можем сказать, что событие получило атрибут important.

Так что я предполагаю, что это псевдо-код сделает мой пример более ясным:

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

Итак, вы хотите, чтобы изменить порядок событий (за определенный день) на основе значения, не так ли? Кроме того, у ваших событий есть время на них или просто на свидание? – ganeshk

+0

Я не думаю, что это возможно с fullcalendar. Вам нужно будет манипулировать js и создать строку важности, такую ​​как строка allDay в таблице. –

+0

Правильно ганеш. Я готов редактировать js и создать строку важности. Но я не знаю, с чего начать редактирование. Код довольно грязный. Но я думаю, мне придется попробовать. – Ms01

ответ

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 
}, 

Как вы можете см. второе событие запланировано ранее, но с добавленным кодом он будет заказывать два по их приоритету. Итак, первое событие будет первым, со вторым после него событием.

Так я решил это, приоритет - целое число, и я пытаюсь сортировать его, если только они не совпадают или не существуют (null/undefined). Его сортировка по наивысшему числу.

Эта функция находится в fullCalendar.js.

+0

Это полезная функция. Вы должны открыть запрос [issues] (http://code.google.com/p/fullcalendar/issues/list), чтобы FC выставлял эту функцию в качестве обратного вызова. – MaxD

+0

Я действительно сделал запрос на выгрузку в FC-repo on github вчера. Но я не мог найти там никаких проблем. Но я думаю, что они есть в коде google. Спасибо, сделаю. – Ms01

+0

@cubsink как мы можем складывать все события, время окончания которых больше, чем время начала следующего события в верхней части?Например, если событие начинается с предыдущей даты, оно должно быть сверху. Ваша помощь будет высоко оценена :) –

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" 
    } 
]