summaryrefslogtreecommitdiffstats
path: root/client/components/cards/details.js
blob: cb1a3ef36436b308faa5722f8f45d6cbe65cfb24 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
BlazeComponent.extendComponent({
  template: function() {
    return 'cardSidebar';
  },

  mixins: function() {
    return [Mixins.InfiniteScrolling];
  },

  calculateNextPeak: function() {
    var altitude = this.find('.js-card-sidebar-content').scrollHeight;
    this.callFirstWith(this, 'setNextPeak', altitude);
  },

  reachNextPeak: function() {
    var activitiesComponent = this.componentChildren('activities')[0];
    activitiesComponent.loadNextPage();
  },

  events: function() {
    return [{
      'click .js-move-card': Popup.open('moveCard'),
      'submit .js-card-description': function(evt) {
        evt.preventDefault();
        var cardId = Session.get('currentCard');
        var form = this.componentChildren('inlinedForm')[0];
        var newDescription = form.getValue();
        Cards.update(cardId, {
          $set: {
            description: newDescription
          }
        });
        form.close();
      },
      'click .js-close-card-detail': function() {
        Utils.goBoardId(Session.get('currentBoard'));
      },
      'click .editable .js-card-title': function(event, t) {
        var editable = t.$('.card-detail-title');

        // add class editing and focus
        $('.editing').removeClass('editing');
        editable.addClass('editing');
        editable.find('#title').focus();
      },
      'click .js-edit-desc': function(event, t) {
        var editable = t.$('.card-detail-item');

        // editing remove based and add current editing.
        $('.editing').removeClass('editing');
        editable.addClass('editing');
        editable.find('#desc').focus();

        event.preventDefault();
      },
      'click .js-cancel-edit': function() {
        // remove editing hide.
        $('.editing').removeClass('editing');
      },
      'submit #WindowTitleEdit': function(event, t) {
        var title = t.find('#title').value;
        if ($.trim(title)) {
          Cards.update(this.card._id, {
            $set: {
              title: title
            }
          }, function(err) {
            if (! err) $('.editing').removeClass('editing');
          });
        }

        event.preventDefault();
      },
      'submit #WindowDescEdit': function(event, t) {
        Cards.update(this.card._id, {
          $set: {
            description: t.find('#desc').value
          }
        }, function(err) {
          if (! err) $('.editing').removeClass('editing');
        });
        event.preventDefault();
      },
      'click .member': Popup.open('cardMember'),
      'click .js-details-edit-members': Popup.open('cardMembers'),
      'click .js-details-edit-labels': Popup.open('cardLabels')
    }];
  }
}).register('cardSidebar');

Template.moveCardPopup.events({
  'click .js-select-list': function() {
    // XXX We should *not* get the currentCard from the global state, but
    // instead from a “component” state.
    var cardId = Session.get('currentCard');
    var newListId = this._id;
    Cards.update(cardId, {
      $set: {
        listId: newListId
      }
    });
  }
});