summaryrefslogtreecommitdiffstats
path: root/client/components/boards/body.js
blob: 78566f2e47e869e70865c0c96c5225f5d66a9392 (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
BlazeComponent.extendComponent({
  template: function() {
    return 'boardComponent';
  },

  openNewListForm: function() {
    this.componentChildren('addListForm')[0].open();
  },

  scrollLeft: function() {
    // TODO
  },

  onRendered: function() {
    var self = this;

    self.scrollLeft();

    if (Meteor.user().isBoardMember()) {
      self.$('.js-lists').sortable({
        tolerance: 'pointer',
        appendTo: '.js-lists',
        helper: 'clone',
        items: '.js-list:not(.add-list)',
        placeholder: 'list placeholder',
        start: function(event, ui) {
          $('.list.placeholder').height(ui.item.height());
          Popup.close();
        },
        stop: function() {
          self.$('.js-lists').find('.js-list:not(.add-list)').each(
            function(i, list) {
              var data = Blaze.getData(list);
              Lists.update(data._id, {
                $set: {
                  sort: i
                }
              });
            }
          );
        }
      });

      // If there is no data in the board (ie, no lists) we autofocus the list
      // creation form by clicking on the corresponding element.
      if (self.data().lists().count() === 0) {
        this.openNewListForm();
      }
    }
  },

  sidebarSize: function() {
    var sidebar = this.componentChildren('boardSidebar')[0];
    if (Session.get('currentCard') !== null)
      return 'next-large-sidebar';
    else if (sidebar && sidebar.isOpen())
      return 'next-small-sidebar';
  }
}).register('boardComponent');

BlazeComponent.extendComponent({
  template: function() {
    return 'addListForm';
  },

  // Proxy
  open: function() {
    this.componentChildren('inlinedForm')[0].open();
  },

  events: function() {
    return [{
      submit: function(evt) {
        evt.preventDefault();
        var title = this.find('.list-name-input');
        if ($.trim(title.value)) {
          Lists.insert({
            title: title.value,
            boardId: Session.get('currentBoard'),
            sort: $('.list').length
          });

          title.value = '';
        }
      }
    }];
  }
}).register('addListForm');