summaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authorSam X. Chen <sam.xi.chen@gmail.com>2019-09-26 10:53:40 -0400
committerSam X. Chen <sam.xi.chen@gmail.com>2019-09-26 10:53:40 -0400
commit62b72a03c4889377169411c8cdbf372c71cac1af (patch)
tree5328397ddf7ae571038ffe5d201fb2d77eadf742 /client
parentd5cff1ec48bf9ab13a32576e7495ae54c3d2c0f7 (diff)
downloadwekan-62b72a03c4889377169411c8cdbf372c71cac1af.tar.gz
wekan-62b72a03c4889377169411c8cdbf372c71cac1af.tar.bz2
wekan-62b72a03c4889377169411c8cdbf372c71cac1af.zip
Add feature: Add due timeline into Calendar view
Diffstat (limited to 'client')
-rw-r--r--client/components/boards/boardBody.js52
-rw-r--r--client/lib/datepicker.js10
2 files changed, 45 insertions, 17 deletions
diff --git a/client/components/boards/boardBody.js b/client/components/boards/boardBody.js
index 07cd306a..d64636f4 100644
--- a/client/components/boards/boardBody.js
+++ b/client/components/boards/boardBody.js
@@ -309,26 +309,46 @@ BlazeComponent.extendComponent({
events(start, end, timezone, callback) {
const currentBoard = Boards.findOne(Session.get('currentBoard'));
const events = [];
+ const pushEvent = function(card, title, start, end, extraCls) {
+ start = start || card.startAt;
+ end = end || card.endAt;
+ title = title || card.title;
+ const className =
+ (extraCls ? `${extraCls} ` : '') +
+ (card.color ? `calendar-event-${card.color}` : '');
+ events.push({
+ id: card._id,
+ title,
+ start,
+ end: end || card.endAt,
+ allDay:
+ Math.abs(end.getTime() - start.getTime()) / 1000 === 24 * 3600,
+ url: FlowRouter.url('card', {
+ boardId: currentBoard._id,
+ slug: currentBoard.slug,
+ cardId: card._id,
+ }),
+ className,
+ });
+ };
currentBoard
.cardsInInterval(start.toDate(), end.toDate())
.forEach(function(card) {
- events.push({
- 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,
- cardId: card._id,
- }),
- className: card.color ? `calendar-event-${card.color}` : null,
- });
+ pushEvent(card);
+ });
+ currentBoard
+ .cardsDueInBetween(start.toDate(), end.toDate())
+ .forEach(function(card) {
+ pushEvent(
+ card,
+ `${card.title} ${TAPi18n.__('card-due')}`,
+ card.dueAt,
+ new Date(card.dueAt.getTime() + 36e5),
+ );
});
+ events.sort(function(first, second) {
+ return first.id > second.id ? 1 : -1;
+ });
callback(events);
},
eventResize(event, delta, revertFunc) {
diff --git a/client/lib/datepicker.js b/client/lib/datepicker.js
index eb5b60b8..da44bbc5 100644
--- a/client/lib/datepicker.js
+++ b/client/lib/datepicker.js
@@ -21,7 +21,15 @@ DatePicker = BlazeComponent.extendComponent({
function(evt) {
this.find('#date').value = moment(evt.date).format('L');
this.error.set('');
- this.find('#time').focus();
+ const timeInput = this.find('#time');
+ timeInput.focus();
+ if (!timeInput.value) {
+ const currentHour = evt.date.getHours();
+ const defaultMoment = moment(
+ currentHour > 0 ? evt.date : '1970-01-01 08:00:00',
+ ); // default to 8:00 am local time
+ timeInput.value = defaultMoment.format('LT');
+ }
}.bind(this),
);