简体   繁体   English

在Fullcalendar中按开始日期和结束日期订购事件

[英]Order Events in Fullcalendar by Start date and End Date

How can I order events in fullCalendar first by start date? 如何按开始日期先在fullCalendar中订购事件?

Example: 例:

  • An event which starts first will show on top and then one which starts later will be later 首先开始的事件将显示在顶部,然后稍后开始的事件将在以后
  • If two events have same the start date then, order them by end date ie an event which ends earlier will be shown first, followed by an event which ends later. 如果两个事件的开始日期相同,则按结束日期对其进行排序,即将首先显示一个较早结束的事件,然后是一个较晚结束的事件。

Calendar Display Events Order 日历显示 事件顺序

var args = jQuery.parseJSON(emCalendarArgs);
var Jobj = args.events;

// Setup FullCalendar

(function() {
  //var language = jQuery('#pg_lang').val();
  //alert(language+ 'dsfsd');
  var date = new Date();
  var d = date.getDate();
  var m = date.getMonth();
  var y = date.getFullYear();
  var language = langg;
  var mn_text, week_text, day_text, list_text;

  //alert(mn_text);
  var args = jQuery.parseJSON(emCalendarArgs);
  var Jobj = args.events;
  console.log(Jobj);
  jQuery('#events-full-calendar').fullCalendar({

    allDaySlot: false,
    editable: true,
    lang: 'he',
    handleWindowResize: true,
    eventOrder: 'start,end',
    header: {
      left: 'today prev,next',
      center: 'title',
      right: 'month,basicWeek,basicDay'
    },
    buttonText: {
      month: mn_text,
      week: week_text,
      day: day_text
    },
    eventLimit: {
      'month': 3, // adjust to 4 only for months
      'default': false // display all events for other views
    },
    axisFormat: 'HH:mm',
    timeFormat: {
      agenda: 'H:mm{ - h:mm}'
    },
    slotEventOverlap: false,
    events: Jobj,
    timeFormat: 'H:mm',
  });
}());

I found a Solution to it. 我找到了解决方案。 For any one else looking for the solution to this, I changed a function in fullcalendar.js: 对于寻找解决方案的任何其他人,我更改了fullcalendar.js中的一个函数:

compareSegs: function(seg1, seg2) { return seg1.eventStartMS - seg2.eventStartMS || // earlier events go first seg2.eventDurationMS - seg1.eventDurationMS || // tie? longer events go first seg2.event.allDay - seg1.event.allDay || // tie? put all-day events first (booleans cast to 0/1) compareByFieldSpecs(seg1.event, seg2.event, this.view.eventOrderSpecs); } 

to : 至 :

compareSegs: function(seg1, seg2) {
        if(this.view.name=="basicWeek" || this.view.name=="month" || this.view.name=="basicDay"){ // ordering events by color in ListView
        return seg2.event.allDay - seg1.event.allDay || // tie? put all-day events first (booleans cast to 0/1)
            compareByFieldSpecs(seg1.event, seg2.event, this.view.eventOrderSpecs);
        }
        else{
            return seg1.eventStartMS - seg2.eventStartMS || // earlier events go first
                        seg2.eventDurationMS - seg1.eventDurationMS || // tie? longer events go first
                        seg2.event.allDay - seg1.event.allDay || // tie? put all-day events first (booleans cast to 0/1)
                        compareByFieldSpecs(seg1.event, seg2.event, this.view.eventOrderSpecs);
        }
    }

and used below code in fullcalendar function 并在全日历功能中使用以下代码

eventOrder: 'start, end' 

in my fullcalendar call 在我的全日历通话中

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM