I'm trying to extend TimelineView so that some events overlap and others are bumped to the next line depending on their status. I can overwrite the _arrangeRows method but can't get the collidingEvents to overwrite. How do I overwrite collidingEvents from the TimelineView?
<script type="text/javascript">
var customTimelineView = kendo.ui.TimelineView.extend({
options: {
name: "customTimelineView",
title: "Custom Time Line",
columnWidth: 30,
},
name: "customTimelineView",
_arrangeRows: function (eventObject, slotRange, eventGroup) {
var test = "test";
var startIndex = slotRange.start.index;
var endIndex = slotRange.end.index;
var rect = eventObject.slotRange.innerRect(eventObject.start, eventObject.end, false);
var rectRight = rect.right + this.options.eventMinWidth;
//var events = kendo.ui.SchedulerView.collidingEvents(slotRange.events(), rect.left, rectRight);
var events = collidingEvents(slotRange.events(), rect.left, rectRight);
slotRange.addEvent({
slotIndex: startIndex,
start: startIndex,
end: endIndex,
rectLeft: rect.left,
rectRight: rectRight,
element: eventObject.element,
uid: eventObject.uid
});
events.push({
start: startIndex,
end: endIndex,
uid: eventObject.uid
});
var rows = kendo.ui.SchedulerView.createRows(events);
if (eventGroup.maxRowCount < rows.length) {
eventGroup.maxRowCount = rows.length;
}
for (var idx = 0, length = rows.length; idx < length; idx++) {
var rowEvents = rows[idx].events;
for (var j = 0, eventLength = rowEvents.length; j < eventLength; j++) {
eventGroup.events[rowEvents[j].uid].rowIndex = idx;
}
}
},
});
function collidingEvents(elements, left, right) {
var idx, startPosition, overlaps, endPosition;
for (idx = elements.length - 1; idx >= 0; idx--) {
startPosition = elements[idx].rectLeft;
endPosition = elements[idx].rectRight;
overlaps = startPosition <= left && endPosition >= left;
if (overlaps || startPosition >= left && endPosition <= right || left <= startPosition && right >= startPosition) {
if (startPosition < left) {
left = startPosition;
}
if (endPosition > right) {
right = endPosition;
}
}
}
return kendo.ui.SchedulerView.eventsForSlot(elements, left, right);
}
</script>
Also, why are some of the functions prefixed with "_"? ie What is difference between "render()" and "_render()"?