Merge branch 'master' of https://github.com/Emile840/wekan into Emile840-master

This commit is contained in:
Lauri Ojansivu 2021-09-10 22:16:57 +03:00
commit ea57864bcc
3 changed files with 138 additions and 8 deletions

View file

@ -43,6 +43,13 @@ BlazeComponent.extendComponent({
this.calculateNextPeak();
Meteor.subscribe('unsaved-edits');
// this.findUsersOptions = new ReactiveVar({});
// this.page = new ReactiveVar(1);
// this.autorun(() => {
// const limitUsers = this.page.get() * Number.MAX_SAFE_INTEGER;
// this.subscribe('people', this.findUsersOptions.get(), limitUsers, () => {});
// });
},
isWatching() {
@ -668,7 +675,19 @@ Template.editCardTitleForm.onRendered(function () {
});
Template.cardMembersPopup.onCreated(function () {
const members = Boards.findOne(Session.get('currentBoard')).activeMembers();
let currBoard = Boards.findOne(Session.get('currentBoard'));
let members = currBoard.activeMembers();
// let query = {
// "teams.teamId": { $in: currBoard.teams.map(t => t.teamId) },
// };
// let boardTeamUsers = Users.find(query, {
// sort: { sort: 1 },
// });
// members = currBoard.activeMembers2(members, boardTeamUsers);
this.members = new ReactiveVar(members);
});
@ -686,7 +705,18 @@ Template.cardMembersPopup.helpers({
});
const filterMembers = (filterTerm) => {
let members = Boards.findOne(Session.get('currentBoard')).activeMembers();
let currBoard = Boards.findOne(Session.get('currentBoard'));
let members = currBoard.activeMembers();
// let query = {
// "teams.teamId": { $in: currBoard.teams.map(t => t.teamId) },
// };
// let boardTeamUsers = Users.find(query, {
// sort: { sort: 1 },
// });
// members = currBoard.activeMembers2(members, boardTeamUsers);
if (filterTerm) {
members = members
@ -695,7 +725,8 @@ const filterMembers = (filterTerm) => {
user: Users.findOne(member.userId)
}))
.filter(({ user }) =>
user.profile.fullname.toLowerCase().indexOf(filterTerm.toLowerCase()) !== -1)
(user.profile.fullname !== undefined && user.profile.fullname.toLowerCase().indexOf(filterTerm.toLowerCase()) !== -1)
|| user.profile.fullname === undefined && user.profile.username !== undefined && user.profile.username.toLowerCase().indexOf(filterTerm.toLowerCase()) !== -1)
.map(({ member }) => member);
}
return members;
@ -1623,7 +1654,19 @@ EscapeActions.register(
);
Template.cardAssigneesPopup.onCreated(function () {
const members = Boards.findOne(Session.get('currentBoard')).activeMembers();
let currBoard = Boards.findOne(Session.get('currentBoard'));
let members = currBoard.activeMembers();
// let query = {
// "teams.teamId": { $in: currBoard.teams.map(t => t.teamId) },
// };
// let boardTeamUsers = Users.find(query, {
// sort: { sort: 1 },
// });
// members = currBoard.activeMembers2(members, boardTeamUsers);
this.members = new ReactiveVar(members);
});

View file

@ -1392,6 +1392,13 @@ BlazeComponent.extendComponent({
const limitTeams = this.page.get() * Number.MAX_SAFE_INTEGER;
this.subscribe('team', this.findOrgsOptions.get(), limitTeams, () => {});
});
this.findUsersOptions = new ReactiveVar({});
this.userPage = new ReactiveVar(1);
this.autorun(() => {
const limitUsers = this.userPage.get() * Number.MAX_SAFE_INTEGER;
this.subscribe('people', this.findUsersOptions.get(), limitUsers, () => {});
});
},
onRendered() {
@ -1436,7 +1443,35 @@ BlazeComponent.extendComponent({
})
if (selectedTeamId != "-1") {
Meteor.call('setBoardTeams', boardTeams, currentBoard._id);
let members = currentBoard.members;
let query = {
"teams.teamId": { $in: boardTeams.map(t => t.teamId) },
};
const boardTeamUsers = Users.find(query, {
sort: { sort: 1 },
});
if(boardTeams !== undefined && boardTeams.length > 0){
let index;
if(boardTeamUsers && boardTeamUsers.count() > 0){
boardTeamUsers.forEach((u) => {
index = members.findIndex(function(m){ return m.userId == u._id});
if(index == -1){
members.push({
"isActive": true,
"isAdmin": u.isAdmin !== undefined ? u.isAdmin : false,
"isCommentOnly" : false,
"isNoComments" : false,
"userId": u._id,
});
}
});
}
}
Meteor.call('setBoardTeams', boardTeams, members, currentBoard._id);
}
}
@ -1465,6 +1500,13 @@ BlazeComponent.extendComponent({
const limitTeams = this.page.get() * Number.MAX_SAFE_INTEGER;
this.subscribe('team', this.findOrgsOptions.get(), limitTeams, () => {});
});
this.findUsersOptions = new ReactiveVar({});
this.userPage = new ReactiveVar(1);
this.autorun(() => {
const limitUsers = this.userPage.get() * Number.MAX_SAFE_INTEGER;
this.subscribe('people', this.findUsersOptions.get(), limitUsers, () => {});
});
},
onRendered() {
@ -1501,7 +1543,28 @@ BlazeComponent.extendComponent({
}
}
Meteor.call('setBoardTeams', boardTeams, currentBoard._id);
let members = currentBoard.members;
let query = {
"teams.teamId": stringTeamId
};
const boardTeamUsers = Users.find(query, {
sort: { sort: 1 },
});
if(currentBoard.teams !== undefined && currentBoard.teams.length > 0){
let index;
if(boardTeamUsers && boardTeamUsers.count() > 0){
boardTeamUsers.forEach((u) => {
index = members.findIndex(function(m){ return m.userId == u._id});
if(index !== -1 && (u.isAdmin === undefined || u.isAdmin == false)){
members.splice(index, 1);
}
});
}
}
Meteor.call('setBoardTeams', boardTeams, members, currentBoard._id);
Popup.close();
},

View file

@ -749,10 +749,32 @@ Boards.helpers({
return Activities.find({ boardId: this._id }, { sort: { createdAt: -1 } });
},
activeMembers() {
activeMembers(){
return _.where(this.members, { isActive: true });
},
activeMembers2(members, boardTeamUsers) {
let allMembers = members;
if(this.teams !== undefined && this.teams.length > 0){
let index;
if(boardTeamUsers && boardTeamUsers.count() > 0){
boardTeamUsers.forEach((u) => {
index = allMembers.findIndex(function(m){ return m.userId == u._id});
if(index == -1){
allMembers.push({
"isActive": true,
"isAdmin": u.isAdmin !== undefined ? u.isAdmin : false,
"isCommentOnly" : false,
"isNoComments" : false,
"userId": u._id,
});
}
});
}
}
return allMembers;
},
activeOrgs() {
return _.where(this.orgs, { isActive: true });
@ -1567,11 +1589,13 @@ if (Meteor.isServer) {
},
});
},
setBoardTeams(boardTeamsArray, currBoardId){
setBoardTeams(boardTeamsArray, membersArray, currBoardId){
check(boardTeamsArray, Array);
check(membersArray, Array);
check(currBoardId, String);
Boards.update(currBoardId, {
$set: {
members: membersArray,
teams: boardTeamsArray,
},
});