|
|
|
@ -62,6 +62,10 @@ BlazeComponent.extendComponent({ |
|
|
|
|
return this.isOpen() && this.getView() !== defaultView; |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
scrollTop: function() { |
|
|
|
|
this.$('.js-board-sidebar-content').scrollTop(0); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
getView: function() { |
|
|
|
|
return this._view.get(); |
|
|
|
|
}, |
|
|
|
@ -70,6 +74,7 @@ BlazeComponent.extendComponent({ |
|
|
|
|
view = _.isString(view) ? view : defaultView; |
|
|
|
|
if (this._view.get() !== view) { |
|
|
|
|
this._view.set(view); |
|
|
|
|
this.scrollTop(); |
|
|
|
|
EscapeActions.executeUpTo('detailsPane'); |
|
|
|
|
} |
|
|
|
|
this.open(); |
|
|
|
@ -87,42 +92,6 @@ BlazeComponent.extendComponent({ |
|
|
|
|
return TAPi18n.__(viewTitles[this.getView()]); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
// Board members can assign people or labels by drag-dropping elements from
|
|
|
|
|
// the sidebar to the cards on the board. In order to re-initialize the
|
|
|
|
|
// jquery-ui plugin any time a draggable member or label is modified or
|
|
|
|
|
// removed we use a autorun function and register a dependency on the both
|
|
|
|
|
// members and labels fields of the current board document.
|
|
|
|
|
onRendered: function() { |
|
|
|
|
var self = this; |
|
|
|
|
if (! Meteor.userId() || ! Meteor.user().isBoardMember()) |
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
self.autorun(function() { |
|
|
|
|
var currentBoardId = Tracker.nonreactive(function() { |
|
|
|
|
return Session.get('currentBoard'); |
|
|
|
|
}); |
|
|
|
|
Boards.findOne(currentBoardId, { |
|
|
|
|
fields: { |
|
|
|
|
members: 1, |
|
|
|
|
labels: 1 |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
Tracker.afterFlush(function() { |
|
|
|
|
self.$('.js-member,.js-label').draggable({ |
|
|
|
|
appendTo: 'body', |
|
|
|
|
helper: 'clone', |
|
|
|
|
revert: 'invalid', |
|
|
|
|
revertDuration: 150, |
|
|
|
|
snap: false, |
|
|
|
|
snapMode: 'both', |
|
|
|
|
start: function() { |
|
|
|
|
EscapeActions.executeUpTo('popup'); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
events: function() { |
|
|
|
|
// XXX Hacky, we need some kind of `super`
|
|
|
|
|
var mixinEvents = this.getMixin(Mixins.InfiniteScrolling).events(); |
|
|
|
@ -186,6 +155,45 @@ Template.labelsWidget.events({ |
|
|
|
|
'click .js-add-label': Popup.open('createLabel') |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
// Board members can assign people or labels by drag-dropping elements from the
|
|
|
|
|
// sidebar to the cards on the board. In order to re-initialize the jquery-ui
|
|
|
|
|
// plugin any time a draggable member or label is modified or removed we use a
|
|
|
|
|
// autorun function and register a dependency on the both members and labels
|
|
|
|
|
// fields of the current board document.
|
|
|
|
|
var draggableMembersLabelsWidgets = function() { |
|
|
|
|
var self = this; |
|
|
|
|
if (! Meteor.userId() || ! Meteor.user().isBoardMember()) |
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
self.autorun(function() { |
|
|
|
|
var currentBoardId = Tracker.nonreactive(function() { |
|
|
|
|
return Session.get('currentBoard'); |
|
|
|
|
}); |
|
|
|
|
Boards.findOne(currentBoardId, { |
|
|
|
|
fields: { |
|
|
|
|
members: 1, |
|
|
|
|
labels: 1 |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
Tracker.afterFlush(function() { |
|
|
|
|
self.$('.js-member,.js-label').draggable({ |
|
|
|
|
appendTo: 'body', |
|
|
|
|
helper: 'clone', |
|
|
|
|
revert: 'invalid', |
|
|
|
|
revertDuration: 150, |
|
|
|
|
snap: false, |
|
|
|
|
snapMode: 'both', |
|
|
|
|
start: function() { |
|
|
|
|
EscapeActions.executeUpTo('popup'); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
Template.membersWidget.onRendered(draggableMembersLabelsWidgets); |
|
|
|
|
Template.labelsWidget.onRendered(draggableMembersLabelsWidgets); |
|
|
|
|
|
|
|
|
|
Template.addMemberPopup.helpers({ |
|
|
|
|
isBoardMember: function() { |
|
|
|
|
var user = Users.findOne(this._id); |
|
|
|
|