Javascript 将重叠的事件放在首位

Javascript 将重叠的事件放在首位,javascript,jquery,fullcalendar,Javascript,Jquery,Fullcalendar,我正在使用完整的日历 以下是问题的示例: 问题是,无论发生什么,非工作日都应该保持在首位。默认任务应在nwd和super cool项目之间滑动 有人知道我可以在服务器端做什么吗?服务器端目前可以: var sortedList = eventList .OrderBy(p => p.resource). ThenBy(p => new DateTime(ConvertFromUnixTimestamp(p.s

我正在使用完整的日历

以下是问题的示例:

问题是,无论发生什么,非工作日都应该保持在首位。默认任务应在nwd和super cool项目之间滑动

有人知道我可以在服务器端做什么吗?服务器端目前可以:

   var sortedList = eventList
            .OrderBy(p => p.resource).
            ThenBy(p => new
          DateTime(ConvertFromUnixTimestamp(p.start).Year,
          ConvertFromUnixTimestamp(p.start).Month,
          ConvertFromUnixTimestamp(p.start).Day)
          ).ThenBy(p => !p.isDate)
          .ThenBy(p => p.title).ToList();
        List<dynamic> finalList = new List<object>();

        for (int i = 0; i < sortedList.Count(); ++i)
        {
            var e = sortedList.ElementAt(i);
            finalList.Add(
                new
                {
                    id = i.ToString(),
                    realid = e.realid,
                    isDate = e.isDate,
                    title = e.title,
                    start = ResolveStartDate(StartDate(ConvertFromUnixTimestamp(e.start).AddSeconds(i))),
                    end = e.end,
                    description = e.description,
                    allDay = e.allDay,
                    resource = e.resource,
                    editable = e.editable,
                    color = e.color
                }
                );

        }


        JavaScriptSerializer js = new JavaScriptSerializer();
        string strJSON = js.Serialize(finalList);
var sortedList=eventList
.OrderBy(p=>p.resource)。
然后是(p=>new
日期时间(ConvertFromUnixTimestamp(p.start).Year,
ConvertFromUnixTimestamp(p.start).Month,
ConvertFromUnixTimestamp(p.start).Day)
).ThenBy(p=>!p.isDate)
.ThenBy(p=>p.title).ToList();
List finalList=新列表();
对于(int i=0;i
或客户端,fullcalendar似乎有:

function segCmp(a, b) {
    //return (b.msLength - a.msLength) * 100 + (a.event.start - b.event.start);
    return (a.event.start - b.event.start);
}


function segsCollide(seg1, seg2) {
    //return seg1.end > seg2.start && seg1.start < seg2.end;
    return false;
}



/* Event Sorting
-----------------------------------------------------------------------------*/


// event rendering utilities
function sliceSegs(events, visEventEnds, start, end) {
    var segs = [],
        i, len=events.length, event,
        eventStart, eventEnd,
        segStart, segEnd,
        isStart, isEnd;
    for (i=0; i<len; i++) {
        event = events[i];
        eventStart = event.start;
        eventEnd = visEventEnds[i];
        if (eventEnd > start && eventStart < end) {
            if (eventStart < start) {
                segStart = cloneDate(start);
                isStart = false;
            }else{
                segStart = eventStart;
                isStart = true;
            }
            if (eventEnd > end) {
                segEnd = cloneDate(end);
                isEnd = false;
            }else{
                segEnd = eventEnd;
                isEnd = true;
            }
            segs.push({
                event: event,
                start: segStart,
                end: segEnd,
                isStart: isStart,
                isEnd: isEnd,
                msLength: segEnd - segStart
            });
        }
    } 
    return segs.sort(segCmp);
}


// event rendering calculation utilities
function stackSegs(segs) {
    var levels = [],
        i, len = segs.length, seg,
        j, collide, k;
    for (i=0; i<len; i++) {
        seg = segs[i];
        j = 0; // the level index where seg should belong
        while (true) {
            collide = false;
            if (levels[j]) {
                for (k=0; k<levels[j].length; k++) {
                    if (segsCollide(levels[j][k], seg)) {
                        collide = true;
                        break;
                    }
                }
            }
            if (collide) {
                j++;
            }else{
                break;
            }
        }
        if (levels[j]) {
            levels[j].push(seg);
        }else{
            levels[j] = [seg];
        }
    }
    return levels;
}
功能segCmp(a、b){
//返回(b.msLength-a.msLength)*100+(a.event.start-b.event.start);
返回(a.event.start-b.event.start);
}
功能segsCollide(seg1、seg2){
//返回seg1.end>seg2.start&&seg1.start结束){
segEnd=克隆酸盐(end);
isEnd=假;
}否则{
segEnd=eventEnd;
isEnd=真;
}
分段推进({
事件:事件,,
开始:segStart,
完:赛根德,,
isStart:isStart,
isEnd:isEnd,
msLength:segEnd-segStart
});
}
} 
返回分段排序(segCmp);
}
//事件呈现计算实用程序
函数stackSegs(segs){
风险值水平=[],
i、 len=分段长度,分段,
j、 碰撞,k;
对于(i=0;i