1
WorkerScript.onMessage = function(message) {
2
var processedEvents = dayEventsMap(message.events)
3
WorkerScript.sendMessage({'reply': processedEvents})
6
function sortByStartAndSize(eventA, eventB)
8
var sort = sortEventsByStart(eventA, eventB)
10
sort = sortEventsBySize(eventA, eventB)
14
function sortEventsByStart(eventA, eventB)
16
if (eventA.startTime < eventB.startTime)
18
else if (eventA.startTime > eventB.startTime)
24
function sortEventsBySize(eventA, eventB)
26
var eventAEndTime = eventA.endTimeInSecs
27
var eventBEndTime = eventB.endTimeInSecs
28
if (eventAEndTime > eventBEndTime)
30
else if (eventAEndTime < eventBEndTime)
36
function findOptimalY(intersections)
38
if (intersections.length === 0)
45
for(var i=0; i < intersections.length; i++) {
46
if (optimalY === intersections[i].y) {
58
function dayEventsMap(eventsInfo)
60
eventsInfo.sort(sortByStartAndSize)
64
for(var i=0; i < eventsInfo.length; i++) {
65
var eventA = eventsInfo[i]
67
for(var y=0; y < eventsInfo.length; y++) {
70
var eventB = eventsInfo[y]
71
if ((eventA.startTime < eventB.endTime) &&
72
(eventB.startTime < eventA.endTime)) {
76
eventA.intersectionCount = line.length - 1
81
for (var l=0; l < lines.length; l++) {
86
if (eventA.y === -1) {
87
eventA.y = findOptimalY(line)
89
var time = eventA.startTime
90
for (var i=1; i < line.length; i++) {
92
if ((event.startTime === time) && (event.y === -1)) {
93
event.y = findOptimalY(line)
98
for (var l=0; l < lines.length; l++) {
102
for (var i=1; i < line.length; i++) {
108
eventA.width = 1 / (maxY + 1)