Merge pull request #3500 from jrsupplee/patch-5

Fix some bugs when importing Wekan JSON
reviewable/pr3502/r1
Lauri Ojansivu 4 years ago committed by GitHub
commit f7cc1abc8e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 57
      client/components/import/import.jade
  2. 35
      client/components/import/import.js
  3. 4
      models/customFields.js
  4. 3
      models/wekanCreator.js
  5. 18
      server/publications/users.js

@ -13,38 +13,41 @@ template(name="import")
template(name="importTextarea")
form
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}}
input.primary.wide(type="submit" value="{{_ 'import'}}")
template(name="importMapMembers")
h2 {{_ 'import-map-members'}}
.map-members
p {{_ 'import-members-map'}}
.mapping-list
each members
a.mapping-item.js-select-member(class="{{#if wekanId}}filled{{/if}}")
.profile-source
.full-name= fullName
.username
| ({{username}})
.wekan
if wekanId
+userAvatar(userId=wekanId)
else
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.
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
form
input.primary.wide(type="submit" value="{{_ 'done'}}")
if usersLoaded.get
.map-members
p {{_ 'import-members-map'}}
.mapping-list
each members
a.mapping-item.js-select-member(class="{{#if wekanId}}filled{{/if}}")
.profile-source
.full-name= fullName
.username
| ({{username}})
.wekan
if wekanId
+userAvatar(userId=wekanId)
else
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.
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
form
input.primary.wide(type="submit" value="{{_ 'done'}}")
else
+spinner
template(name="importMapMembersAddPopup")
.select-member

@ -150,14 +150,39 @@ BlazeComponent.extendComponent({
BlazeComponent.extendComponent({
onCreated() {
this.usersLoaded = new ReactiveVar(false);
this.autorun(() => {
this.parentComponent()
.membersToMap.get()
.forEach(({ wekanId }) => {
if (wekanId) {
this.subscribe('user-miniprofile', wekanId);
const handle = this.subscribe(
'user-miniprofile',
this.members().map(member => {
return member.username;
}),
);
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());
});
});
});
},

@ -69,24 +69,28 @@ CustomFields.attachSchema(
* should we show on the cards this custom field
*/
type: Boolean,
defaultValue: false,
},
automaticallyOnCard: {
/**
* should the custom fields automatically be added on cards?
*/
type: Boolean,
defaultValue: false,
},
alwaysOnCard: {
/**
* should the custom field be automatically added to all cards?
*/
type: Boolean,
defaultValue: false,
},
showLabelOnMiniCard: {
/**
* should the label of the custom field be shown on minicards?
*/
type: Boolean,
defaultValue: false,
},
createdAt: {
type: Date,

@ -258,8 +258,9 @@ export class WekanCreator {
// now add other members
if (boardToImport.members) {
boardToImport.members.forEach(wekanMember => {
// do we already have it in our list?
// is it defined and do we already have it in our list?
if (
wekanMember.wekanId &&
!boardToCreate.members.some(
member => member.wekanId === wekanMember.wekanId,
)

@ -1,14 +1,12 @@
Meteor.publish('user-miniprofile', function(userId) {
check(userId, String);
Meteor.publish('user-miniprofile', function(usernames) {
check(usernames, Array);
return Users.find(userId, {
fields: {
username: 1,
'profile.fullname': 1,
'profile.avatarUrl': 1,
'profile.initials': 1,
},
});
// eslint-disable-next-line no-console
// console.log('usernames:', usernames);
return Users.find(
{ username: { $in: usernames } },
{ fields: Users.safeFields },
);
});
Meteor.publish('user-admin', function() {

Loading…
Cancel
Save