Merge pull request #3942 from syndimann/feature/searchable-members-in-card-popup

Feature: Searchfields for members and assignees card popups
reviewable/pr3944/r1
Lauri Ojansivu 4 years ago committed by GitHub
commit 3ea723329a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      client/components/cards/cardDetails.jade
  2. 58
      client/components/cards/cardDetails.js

@ -708,8 +708,9 @@ template(name="boardsAndLists")
button.primary.confirm.js-done {{_ 'done'}} button.primary.confirm.js-done {{_ 'done'}}
template(name="cardMembersPopup") template(name="cardMembersPopup")
input.card-members-filter(type="text" placeholder="Search...")
ul.pop-over-list.js-card-member-list ul.pop-over-list.js-card-member-list
each board.activeMembers each members
li.item(class="{{#if isCardMember}}active{{/if}}") li.item(class="{{#if isCardMember}}active{{/if}}")
a.name.js-select-member(href="#") a.name.js-select-member(href="#")
+userAvatar(userId=user._id) +userAvatar(userId=user._id)
@ -720,9 +721,10 @@ template(name="cardMembersPopup")
i.fa.fa-check i.fa.fa-check
template(name="cardAssigneesPopup") template(name="cardAssigneesPopup")
input.card-assignees-filter(type="text" placeholder="Search...")
unless currentUser.isWorker unless currentUser.isWorker
ul.pop-over-list.js-card-assignee-list ul.pop-over-list.js-card-assignee-list
each board.activeMembers each members
li.item(class="{{#if isCardAssignee}}active{{/if}}") li.item(class="{{#if isCardAssignee}}active{{/if}}")
a.name.js-select-assignee(href="#") a.name.js-select-assignee(href="#")
+userAvatar(userId=user._id) +userAvatar(userId=user._id)

@ -180,7 +180,7 @@ BlazeComponent.extendComponent({
integration, integration,
'CardSelected', 'CardSelected',
params, params,
() => {}, () => { },
); );
}); });
} }
@ -541,8 +541,8 @@ BlazeComponent.extendComponent({
}).register('exportCardPopup'); }).register('exportCardPopup');
// only allow number input // only allow number input
Template.editCardSortOrderForm.onRendered(function() { Template.editCardSortOrderForm.onRendered(function () {
this.$('input').on("keypress paste", function(event) { this.$('input').on("keypress paste", function (event) {
let keyCode = event.keyCode; let keyCode = event.keyCode;
let charCode = String.fromCharCode(keyCode); let charCode = String.fromCharCode(keyCode);
let regex = new RegExp('[-0-9.]'); let regex = new RegExp('[-0-9.]');
@ -667,6 +667,40 @@ Template.editCardTitleForm.onRendered(function () {
autosize(this.$('.js-edit-card-title')); autosize(this.$('.js-edit-card-title'));
}); });
Template.cardMembersPopup.onCreated(function () {
const members = Boards.findOne(Session.get('currentBoard')).activeMembers();
this.members = new ReactiveVar(members);
});
Template.cardMembersPopup.events({
'keyup .card-members-filter'(event) {
const members = filterMembers(event.target.value);
Template.instance().members.set(members);
}
});
Template.cardMembersPopup.helpers({
members() {
return Template.instance().members.get();
},
});
const filterMembers = (filterTerm) => {
let members = Boards.findOne(Session.get('currentBoard')).activeMembers();
if (filterTerm) {
members = members
.map(member => ({
member,
user: Users.findOne(member.userId)
}))
.filter(({ user }) =>
user.profile.fullname.toLowerCase().indexOf(filterTerm.toLowerCase()) !== -1)
.map(({ member }) => member);
}
return members;
}
Template.editCardTitleForm.events({ Template.editCardTitleForm.events({
'keydown .js-edit-card-title'(event) { 'keydown .js-edit-card-title'(event) {
// If enter key was pressed, submit the data // If enter key was pressed, submit the data
@ -1019,9 +1053,8 @@ BlazeComponent.extendComponent({
// https://github.com/wekan/wekan/issues/2785 // https://github.com/wekan/wekan/issues/2785
const message = `${TAPi18n.__( const message = `${TAPi18n.__(
'delete-linked-card-before-this-card', 'delete-linked-card-before-this-card',
)} linkedId: ${ )} linkedId: ${this._id
this._id } at client/components/cards/cardDetails.js and https://github.com/wekan/wekan/issues/2785`;
} at client/components/cards/cardDetails.js and https://github.com/wekan/wekan/issues/2785`;
alert(message); alert(message);
} }
Utils.goBoardId(this.boardId); Utils.goBoardId(this.boardId);
@ -1589,6 +1622,11 @@ EscapeActions.register(
}, },
); );
Template.cardAssigneesPopup.onCreated(function () {
const members = Boards.findOne(Session.get('currentBoard')).activeMembers();
this.members = new ReactiveVar(members);
});
Template.cardAssigneesPopup.events({ Template.cardAssigneesPopup.events({
'click .js-select-assignee'(event) { 'click .js-select-assignee'(event) {
const card = Cards.findOne(Session.get('currentCard')); const card = Cards.findOne(Session.get('currentCard'));
@ -1596,6 +1634,10 @@ Template.cardAssigneesPopup.events({
card.toggleAssignee(assigneeId); card.toggleAssignee(assigneeId);
event.preventDefault(); event.preventDefault();
}, },
'keyup .card-assignees-filter'(event) {
const members = filterMembers(event.target.value);
Template.instance().members.set(members);
},
}); });
Template.cardAssigneesPopup.helpers({ Template.cardAssigneesPopup.helpers({
@ -1606,6 +1648,10 @@ Template.cardAssigneesPopup.helpers({
return _.contains(cardAssignees, this.userId); return _.contains(cardAssignees, this.userId);
}, },
members() {
return Template.instance().members.get();
},
user() { user() {
return Users.findOne(this.userId); return Users.findOne(this.userId);
}, },

Loading…
Cancel
Save