Javascript 试图找出如何处理周视图日历中的事件重叠?

Javascript 试图找出如何处理周视图日历中的事件重叠?,javascript,calendar,Javascript,Calendar,我试图找出如何处理日历事件重叠的方式谷歌日历做它。 我有一系列带有开始和结束日期的事件 目前,我将整个数组按从最早到最晚的顺序排序,然后找出一个事件重叠了多少次以及另一个事件重叠了多少次。我不确定该从这里走到哪里,我觉得我可以使用这些值来计算正确的css宽度%和左%。我走对了吗??我是作为一个学校项目来做的。提前谢谢你 编辑:我看了马库斯·贾德罗以前回答过的类似问题,找到了我想要的答案。非常感谢你 function getOverlappingEvents(eventArray) { var r

我试图找出如何处理日历事件重叠的方式谷歌日历做它。 我有一系列带有开始和结束日期的事件

目前,我将整个数组按从最早到最晚的顺序排序,然后找出一个事件重叠了多少次以及另一个事件重叠了多少次。我不确定该从这里走到哪里,我觉得我可以使用这些值来计算正确的css宽度%和左%。我走对了吗??我是作为一个学校项目来做的。提前谢谢你

编辑:我看了马库斯·贾德罗以前回答过的类似问题,找到了我想要的答案。非常感谢你

function getOverlappingEvents(eventArray) {
var result = [];
eventArray.sort(function(a, b) {
    return a.eventStart - b.eventStart;
});

for (var i = 0; i < eventArray.length; i++) {
    var overapped = 0;
    var overlaps = 0;
    var isdate = new Date(eventArray[i].eventStart);
    var iedate = new Date(eventArray[i].eventEnd);
    for (var x = 0; x < eventArray.length; x++) {
        var xsdate = new Date(eventArray[x].eventStart);
        var xedate = new Date(eventArray[x].eventEnd);
        if(isdate <= xsdate && iedate > xsdate){
            overapped++;
        }else if(isdate >= xsdate && isdate < xedate){
            overlaps++;
        }
    }
    result.push([eventArray[i].calEventID, overapped, overlaps]);
}
return result;
}

}

可能存在的副本
function toDom(events, ids){
var domEvents = [];
for (var i = 0; i < events.length; i++) {
    var id = events[i].calEventID;
    var width = 0;
    var left = 0;
    var sDate = new Date(events[i].eventStart);
    var eDate = new Date(events[i].eventEnd);
    var time = sDate.format("htt") + " - " + eDate.format("htt");
    var duration = (eDate.getHours() * 60 + eDate.getMinutes()) - (sDate.getHours() * 60 + sDate.getMinutes());
    var height = Math.round((duration * 0.75));
    var topOffSet = (sDate.getHours() - 6) * 45 + Math.round(sDate.getMinutes() * 0.75);
    var status = events[i].calStatus;
    var desc = events[i].description;
    var json = {id: id, sDate: sDate, eDate: eDate, status: status, height: height+"px", top: topOffSet+"px", width: width+"%", left: left+"%", desc: desc, time: time};
    console.log(json);
    domEvents.push(json);
}

return domEvents;