BlazeComponent.extendComponent({
  template() {
    return 'editCardSpentTime';
  },
  onCreated() {
    this.error = new ReactiveVar('');
    this.card = this.data();
  },
  toggleOvertime() {
    this.card.setIsOvertime(!this.card.getIsOvertime());
    $('#overtime .materialCheckBox').toggleClass('is-checked');

    $('#overtime').toggleClass('is-checked');
  },
  storeTime(spentTime, isOvertime) {
    this.card.setSpentTime(spentTime);
    this.card.setIsOvertime(isOvertime);
  },
  deleteTime() {
    this.card.setSpentTime(null);
  },
  events() {
    return [
      {
        //TODO : need checking this portion
        'submit .edit-time'(evt) {
          evt.preventDefault();

          const spentTime = parseFloat(evt.target.time.value);
          const isOvertime = this.card.getIsOvertime();

          if (spentTime >= 0) {
            this.storeTime(spentTime, isOvertime);
            Popup.close();
          } else {
            this.error.set('invalid-time');
            evt.target.time.focus();
          }
        },
        'click .js-delete-time'(evt) {
          evt.preventDefault();
          this.deleteTime();
          Popup.close();
        },
        'click a.js-toggle-overtime': this.toggleOvertime,
      },
    ];
  },
}).register('editCardSpentTimePopup');

BlazeComponent.extendComponent({
  template() {
    return 'timeBadge';
  },
  onCreated() {
    const self = this;
    self.time = ReactiveVar();
  },
  showTitle() {
    if (this.data().getIsOvertime()) {
      return `${TAPi18n.__(
        'overtime',
      )} ${this.data().getSpentTime()} ${TAPi18n.__('hours')}`;
    } else {
      return `${TAPi18n.__(
        'card-spent',
      )} ${this.data().getSpentTime()} ${TAPi18n.__('hours')}`;
    }
  },
  showTime() {
    return this.data().getSpentTime();
  },
  events() {
    return [
      {
        'click .js-edit-time': Popup.open('editCardSpentTime'),
      },
    ];
  },
}).register('cardSpentTime');

Template.timeBadge.helpers({
  canModifyCard() {
    return (
      Meteor.user() &&
      Meteor.user().isBoardMember() &&
      !Meteor.user().isCommentOnly()
    );
  },
});
