-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.ui.calendar.js
108 lines (102 loc) · 3.9 KB
/
app.ui.calendar.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/*
WellMU debugging dashboard v. 0.0.1
Visualizes calendar data
Signals:
calendar_events - Initializes calendar UI with calendar event data
Public functions:
init - initializes the component
clear - resets the component
*/
var calendarUI = (function(calendarUI) {
var _clear = function() {
$('.calendar_events').remove();
}
var _init = function() {
amplify.subscribe('calendar_events', function(data) {
var events = data.events;
var etag = data.events.etag.replace(/"/g, 'A');
etag = etag.replace(/\//g, 'ForwardSlash');
console.log('Calendar data for ' + data.date, events);
var weekdays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
var weekday = weekdays[Date.parse(data.date).getDay()];
var SUMMARY_MAX_LENGTH = 15;
var summary = events.summary;
if(summary.length > SUMMARY_MAX_LENGTH) {
var summary = events.summary.substring(0,SUMMARY_MAX_LENGTH) + '...';
}
if($(".calendar_events-container").length == 0) {
var targetDivID = tabUI.newTab('Calendar');
var HTML = $('<div class="calendar_events-container" id="calendar_events-container"></div>');
$('#' + targetDivID).append(HTML);
}
var HTML = $('<div class="calendar_events table-wrapper" id="calendar_events_'+ etag +'">' +
'<b>Calendar: ' + summary + ' (' + weekday + ')</b></br>' +
'<table id="calendar_events_'+ etag +'_table">'+
'</table>' +
'</div>');
$("#calendar_events-container").append(HTML);
if(typeof(events.items) != 'undefined') {
var result = [];
for(var i = 0; i < events.items.length; i++) {
if(typeof(events.items[i].start) != 'undefined' && typeof(events.items[i].start) != 'undefined') {
console.log(i);
var start, startstr, end, endstr, duration;
if(typeof(events.items[i].start.dateTime) != 'undefined' && typeof(events.items[i].start.dateTime) != 'undefined') {
start = Common.parseUTCToLocalTime(events.items[i].start.dateTime);
startstr = start.toString("HH:mm") + ' - ';
end = Common.parseUTCToLocalTime(events.items[i].end.dateTime);
endstr = end.toString("HH:mm");
duration = end.getTime() - start.getTime();
} else {
startstr = 'All day';
endstr = "";
}
var SUMMARY_MAX_LENGTH = 25 ;
var eventSummary = events.items[i].summary;
if(eventSummary.length > SUMMARY_MAX_LENGTH) {
var eventSummary = events.items[i].summary.substring(0,SUMMARY_MAX_LENGTH) + '...';
}
var HTML = $(
'<tr><td class="cal_start">' + startstr +'</td>'+
'<td class="cal_end">' + endstr + '</td>' +
'<td class="cal_summary">' + eventSummary + '</td></tr>'
);
$('#calendar_events_' + etag + '_table').append(HTML);
// Show only non requrring items
if(duration != undefined) {
result.push(
{
from: start.getTime() - (start.getTimezoneOffset() * 60000), // time in UTC
to: end.getTime() - (end.getTimezoneOffset() * 60000),
label: eventSummary
}
);
}
}
}
result.sort(function(a,b) {
return a.from - b.from;
});
var data = {
id: 'calendar_events' + etag,
tasks: [
{
name: 'Cal. ' + summary.substring(0,10) + '...',
intervals: result
}
]
};
amplify.publish('new_gantt_chart-gantt', data);
} else {
var HTML = $(
'<tr><td class="cal_empty">No events today!</td></tr>'
);
$('#calendar_events_' + etag + '_table').append(HTML);
}
});
};
return {
init: _init,
clear: _clear
}
}());