cardTime.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. BlazeComponent.extendComponent({
  2. template() {
  3. return 'editCardSpentTime';
  4. },
  5. onCreated() {
  6. this.error = new ReactiveVar('');
  7. this.card = this.data();
  8. },
  9. toggleOvertime() {
  10. this.card.setIsOvertime(!this.card.getIsOvertime());
  11. $('#overtime .materialCheckBox').toggleClass('is-checked');
  12. $('#overtime').toggleClass('is-checked');
  13. },
  14. storeTime(spentTime, isOvertime) {
  15. this.card.setSpentTime(spentTime);
  16. this.card.setIsOvertime(isOvertime);
  17. },
  18. deleteTime() {
  19. this.card.setSpentTime(null);
  20. this.card.setIsOvertime(false);
  21. },
  22. events() {
  23. return [
  24. {
  25. //TODO : need checking this portion
  26. 'submit .edit-time'(evt) {
  27. evt.preventDefault();
  28. const spentTime = parseFloat(evt.target.time.value);
  29. //const isOvertime = this.card.getIsOvertime();
  30. let isOvertime = false;
  31. if ($('#overtime').attr('class').indexOf('is-checked') >= 0) {
  32. isOvertime = true;
  33. }
  34. if (spentTime >= 0) {
  35. this.storeTime(spentTime, isOvertime);
  36. Popup.close();
  37. } else {
  38. this.error.set('invalid-time');
  39. evt.target.time.focus();
  40. }
  41. },
  42. 'click .js-delete-time'(evt) {
  43. evt.preventDefault();
  44. this.deleteTime();
  45. Popup.close();
  46. },
  47. 'click a.js-toggle-overtime': this.toggleOvertime,
  48. },
  49. ];
  50. },
  51. }).register('editCardSpentTimePopup');
  52. BlazeComponent.extendComponent({
  53. template() {
  54. return 'timeBadge';
  55. },
  56. onCreated() {
  57. const self = this;
  58. self.time = ReactiveVar();
  59. },
  60. showTitle() {
  61. if (this.data().getIsOvertime()) {
  62. return `${TAPi18n.__(
  63. 'overtime',
  64. )} ${this.data().getSpentTime()} ${TAPi18n.__('hours')}`;
  65. } else {
  66. return `${TAPi18n.__(
  67. 'card-spent',
  68. )} ${this.data().getSpentTime()} ${TAPi18n.__('hours')}`;
  69. }
  70. },
  71. showTime() {
  72. return this.data().getSpentTime();
  73. },
  74. events() {
  75. return [
  76. {
  77. 'click .js-edit-time': Popup.open('editCardSpentTime'),
  78. },
  79. ];
  80. },
  81. }).register('cardSpentTime');
  82. Template.timeBadge.helpers({
  83. canModifyCard() {
  84. return (
  85. Meteor.user() &&
  86. Meteor.user().isBoardMember() &&
  87. !Meteor.user().isCommentOnly()
  88. );
  89. },
  90. });