Improve all day events with different timezones

pull/1/head
yflory 4 years ago
parent aed2cbc5eb
commit 56b9ec0aa0

@ -104,10 +104,6 @@ Messages.calendar_allDay = "All day";
}); });
}; };
var newEvent = function (data, cb) { var newEvent = function (data, cb) {
var start = data.start;
var end = data.end;
data.start = +new Date(start._date);
data.end = +new Date(end._date);
APP.module.execCommand('CREATE_EVENT', data, function (obj) { APP.module.execCommand('CREATE_EVENT', data, function (obj) {
if (obj && obj.error) { return void cb(obj.error); } if (obj && obj.error) { return void cb(obj.error); }
cb(null, obj); cb(null, obj);
@ -173,6 +169,14 @@ Messages.calendar_allDay = "All day";
var obj = data.content[uid]; var obj = data.content[uid];
obj.title = obj.title || ""; obj.title = obj.title || "";
obj.location = obj.location || ""; obj.location = obj.location || "";
if (obj.isAllDay && obj.startDay) { obj.start = +new Date(obj.startDay); }
if (obj.isAllDay && obj.endDay) {
var endDate = new Date(obj.endDay);
endDate.setHours(23);
endDate.setMinutes(59);
endDate.setSeconds(59);
obj.end = +endDate;
}
if (c.readOnly) { if (c.readOnly) {
obj.isReadOnly = true; obj.isReadOnly = true;
} }
@ -678,17 +682,28 @@ Messages.calendar_allDay = "All day";
// Use template to hide "recurrenceRule" from the detailPopup or at least to use // Use template to hide "recurrenceRule" from the detailPopup or at least to use
// a non technical value // a non technical value
var startDate = event.start._date;
var endDate = event.end._date;
var startDay, endDay;
if (event.isAllDay) {
startDay = startDate.getFullYear() + '-' + (startDate.getMonth()+1) + '-' + startDate.getDate();
endDay = endDate.getFullYear() + '-' + (endDate.getMonth()+1) + '-' + endDate.getDate();
}
var schedule = { var schedule = {
id: Util.uid(), id: Util.uid(),
calendarId: event.calendarId, calendarId: event.calendarId,
title: Util.fixHTML(event.title), title: Util.fixHTML(event.title),
category: "time", category: "time",
location: Util.fixHTML(event.location), location: Util.fixHTML(event.location),
start: event.start, start: +startDate,
startDay: startDay,
isAllDay: event.isAllDay, isAllDay: event.isAllDay,
end: event.end, end: +endDate,
endDay: endDay
}; };
newEvent(schedule, function (err) { newEvent(schedule, function (err) {
if (err) { if (err) {
console.error(err); console.error(err);

@ -624,8 +624,20 @@ ctx.calendars[channel] = {
var id = data.calendarId; var id = data.calendarId;
var c = ctx.calendars[id]; var c = ctx.calendars[id];
if (!c) { return void cb({error: "ENOENT"}); } if (!c) { return void cb({error: "ENOENT"}); }
var startDate = new Date(data.start);
var endDate = new Date(data.end);
if (data.isAllDay) {
data.startDay = startDate.getFullYear() + '-' + (startDate.getMonth()+1) + '-' + startDate.getDate();
data.endDay = endDate.getFullYear() + '-' + (endDate.getMonth()+1) + '-' + endDate.getDate();
} else {
delete ev.startDay;
delete ev.endDay;
}
c.proxy.content = c.proxy.content || {}; c.proxy.content = c.proxy.content || {};
c.proxy.content[data.id] = data; c.proxy.content[data.id] = data;
Realtime.whenRealtimeSyncs(c.lm.realtime, function () { Realtime.whenRealtimeSyncs(c.lm.realtime, function () {
sendUpdate(ctx, c); sendUpdate(ctx, c);
cb(); cb();
@ -655,6 +667,16 @@ ctx.calendars[channel] = {
ev[key] = changes[key]; ev[key] = changes[key];
}); });
var startDate = new Date(ev.start);
var endDate = new Date(ev.end);
if (ev.isAllDay) {
ev.startDay = startDate.getFullYear() + '-' + (startDate.getMonth()+1) + '-' + startDate.getDate();
ev.endDay = endDate.getFullYear() + '-' + (endDate.getMonth()+1) + '-' + endDate.getDate();
} else {
delete ev.startDay;
delete ev.endDay;
}
// Move to a different calendar? // Move to a different calendar?
if (changes.calendarId && newC) { if (changes.calendarId && newC) {
newC.proxy.content[data.ev.id] = Util.clone(ev); newC.proxy.content[data.ev.id] = Util.clone(ev);

Loading…
Cancel
Save