Fixed Rare bug: All Boards page icons random dance. Commented out All Boards show members, cards counts, and some migrations.

Fixes #4214

Thanks to xet7 !
This commit is contained in:
Lauri Ojansivu 2023-06-09 16:27:04 +03:00
parent 695cdfcc4e
commit b75e16f104
5 changed files with 52 additions and 11 deletions

View file

@ -7,10 +7,22 @@ Template.boardList.helpers({
return Settings.findOne();
},
hideCardCounterList() {
return Utils.isMiniScreen() && Session.get('currentBoard');
// Fix Rare bug: Board Icons random dance https://github.com/wekan/wekan/issues/4214
// by commenting out following line,
// where it probably counts too often at realtime,
// and makes cards that have card count and member list change size
// and order all the time:
//return Utils.isMiniScreen() && Session.get('currentBoard');
return true;
},
hideBoardMemberList() {
return Utils.isMiniScreen() && Session.get('currentBoard');
// Fix Rare bug: Board Icons random dance https://github.com/wekan/wekan/issues/4214
// by commenting out following line,
// where it probably counts too often at realtime,
// and makes cards that have card count and member list change size
// and order all the time:
//return Utils.isMiniScreen() && Session.get('currentBoard');
return true;
},
})
@ -52,7 +64,6 @@ BlazeComponent.extendComponent({
onRendered() {
const itemsSelector = '.js-board:not(.placeholder)';
const $boards = this.$('.js-boards');
$boards.sortable({
connectWith: '.js-boards',
@ -84,8 +95,9 @@ BlazeComponent.extendComponent({
// DOM in its initial state. The card move is then handled reactively by
// Blaze with the below query.
$boards.sortable('cancel');
board.move(sortIndex.base);
// Fix Rare bug: Board Icons random dance https://github.com/wekan/wekan/issues/4214
// by commenting out following line:
//board.move(sortIndex.base);
},
});
@ -209,23 +221,29 @@ BlazeComponent.extendComponent({
});
},
boardLists(boardId) {
/*
let boardLists = [];
const lists = Lists.find({ 'boardId': boardId, 'archived': false },{sort: ['sort','asc']});
lists.forEach(list => {
let cardCount = Cards.find({ 'boardId': boardId, 'listId': list._id }).count()
boardLists.push(`${list.title}: ${cardCount}`);
});
return boardLists
return boardLists;
*/
return false;
},
boardMembers(boardId) {
/*
let boardMembers = [];
const lists = Boards.findOne({ '_id': boardId })
let members = lists.members
members.forEach(member => {
boardMembers.push(member.userId);
});
return boardMembers
return boardMembers;
*/
return false;
},
isStarred() {

View file

@ -294,6 +294,14 @@ Boards.attachSchema(
}
},
},
background: {
/**
* The background color of the board.
*/
type: String,
optional: true,
defaultValue: '#16A085',
},
backgroundImageURL: {
/**
* The background image URL of the board.
@ -306,6 +314,7 @@ Boards.attachSchema(
* Show card counter per list
*/
type: Boolean,
optional: false,
defaultValue: false,
},
allowsBoardMemberList: {
@ -357,6 +366,7 @@ Boards.attachSchema(
* Does the board allows subtasks?
*/
type: Boolean,
optional: false,
defaultValue: true,
},
@ -1308,7 +1318,7 @@ Boards.mutations({
},
setVisibility(visibility) {
return { $set: { permission: visibility } };
return { $set: { permission: visibility.toLowerCase() } };
},
addLabel(name, color) {

View file

@ -51,10 +51,12 @@ Settings.attachSchema(
displayAuthenticationMethod: {
type: Boolean,
optional: true,
defaultValue: true,
},
defaultAuthenticationMethod: {
type: String,
optional: false,
defaultValue: 'password',
},
spinnerName: {
type: String,
@ -63,14 +65,17 @@ Settings.attachSchema(
hideLogo: {
type: Boolean,
optional: true,
defaultValue: false,
},
hideCardCounterList: {
type: Boolean,
optional: true,
defaultValue: false,
},
hideBoardMemberList: {
type: Boolean,
optional: true,
defaultValue: false,
},
customLoginLogoImageUrl: {
type: String,

View file

@ -171,6 +171,7 @@ Users.attachSchema(
*/
type: Boolean,
optional: true,
defaultValue: false,
},
'profile.hideCheckedItems': {
/**
@ -384,6 +385,7 @@ Users.attachSchema(
'board-view-lists',
'board-view-cal',
],
defaultValue: 'board-view-swimlanes',
},
'profile.listSortBy': {
/**

View file

@ -54,6 +54,7 @@ const noValidate = {
};
const noValidateMulti = { ...noValidate, multi: true };
/*
Migrations.add('board-background-color', () => {
const defaultColor = '#16A085';
Boards.update(
@ -90,7 +91,6 @@ Migrations.add('add-cardcounterlist-allowed', () => {
);
});
/*
Migrations.add('add-boardmemberlist-allowed', () => {
Boards.update(
{
@ -106,7 +106,6 @@ Migrations.add('add-boardmemberlist-allowed', () => {
noValidateMulti,
);
});
*/
Migrations.add('lowercase-board-permission', () => {
['Public', 'Private'].forEach(permission => {
@ -118,7 +117,6 @@ Migrations.add('lowercase-board-permission', () => {
});
});
/*
// Security migration: see https://github.com/wekan/wekan/issues/99
Migrations.add('change-attachments-type-for-non-images', () => {
const newTypeForNonImage = 'application/octet-stream';
@ -259,6 +257,7 @@ Migrations.add('add-swimlanes', () => {
});
});
/*
Migrations.add('add-views', () => {
Boards.find().forEach(board => {
if (!board.hasOwnProperty('view')) {
@ -270,6 +269,7 @@ Migrations.add('add-views', () => {
}
});
});
*/
Migrations.add('add-checklist-items', () => {
Checklists.find().forEach(checklist => {
@ -308,6 +308,7 @@ Migrations.add('add-card-types', () => {
});
});
/*
Migrations.add('add-custom-fields-to-cards', () => {
Cards.update(
{
@ -452,6 +453,7 @@ Migrations.add('add-authenticationMethod', () => {
noValidateMulti,
);
});
*/
Migrations.add('remove-tag', () => {
Users.update(
@ -477,6 +479,7 @@ Migrations.add('remove-customFields-references-broken', () => {
);
});
/*
Migrations.add('add-product-name', () => {
Settings.update(
{
@ -572,6 +575,7 @@ Migrations.add('add-defaultAuthenticationMethod', () => {
noValidateMulti,
);
});
*/
Migrations.add('add-templates', () => {
Boards.update(
@ -817,6 +821,7 @@ Migrations.add('fix-incorrect-dates', () => {
);
});
/*
Migrations.add('add-assignee', () => {
Cards.update(
{
@ -1120,6 +1125,7 @@ Migrations.add('add-description-text-allowed-on-minicard', () => {
noValidateMulti,
);
});
*/
Migrations.add('add-sort-field-to-boards', () => {
Boards.find().forEach((board, index) => {