summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--client/components/boards/boardBody.js32
1 files changed, 31 insertions, 1 deletions
diff --git a/client/components/boards/boardBody.js b/client/components/boards/boardBody.js
index dc6b9bef..68ac8b27 100644
--- a/client/components/boards/boardBody.js
+++ b/client/components/boards/boardBody.js
@@ -156,6 +156,8 @@ BlazeComponent.extendComponent({
return {
id: 'calendar-view',
defaultView: 'agendaDay',
+ editable: true,
+ timezone: 'local',
header: {
left: 'title today prev,next',
center: 'agendaDay,listDay,timelineDay agendaWeek,listWeek,timelineWeek month,timelineMonth timelineYear',
@@ -178,10 +180,11 @@ BlazeComponent.extendComponent({
const events = [];
currentBoard.cardsInInterval(start.toDate(), end.toDate()).forEach(function(card){
events.push({
- id: card.id,
+ id: card._id,
title: card.title,
start: card.startAt,
end: card.endAt,
+ allDay: Math.abs(card.endAt.getTime() - card.startAt.getTime()) / 1000 === 24*3600,
url: FlowRouter.url('card', {
boardId: currentBoard._id,
slug: currentBoard.slug,
@@ -191,6 +194,33 @@ BlazeComponent.extendComponent({
});
callback(events);
},
+ eventResize(event, delta, revertFunc) {
+ let isOk = false;
+ const card = Cards.findOne(event.id);
+
+ if (card) {
+ card.setEnd(event.end.toDate());
+ isOk = true;
+ }
+ if (!isOk) {
+ revertFunc();
+ }
+ },
+ eventDrop(event, delta, revertFunc) {
+ let isOk = false;
+ const card = Cards.findOne(event.id);
+ if (card) {
+ // TODO: add a flag for allDay events
+ if (!event.allDay) {
+ card.setStart(event.start.toDate());
+ card.setEnd(event.end.toDate());
+ isOk = true;
+ }
+ }
+ if (!isOk) {
+ revertFunc();
+ }
+ },
};
},
}).register('calendarView');