Browse Source

Merge branch 'rjevnikar-additionalDates' into devel

Lauri Ojansivu 7 năm trước cách đây
mục cha
commit
5e88cb24cb
51 tập tin đã thay đổi với 499 bổ sung60 xóa
  1. 3 2
      CHANGELOG.md
  2. 124 2
      client/components/cards/cardDate.js
  3. 10 0
      client/components/cards/cardDate.styl
  4. 33 12
      client/components/cards/cardDetails.jade
  5. 6 0
      client/components/cards/cardDetails.js
  6. 3 1
      client/components/cards/cardDetails.styl
  7. 1 1
      client/components/cards/checklists.jade
  8. 7 1
      i18n/ar.i18n.json
  9. 7 1
      i18n/bg.i18n.json
  10. 7 1
      i18n/br.i18n.json
  11. 7 1
      i18n/ca.i18n.json
  12. 7 1
      i18n/cs.i18n.json
  13. 7 1
      i18n/de.i18n.json
  14. 7 1
      i18n/el.i18n.json
  15. 7 1
      i18n/en-GB.i18n.json
  16. 7 1
      i18n/en.i18n.json
  17. 7 1
      i18n/eo.i18n.json
  18. 7 1
      i18n/es-AR.i18n.json
  19. 7 1
      i18n/es.i18n.json
  20. 7 1
      i18n/eu.i18n.json
  21. 7 1
      i18n/fa.i18n.json
  22. 7 1
      i18n/fi.i18n.json
  23. 7 1
      i18n/fr.i18n.json
  24. 7 1
      i18n/gl.i18n.json
  25. 7 1
      i18n/he.i18n.json
  26. 7 1
      i18n/hu.i18n.json
  27. 7 1
      i18n/hy.i18n.json
  28. 7 1
      i18n/id.i18n.json
  29. 7 1
      i18n/ig.i18n.json
  30. 7 1
      i18n/it.i18n.json
  31. 7 1
      i18n/ja.i18n.json
  32. 7 1
      i18n/lv.i18n.json
  33. 7 1
      i18n/mn.i18n.json
  34. 7 1
      i18n/nb.i18n.json
  35. 7 1
      i18n/nl.i18n.json
  36. 7 1
      i18n/pl.i18n.json
  37. 7 1
      i18n/pt-BR.i18n.json
  38. 7 1
      i18n/pt.i18n.json
  39. 7 1
      i18n/ro.i18n.json
  40. 7 1
      i18n/ru.i18n.json
  41. 7 1
      i18n/sr.i18n.json
  42. 7 1
      i18n/sv.i18n.json
  43. 7 1
      i18n/ta.i18n.json
  44. 7 1
      i18n/th.i18n.json
  45. 7 1
      i18n/tr.i18n.json
  46. 7 1
      i18n/uk.i18n.json
  47. 7 1
      i18n/vi.i18n.json
  48. 7 1
      i18n/zh-CN.i18n.json
  49. 7 1
      i18n/zh-TW.i18n.json
  50. 24 0
      models/cards.js
  51. 1 0
      models/checklists.js

+ 3 - 2
CHANGELOG.md

@@ -2,9 +2,10 @@
 
 This release adds the following new features:
 
-- [Checklist items sort fix, and checklist sort capability](https://github.com/wekan/wekan/pull/1543).
+- [Checklist items sort fix, and checklist sort capability](https://github.com/wekan/wekan/pull/1543);
+- [Add Received Date and End Date. Between them is already existing Start and Due Date](https://github.com/wekan/wekan/pull/1550).
 
-Thanks to GitHub user andresmanelli for contributions.
+Thanks to GitHub users andresmanelli and rjevnikar for their contributions.
 
 # v0.78 2018-03-17 Wekan release
 

+ 124 - 2
client/components/cards/cardDate.js

@@ -1,4 +1,4 @@
-// Edit start & due dates
+// Edit received, start, due & end dates
 const EditCardDate = BlazeComponent.extendComponent({
   template() {
     return 'editCardDate';
@@ -92,6 +92,23 @@ Template.dateBadge.helpers({
   },
 });
 
+// editCardReceivedDatePopup
+(class extends EditCardDate {
+  onCreated() {
+    super.onCreated();
+    this.data().receivedAt && this.date.set(moment(this.data().receivedAt));
+  }
+
+  _storeDate(date) {
+    this.card.setReceived(date);
+  }
+
+  _deleteDate() {
+    this.card.unsetReceived();
+  }
+}).register('editCardReceivedDatePopup');
+
+
 // editCardStartDatePopup
 (class extends EditCardDate {
   onCreated() {
@@ -99,6 +116,13 @@ Template.dateBadge.helpers({
     this.data().startAt && this.date.set(moment(this.data().startAt));
   }
 
+  onRendered() {
+    super.onRendered();
+    if (moment.isDate(this.card.receivedAt)) {
+      this.$('.js-datepicker').datepicker('setStartDate', this.card.receivedAt);
+    }
+  }
+
   _storeDate(date) {
     this.card.setStart(date);
   }
@@ -131,8 +155,31 @@ Template.dateBadge.helpers({
   }
 }).register('editCardDueDatePopup');
 
+// editCardEndDatePopup
+(class extends EditCardDate {
+  onCreated() {
+    super.onCreated();
+    this.data().endAt && this.date.set(moment(this.data().endAt));
+  }
+
+  onRendered() {
+    super.onRendered();
+    if (moment.isDate(this.card.startAt)) {
+      this.$('.js-datepicker').datepicker('setStartDate', this.card.startAt);
+    }
+  }
+
+  _storeDate(date) {
+    this.card.setEnd(date);
+  }
+
+  _deleteDate() {
+    this.card.unsetEnd();
+  }
+}).register('editCardEndDatePopup');
+
 
-// Display start & due dates
+// Display received, start, due & end dates
 const CardDate = BlazeComponent.extendComponent({
   template() {
     return 'dateBadge';
@@ -161,6 +208,36 @@ const CardDate = BlazeComponent.extendComponent({
   },
 });
 
+class CardReceivedDate extends CardDate {
+  onCreated() {
+    super.onCreated();
+    const self = this;
+    self.autorun(() => {
+      self.date.set(moment(self.data().receivedAt));
+    });
+  }
+
+  classes() {
+    let classes = 'received-date' + ' ';
+    if (this.date.get().isBefore(this.now.get(), 'minute') &&
+        this.now.get().isBefore(this.data().dueAt)) {
+      classes += 'current';
+    }
+    return classes;
+  }
+
+  showTitle() {
+    return `${TAPi18n.__('card-received-on')} ${this.date.get().format('LLLL')}`;
+  }
+
+  events() {
+    return super.events().concat({
+      'click .js-edit-date': Popup.open('editCardReceivedDate'),
+    });
+  }
+}
+CardReceivedDate.register('cardReceivedDate');
+
 class CardStartDate extends CardDate {
   onCreated() {
     super.onCreated();
@@ -223,6 +300,44 @@ class CardDueDate extends CardDate {
 }
 CardDueDate.register('cardDueDate');
 
+class CardEndDate extends CardDate {
+  onCreated() {
+    super.onCreated();
+    const self = this;
+    self.autorun(() => {
+      self.date.set(moment(self.data().endAt));
+    });
+  }
+
+  classes() {
+    let classes = 'end-date' + ' ';
+    if (this.data.dueAt.diff(this.date.get(), 'days') >= 2)
+      classes += 'long-overdue';
+    else if (this.data.dueAt.diff(this.date.get(), 'days') >= 0)
+      classes += 'due';
+    else if (this.data.dueAt.diff(this.date.get(), 'days') >= -2)
+      classes += 'almost-due';
+    return classes;
+  }
+
+  showTitle() {
+    return `${TAPi18n.__('card-end-on')} ${this.date.get().format('LLLL')}`;
+  }
+
+  events() {
+    return super.events().concat({
+      'click .js-edit-date': Popup.open('editCardEndDate'),
+    });
+  }
+}
+CardEndDate.register('cardEndDate');
+
+(class extends CardReceivedDate {
+  showDate() {
+    return this.date.get().format('l');
+  }
+}).register('minicardReceivedDate');
+
 (class extends CardStartDate {
   showDate() {
     return this.date.get().format('l');
@@ -234,3 +349,10 @@ CardDueDate.register('cardDueDate');
     return this.date.get().format('l');
   }
 }).register('minicardDueDate');
+
+(class extends CardEndDate {
+  showDate() {
+    return this.date.get().format('l');
+  }
+}).register('minicardEndDate');
+

+ 10 - 0
client/components/cards/cardDate.styl

@@ -49,6 +49,11 @@
     &:hover, &.is-active
       background-color: darken(#fd5d47, 7)
 
+  &.end-date
+    time
+      &::before
+        content: "\f253"  // symbol: fa-hourglass-end
+
   &.due-date
     time
       &::before
@@ -59,6 +64,11 @@
       &::before
         content: "\f08b"  // symbol: fa-sign-out
 
+  &.received-date
+    time
+      &::before
+        content: "\f251"  // symbol: fa-hourglass-start
+
   time
     &::before
       font: normal normal normal 14px/1 FontAwesome

+ 33 - 12
client/components/cards/cardDetails.jade

@@ -17,6 +17,35 @@ template(name="cardDetails")
     if archived
       p.warning {{_ 'card-archived'}}
 
+    .card-details-items
+      .card-details-item.card-details-item-received
+        h3.card-details-item-title {{_ 'card-received'}}
+        if receivedAt
+          +cardReceivedDate
+        else
+          a.js-received-date {{_ 'add'}}
+
+      .card-details-item.card-details-item-start
+        h3.card-details-item-title {{_ 'card-start'}}
+        if startAt
+          +cardStartDate
+        else
+          a.js-start-date {{_ 'add'}}
+
+      .card-details-item.card-details-item-due
+        h3.card-details-item-title {{_ 'card-due'}}
+        if dueAt
+          +cardDueDate
+        else
+          a.js-due-date {{_ 'add'}}
+
+      .card-details-item.card-details-item-end
+        h3.card-details-item-title {{_ 'card-end'}}
+        if endAt
+          +cardEndDate
+        else
+          a.js-end-date {{_ 'add'}}
+
     .card-details-items
       .card-details-item.card-details-item-members
         h3.card-details-item-title {{_ 'members'}}
@@ -36,16 +65,6 @@ template(name="cardDetails")
           a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}")
             i.fa.fa-plus
 
-      if startAt
-        .card-details-item.card-details-item-start
-          h3.card-details-item-title {{_ 'card-start'}}
-          +cardStartDate
-
-      if dueAt
-        .card-details-item.card-details-item-due
-          h3.card-details-item-title {{_ 'card-due'}}
-          +cardDueDate
-
     .card-details-items
       if spentTime
         .card-details-item.card-details-item-spent
@@ -86,7 +105,7 @@ template(name="cardDetails")
     +checklists(cardId = _id)
 
     hr
-    h2
+    h3
       i.fa.fa-paperclip
       | {{_ 'attachments'}}
 
@@ -94,7 +113,7 @@ template(name="cardDetails")
 
     hr
     .activity-title
-      h2 {{ _ 'activity'}}
+      h3 {{ _ 'activity'}}
       if currentUser.isBoardMember
         .material-toggle-switch
           span.toggle-switch-title {{_ 'hide-system-messages'}}
@@ -124,8 +143,10 @@ template(name="cardDetailsActionsPopup")
       li: a.js-members {{_ 'card-edit-members'}}
       li: a.js-labels {{_ 'card-edit-labels'}}
       li: a.js-attachments {{_ 'card-edit-attachments'}}
+      li: a.js-received-date {{_ 'editCardReceivedDatePopup-title'}}
       li: a.js-start-date {{_ 'editCardStartDatePopup-title'}}
       li: a.js-due-date {{_ 'editCardDueDatePopup-title'}}
+      li: a.js-end-date {{_ 'editCardEndDatePopup-title'}}
       li: a.js-spent-time {{_ 'editCardSpentTimePopup-title'}}
     hr
     ul.pop-over-list

+ 6 - 0
client/components/cards/cardDetails.js

@@ -149,6 +149,10 @@ BlazeComponent.extendComponent({
       'click .js-member': Popup.open('cardMember'),
       'click .js-add-members': Popup.open('cardMembers'),
       'click .js-add-labels': Popup.open('cardLabels'),
+      'click .js-received-date': Popup.open('editCardReceivedDate'),
+      'click .js-start-date': Popup.open('editCardStartDate'),
+      'click .js-due-date': Popup.open('editCardDueDate'),
+      'click .js-end-date': Popup.open('editCardEndDate'),
       'mouseenter .js-card-details' () {
         this.parentComponent().parentComponent().showOverlay.set(true);
         this.parentComponent().parentComponent().mouseHasEnterCardDetails = true;
@@ -211,8 +215,10 @@ Template.cardDetailsActionsPopup.events({
   'click .js-members': Popup.open('cardMembers'),
   'click .js-labels': Popup.open('cardLabels'),
   'click .js-attachments': Popup.open('cardAttachments'),
+  'click .js-received-date': Popup.open('editCardReceivedDate'),
   'click .js-start-date': Popup.open('editCardStartDate'),
   'click .js-due-date': Popup.open('editCardDueDate'),
+  'click .js-end-date': Popup.open('editCardEndDate'),
   'click .js-spent-time': Popup.open('editCardSpentTime'),
   'click .js-move-card': Popup.open('moveCard'),
   'click .js-copy-card': Popup.open('copyCard'),

+ 3 - 1
client/components/cards/cardDetails.styl

@@ -77,8 +77,10 @@
         margin-right: 0
       &.card-details-item-labels,
       &.card-details-item-members,
+      &.card-details-item-received,
       &.card-details-item-start,
-      &.card-details-item-due
+      &.card-details-item-due,
+      &.card-details-item-end
         width: 50%
         flex-shrink: 1
 

+ 1 - 1
client/components/cards/checklists.jade

@@ -1,5 +1,5 @@
 template(name="checklists")
-  h2 {{_ 'checklists'}}
+  h3 {{_ 'checklists'}}
   if toggleDeleteDialog.get
     .board-overlay#card-details-overlay
     +checklistDeleteDialog(checklist = checklistToDelete)

+ 7 - 1
i18n/ar.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "السماح بتغيير البريد الإلكتروني",
     "createdAt": "Created at",
     "verified": "Verified",
-    "active": "Active"
+    "active": "Active",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/bg.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Разреши промяна на имейла",
     "createdAt": "Създаден на",
     "verified": "Потвърден",
-    "active": "Активен"
+    "active": "Активен",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/br.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Allow Email Change",
     "createdAt": "Created at",
     "verified": "Verified",
-    "active": "Active"
+    "active": "Active",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/ca.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Permet modificar correu electrònic",
     "createdAt": "Creat ",
     "verified": "Verificat",
-    "active": "Actiu"
+    "active": "Actiu",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/cs.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Povolit změnu Emailu",
     "createdAt": "Created at",
     "verified": "Verified",
-    "active": "Active"
+    "active": "Active",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/de.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Ändern der E-Mailadresse zulassen",
     "createdAt": "Erstellt am",
     "verified": "Geprüft",
-    "active": "Aktiv"
+    "active": "Aktiv",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/el.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Allow Email Change",
     "createdAt": "Created at",
     "verified": "Verified",
-    "active": "Active"
+    "active": "Active",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/en-GB.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Allow Email Change",
     "createdAt": "Created at",
     "verified": "Verified",
-    "active": "Active"
+    "active": "Active",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/en.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Allow Email Change",
     "createdAt": "Created at",
     "verified": "Verified",
-    "active": "Active"
+    "active": "Active",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/eo.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Allow Email Change",
     "createdAt": "Created at",
     "verified": "Verified",
-    "active": "Active"
+    "active": "Active",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/es-AR.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Permitir Cambio de Email",
     "createdAt": "Creado en",
     "verified": "Verificado",
-    "active": "Activo"
+    "active": "Activo",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/es.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Permitir cambiar el correo electrónico",
     "createdAt": "Creado en",
     "verified": "Verificado",
-    "active": "Activo"
+    "active": "Activo",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/eu.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Baimendu e-mail aldaketa",
     "createdAt": "Noiz sortua",
     "verified": "Egiaztatuta",
-    "active": "Gaituta"
+    "active": "Gaituta",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/fa.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "اجازه تغییر رایانامه",
     "createdAt": "ساخته شده در",
     "verified": "معتبر",
-    "active": "فعال"
+    "active": "فعال",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/fi.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Salli sähköpostiosoitteen muuttaminen",
     "createdAt": "Luotu",
     "verified": "Varmistettu",
-    "active": "Aktiivinen"
+    "active": "Aktiivinen",
+    "card-received": "Vastaanotettu",
+    "card-received-on": "Vastaanotettu",
+    "card-end": "Loppuu",
+    "card-end-on": "Loppuu",
+    "editCardReceivedDatePopup-title": "Vaihda vastaanottamispäivää",
+    "editCardEndDatePopup-title": "Vaihda loppumispäivää"
 }

+ 7 - 1
i18n/fr.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Autoriser le changement d'adresse mail",
     "createdAt": "Créé à",
     "verified": "Vérifié",
-    "active": "Actif"
+    "active": "Actif",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/gl.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Allow Email Change",
     "createdAt": "Created at",
     "verified": "Verified",
-    "active": "Active"
+    "active": "Active",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/he.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "אפשר שינוי דוא\"ל",
     "createdAt": "נוצר ב",
     "verified": "עבר אימות",
-    "active": "פעיל"
+    "active": "פעיל",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/hu.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "E-mail megváltoztatásának engedélyezése",
     "createdAt": "Létrehozva",
     "verified": "Ellenőrizve",
-    "active": "Aktív"
+    "active": "Aktív",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/hy.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Allow Email Change",
     "createdAt": "Created at",
     "verified": "Verified",
-    "active": "Active"
+    "active": "Active",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/id.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Allow Email Change",
     "createdAt": "Created at",
     "verified": "Verified",
-    "active": "Active"
+    "active": "Active",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/ig.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Allow Email Change",
     "createdAt": "Ekere na",
     "verified": "Verified",
-    "active": "Active"
+    "active": "Active",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/it.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Permetti modifica dell'email",
     "createdAt": "creato alle",
     "verified": "Verificato",
-    "active": "Attivo"
+    "active": "Attivo",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/ja.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "メールアドレスの変更を許可",
     "createdAt": "Created at",
     "verified": "Verified",
-    "active": "Active"
+    "active": "Active",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/lv.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Allow Email Change",
     "createdAt": "Created at",
     "verified": "Verified",
-    "active": "Active"
+    "active": "Active",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/mn.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Allow Email Change",
     "createdAt": "Created at",
     "verified": "Verified",
-    "active": "Active"
+    "active": "Active",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/nb.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Allow Email Change",
     "createdAt": "Created at",
     "verified": "Verified",
-    "active": "Active"
+    "active": "Active",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/nl.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Sta E-mailadres wijzigingen toe",
     "createdAt": "Gemaakt op",
     "verified": "Geverifieerd",
-    "active": "Actief"
+    "active": "Actief",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/pl.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Zezwól na zmianę adresu email",
     "createdAt": "Stworzono o",
     "verified": "Zweryfikowane",
-    "active": "Aktywny"
+    "active": "Aktywny",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/pt-BR.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Permitir Mudança de Email",
     "createdAt": "Criado em",
     "verified": "Verificado",
-    "active": "Ativo"
+    "active": "Ativo",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/pt.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Allow Email Change",
     "createdAt": "Created at",
     "verified": "Verificado",
-    "active": "Ativo"
+    "active": "Ativo",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/ro.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Allow Email Change",
     "createdAt": "Created at",
     "verified": "Verified",
-    "active": "Active"
+    "active": "Active",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/ru.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Разрешить изменение электронной почты",
     "createdAt": "Создано на",
     "verified": "Проверено",
-    "active": "Действующий"
+    "active": "Действующий",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/sr.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Allow Email Change",
     "createdAt": "Created at",
     "verified": "Verified",
-    "active": "Active"
+    "active": "Active",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/sv.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Tillåt e-poständring",
     "createdAt": "Skapad vid",
     "verified": "Verifierad",
-    "active": "Aktiv"
+    "active": "Aktiv",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/ta.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Allow Email Change",
     "createdAt": "Created at",
     "verified": "Verified",
-    "active": "Active"
+    "active": "Active",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/th.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Allow Email Change",
     "createdAt": "Created at",
     "verified": "Verified",
-    "active": "Active"
+    "active": "Active",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/tr.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "E-posta Değiştirmeye İzin Ver",
     "createdAt": "Oluşturulma tarihi",
     "verified": "Doğrulanmış",
-    "active": "Aktif"
+    "active": "Aktif",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/uk.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Allow Email Change",
     "createdAt": "Created at",
     "verified": "Verified",
-    "active": "Active"
+    "active": "Active",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/vi.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "Allow Email Change",
     "createdAt": "Created at",
     "verified": "Verified",
-    "active": "Active"
+    "active": "Active",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/zh-CN.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "允许邮箱变更",
     "createdAt": "创建于",
     "verified": "已验证",
-    "active": "活跃"
+    "active": "活跃",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 7 - 1
i18n/zh-TW.i18n.json

@@ -435,5 +435,11 @@
     "accounts-allowEmailChange": "准許變更電子信箱",
     "createdAt": "Created at",
     "verified": "Verified",
-    "active": "Active"
+    "active": "Active",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date"
 }

+ 24 - 0
models/cards.js

@@ -59,6 +59,10 @@ Cards.attachSchema(new SimpleSchema({
     type: [String],
     optional: true,
   },
+  receivedAt: {
+    type: Date,
+    optional: true,
+  },
   startAt: {
     type: Date,
     optional: true,
@@ -67,6 +71,10 @@ Cards.attachSchema(new SimpleSchema({
     type: Date,
     optional: true,
   },
+  endAt: {
+    type: Date,
+    optional: true,
+  },
   spentTime: {
     type: Number,
     decimal: true,
@@ -271,6 +279,14 @@ Cards.mutations({
     return {$unset: {coverId: ''}};
   },
 
+  setReceived(receivedAt) {
+    return {$set: {receivedAt}};
+  },
+
+  unsetReceived() {
+    return {$unset: {receivedAt: ''}};
+  },
+
   setStart(startAt) {
     return {$set: {startAt}};
   },
@@ -287,6 +303,14 @@ Cards.mutations({
     return {$unset: {dueAt: ''}};
   },
 
+  setEnd(endAt) {
+    return {$set: {endAt}};
+  },
+
+  unsetEnd() {
+    return {$unset: {endAt: ''}};
+  },
+
   setOvertime(isOvertime) {
     return {$set: {isOvertime}};
   },

+ 1 - 0
models/checklists.js

@@ -6,6 +6,7 @@ Checklists.attachSchema(new SimpleSchema({
   },
   title: {
     type: String,
+    defaultValue: 'Checklist',
   },
   finishedAt: {
     type: Date,