cardTime.js 2.3 KB

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