mirror of
https://github.com/wekan/wekan.git
synced 2025-12-16 15:30:13 +01:00
Make sure user data is retrieved before proceeding with import
This commit is contained in:
parent
0adde3e06d
commit
d647884b91
3 changed files with 68 additions and 42 deletions
|
|
@ -13,38 +13,41 @@ template(name="import")
|
||||||
template(name="importTextarea")
|
template(name="importTextarea")
|
||||||
form
|
form
|
||||||
p: label(for='import-textarea') {{_ instruction}} {{_ 'import-board-instruction-about-errors'}}
|
p: label(for='import-textarea') {{_ instruction}} {{_ 'import-board-instruction-about-errors'}}
|
||||||
textarea.js-import-json(placeholder="{{_ importPlaceHolder}}" autofocus)
|
textarea.js-import-json(id='import-textarea' placeholder="{{_ importPlaceHolder}}" autofocus)
|
||||||
| {{jsonText}}
|
| {{jsonText}}
|
||||||
input.primary.wide(type="submit" value="{{_ 'import'}}")
|
input.primary.wide(type="submit" value="{{_ 'import'}}")
|
||||||
|
|
||||||
template(name="importMapMembers")
|
template(name="importMapMembers")
|
||||||
h2 {{_ 'import-map-members'}}
|
h2 {{_ 'import-map-members'}}
|
||||||
.map-members
|
if usersLoaded.get
|
||||||
p {{_ 'import-members-map'}}
|
.map-members
|
||||||
.mapping-list
|
p {{_ 'import-members-map'}}
|
||||||
each members
|
.mapping-list
|
||||||
a.mapping-item.js-select-member(class="{{#if wekanId}}filled{{/if}}")
|
each members
|
||||||
.profile-source
|
a.mapping-item.js-select-member(class="{{#if wekanId}}filled{{/if}}")
|
||||||
.full-name= fullName
|
.profile-source
|
||||||
.username
|
.full-name= fullName
|
||||||
| ({{username}})
|
.username
|
||||||
.wekan
|
| ({{username}})
|
||||||
if wekanId
|
.wekan
|
||||||
+userAvatar(userId=wekanId)
|
if wekanId
|
||||||
else
|
+userAvatar(userId=wekanId)
|
||||||
a.member.add-member
|
else
|
||||||
i.fa.fa-plus
|
a.member.add-member
|
||||||
//-
|
i.fa.fa-plus
|
||||||
Due to the way the flewbox layout is working, we need to set some
|
//-
|
||||||
invisible items so that the last row items have a consistent width.
|
Due to the way the flewbox layout is working, we need to set some
|
||||||
See http://jsfiddle.net/Ln4h3c4n/ for an minimal example of the issue.
|
invisible items so that the last row items have a consistent width.
|
||||||
.mapping-item.ghost-item
|
See http://jsfiddle.net/Ln4h3c4n/ for an minimal example of the issue.
|
||||||
.mapping-item.ghost-item
|
.mapping-item.ghost-item
|
||||||
.mapping-item.ghost-item
|
.mapping-item.ghost-item
|
||||||
.mapping-item.ghost-item
|
.mapping-item.ghost-item
|
||||||
.mapping-item.ghost-item
|
.mapping-item.ghost-item
|
||||||
form
|
.mapping-item.ghost-item
|
||||||
input.primary.wide(type="submit" value="{{_ 'done'}}")
|
form
|
||||||
|
input.primary.wide(type="submit" value="{{_ 'done'}}")
|
||||||
|
else
|
||||||
|
+spinner
|
||||||
|
|
||||||
template(name="importMapMembersAddPopup")
|
template(name="importMapMembersAddPopup")
|
||||||
.select-member
|
.select-member
|
||||||
|
|
|
||||||
|
|
@ -150,14 +150,39 @@ BlazeComponent.extendComponent({
|
||||||
|
|
||||||
BlazeComponent.extendComponent({
|
BlazeComponent.extendComponent({
|
||||||
onCreated() {
|
onCreated() {
|
||||||
|
this.usersLoaded = new ReactiveVar(false);
|
||||||
|
|
||||||
this.autorun(() => {
|
this.autorun(() => {
|
||||||
this.parentComponent()
|
const handle = this.subscribe(
|
||||||
.membersToMap.get()
|
'user-miniprofile',
|
||||||
.forEach(({ wekanId }) => {
|
this.members().map(member => {
|
||||||
if (wekanId) {
|
return member.username;
|
||||||
this.subscribe('user-miniprofile', wekanId);
|
}),
|
||||||
|
);
|
||||||
|
Tracker.nonreactive(() => {
|
||||||
|
Tracker.autorun(() => {
|
||||||
|
if (
|
||||||
|
handle.ready() &&
|
||||||
|
!this.usersLoaded.get() &&
|
||||||
|
this.members().length
|
||||||
|
) {
|
||||||
|
this._refreshMembers(
|
||||||
|
this.members().map(member => {
|
||||||
|
if (!member.wekanId) {
|
||||||
|
const user = Users.findOne({ username: member.username });
|
||||||
|
if (user) {
|
||||||
|
// eslint-disable-next-line no-console
|
||||||
|
console.log('found username:', user.username);
|
||||||
|
member.wekanId = user._id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return member;
|
||||||
|
}),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
this.usersLoaded.set(handle.ready());
|
||||||
});
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,12 @@
|
||||||
Meteor.publish('user-miniprofile', function(userId) {
|
Meteor.publish('user-miniprofile', function(usernames) {
|
||||||
check(userId, String);
|
check(usernames, Array);
|
||||||
|
|
||||||
return Users.find(userId, {
|
// eslint-disable-next-line no-console
|
||||||
fields: {
|
// console.log('usernames:', usernames);
|
||||||
username: 1,
|
return Users.find(
|
||||||
'profile.fullname': 1,
|
{ username: { $in: usernames } },
|
||||||
'profile.avatarUrl': 1,
|
{ fields: Users.safeFields },
|
||||||
'profile.initials': 1,
|
);
|
||||||
},
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
Meteor.publish('user-admin', function() {
|
Meteor.publish('user-admin', function() {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue