Add Features: allowing lists to be sorted by modifiedAt when not in draggable mode

This commit is contained in:
Sam X. Chen 2019-10-10 22:57:40 -04:00
parent e60926f847
commit 77f8b76d4e
7 changed files with 63 additions and 39 deletions

View file

@ -58,6 +58,8 @@ template(name="minicard")
if getDue
.date
+minicardDueDate
if getEnd
+minicardEndDate
if getSpentTime
.date
+cardSpentTime

View file

@ -9,6 +9,7 @@ template(name="listHeader")
if currentList
a.list-header-left-icon.fa.fa-angle-left.js-unselect-list
h2.list-header-name(
title="{{ moment updatedAt 'LLL' }}"
class="{{#if currentUser.isBoardMember}}{{#unless currentUser.isCommentOnly}}js-open-inlined-form is-editable{{/unless}}{{/if}}")
+viewer
= title

View file

@ -12,13 +12,13 @@ template(name="swimlane")
unless currentUser.isCommentOnly
+addListForm
else
if currentUser.isBoardMember
unless currentUser.isCommentOnly
+addListForm
each lists
+list(this)
if currentCardIsInThisList _id ../_id
+cardDetails(currentCard)
if currentUser.isBoardMember
unless currentUser.isCommentOnly
+addListForm
template(name="listsGroup")
.swimlane.list-group.js-lists
@ -26,20 +26,20 @@ template(name="listsGroup")
if currentList
+list(currentList)
else
each lists
+miniList(this)
if currentUser.isBoardMember
unless currentUser.isCommentOnly
+addListForm
each lists
+miniList(this)
else
if currentUser.isBoardMember
unless currentUser.isCommentOnly
+addListForm
each lists
if visible this
+list(this)
if currentCardIsInThisList _id null
+cardDetails(currentCard)
if currentUser.isBoardMember
unless currentUser.isCommentOnly
+addListForm
template(name="addListForm")
.list.list-composer.js-list-composer

View file

@ -163,37 +163,11 @@ BlazeComponent.extendComponent({
// the user will legitimately expect to be able to select some text with
// his mouse.
if (Utils.isMiniScreen) {
const noDragInside = [
'a',
'input',
'textarea',
'p',
'.js-list-handle',
'.js-swimlane-header-handle',
];
}
if (!Utils.isMiniScreen && !showDesktopDragHandles) {
const noDragInside = [
'a',
'input',
'textarea',
'p',
'.js-list-header',
];
}
if (!Utils.isMiniScreen && showDesktopDragHandles) {
const noDragInside = [
'a',
'input',
'textarea',
'p',
'.js-list-handle',
'.js-swimlane-header-handle',
];
}
const noDragInside = ['a', 'input', 'textarea', 'p'].concat(
Util.isMiniScreen || (!Util.isMiniScreen && showDesktopDragHandles)
? ['.js-list-handle', '.js-swimlane-header-handle']
: ['.js-list-header'],
);
if (
$(evt.target).closest(noDragInside.join(',')).length === 0 &&

View file

@ -409,6 +409,21 @@ Boards.helpers({
},
lists() {
const enabled = Meteor.user().hasShowDesktopDragHandles();
return enabled ? this.draggableLists() : this.newestLists();
},
newestLists() {
// sorted lists from newest to the oldest, by its creation date or its cards' last modification date
return Lists.find(
{
boardId: this._id,
archived: false,
},
{ sort: { updatedAt: -1 } },
);
},
draggableLists() {
return Lists.find({ boardId: this._id }, { sort: { sort: 1 } });
},

View file

@ -1695,6 +1695,23 @@ if (Meteor.isServer) {
const oldvalue = doc[action] || '';
const activityType = `a-${action}`;
const card = Cards.findOne(doc._id);
const list = card.list();
if (list) {
// change list modifiedAt
const modifiedAt = new Date();
const boardId = list.boardId;
Lists.direct.update(
{
_id: list._id,
},
{
$set: {
modifiedAt,
boardId,
},
},
);
}
const username = Users.findOne(userId).username;
const activity = {
userId,

View file

@ -174,6 +174,21 @@ Swimlanes.helpers({
},
lists() {
const enabled = Meteor.user().hasShowDesktopDragHandles();
return enabled ? this.draggableLists() : this.newestLists();
},
newestLists() {
// sorted lists from newest to the oldest, by its creation date or its cards' last modification date
return Lists.find(
{
boardId: this.boardId,
swimlaneId: { $in: [this._id, ''] },
archived: false,
},
{ sort: { updatedAt: -1 } },
);
},
draggableLists() {
return Lists.find(
{
boardId: this.boardId,