|  | @@ -20,6 +20,7 @@ Template.cardCustomFieldsPopup.events({
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +// cardCustomField
 | 
	
		
			
				|  |  |  const CardCustomField = BlazeComponent.extendComponent({
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      getTemplate() {
 | 
	
	
		
			
				|  | @@ -28,6 +29,8 @@ const CardCustomField = BlazeComponent.extendComponent({
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      onCreated() {
 | 
	
		
			
				|  |  |          const self = this;
 | 
	
		
			
				|  |  | +        self.card = Cards.findOne(Session.get('currentCard'));
 | 
	
		
			
				|  |  | +        self.customFieldId = this.data()._id;
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      canModifyCard() {
 | 
	
	
		
			
				|  | @@ -36,28 +39,118 @@ const CardCustomField = BlazeComponent.extendComponent({
 | 
	
		
			
				|  |  |  });
 | 
	
		
			
				|  |  |  CardCustomField.register('cardCustomField');
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +// cardCustomField-text
 | 
	
		
			
				|  |  |  (class extends CardCustomField {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      onCreated() {
 | 
	
		
			
				|  |  | +        super.onCreated();
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      events() {
 | 
	
		
			
				|  |  |          return [{
 | 
	
		
			
				|  |  |              'submit .js-card-customfield-text'(evt) {
 | 
	
		
			
				|  |  |                  evt.preventDefault();
 | 
	
		
			
				|  |  | -                const card = Cards.findOne(Session.get('currentCard'));
 | 
	
		
			
				|  |  | -                const customFieldId = this.data()._id;
 | 
	
		
			
				|  |  |                  const value = this.currentComponent().getValue();
 | 
	
		
			
				|  |  | -                card.setCustomField(customFieldId,value);
 | 
	
		
			
				|  |  | +                this.card.setCustomField(this.customFieldId, value);
 | 
	
		
			
				|  |  |              },
 | 
	
		
			
				|  |  |          }];
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  }).register('cardCustomField-text');
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +// cardCustomField-number
 | 
	
		
			
				|  |  |  (class extends CardCustomField {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      onCreated() {
 | 
	
		
			
				|  |  | +        super.onCreated();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    events() {
 | 
	
		
			
				|  |  | +        return [{
 | 
	
		
			
				|  |  | +            'submit .js-card-customfield-number'(evt) {
 | 
	
		
			
				|  |  | +                evt.preventDefault();
 | 
	
		
			
				|  |  | +                const value = parseInt(this.find('input').value);
 | 
	
		
			
				|  |  | +                this.card.setCustomField(this.customFieldId, value);
 | 
	
		
			
				|  |  | +            },
 | 
	
		
			
				|  |  | +        }];
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +}).register('cardCustomField-number');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// cardCustomField-date
 | 
	
		
			
				|  |  | +(class extends CardCustomField {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    onCreated() {
 | 
	
		
			
				|  |  | +        super.onCreated();
 | 
	
		
			
				|  |  | +        const self = this;
 | 
	
		
			
				|  |  | +        self.date = ReactiveVar();
 | 
	
		
			
				|  |  | +        self.now = ReactiveVar(moment());
 | 
	
		
			
				|  |  | +        window.setInterval(() => {
 | 
	
		
			
				|  |  | +            self.now.set(moment());
 | 
	
		
			
				|  |  | +        }, 60000);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        self.autorun(() => {
 | 
	
		
			
				|  |  | +            self.date.set(moment(self.data().value));
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    showDate() {
 | 
	
		
			
				|  |  | +        // this will start working once mquandalle:moment
 | 
	
		
			
				|  |  | +        // is updated to at least moment.js 2.10.5
 | 
	
		
			
				|  |  | +        // until then, the date is displayed in the "L" format
 | 
	
		
			
				|  |  | +        return this.date.get().calendar(null, {
 | 
	
		
			
				|  |  | +            sameElse: 'llll',
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    showISODate() {
 | 
	
		
			
				|  |  | +        return this.date.get().toISOString();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    classes() {
 | 
	
		
			
				|  |  | +        if (this.date.get().isBefore(this.now.get(), 'minute') &&
 | 
	
		
			
				|  |  | +            this.now.get().isBefore(this.data().value)) {
 | 
	
		
			
				|  |  | +            return 'current';
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return '';
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    showTitle() {
 | 
	
		
			
				|  |  | +        return `${TAPi18n.__('card-start-on')} ${this.date.get().format('LLLL')}`;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    events() {
 | 
	
		
			
				|  |  | +        return [{
 | 
	
		
			
				|  |  | +            'click .js-edit-date': Popup.open('cardCustomField-date'),
 | 
	
		
			
				|  |  | +        }];
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +}).register('cardCustomField-date');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// cardCustomField-datePopup
 | 
	
		
			
				|  |  | +(class extends DatePicker {
 | 
	
		
			
				|  |  | +    onCreated() {
 | 
	
		
			
				|  |  | +        super.onCreated();
 | 
	
		
			
				|  |  | +        const self = this;
 | 
	
		
			
				|  |  | +        self.card = Cards.findOne(Session.get('currentCard'));
 | 
	
		
			
				|  |  | +        self.customFieldId = this.data()._id;
 | 
	
		
			
				|  |  | +        this.data().value && this.date.set(moment(this.data().value));
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    _storeDate(date) {
 | 
	
		
			
				|  |  | +        this.card.setCustomField(this.customFieldId, date);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    _deleteDate() {
 | 
	
		
			
				|  |  | +        this.card.setCustomField(this.customFieldId, '');
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}).register('cardCustomField-datePopup');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// cardCustomField-dropdown
 | 
	
		
			
				|  |  | +(class extends CardCustomField {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    onCreated() {
 | 
	
		
			
				|  |  | +        super.onCreated();
 | 
	
		
			
				|  |  |          this._items = this.data().definition.settings.dropdownItems;
 | 
	
		
			
				|  |  |          this.items = this._items.slice(0);
 | 
	
		
			
				|  |  |          this.items.unshift({
 | 
	
	
		
			
				|  | @@ -77,10 +170,8 @@ CardCustomField.register('cardCustomField');
 | 
	
		
			
				|  |  |          return [{
 | 
	
		
			
				|  |  |              'submit .js-card-customfield-dropdown'(evt) {
 | 
	
		
			
				|  |  |                  evt.preventDefault();
 | 
	
		
			
				|  |  | -                const card = Cards.findOne(Session.get('currentCard'));
 | 
	
		
			
				|  |  | -                const customFieldId = this.data()._id;
 | 
	
		
			
				|  |  |                  const value = this.find('select').value;
 | 
	
		
			
				|  |  | -                card.setCustomField(customFieldId,value);
 | 
	
		
			
				|  |  | +                this.card.setCustomField(this.customFieldId, value);
 | 
	
		
			
				|  |  |              },
 | 
	
		
			
				|  |  |          }];
 | 
	
		
			
				|  |  |      }
 |