Speedup foldercollection

This commit is contained in:
djmaze 2021-04-23 13:01:51 +02:00
parent 29fe73d4e7
commit 8aa9b0b33f
7 changed files with 124 additions and 175 deletions

View file

@ -100,10 +100,8 @@ export class FolderCollectionModel extends AbstractCollectionModel
storeIt() {
const cnt = pInt(this.CountRec);
let limit = pInt(Settings.app('folderSpecLimit'));
limit = 100 < limit ? 100 : 10 > limit ? 10 : limit;
FolderUserStore.displaySpecSetting(0 >= cnt || limit < cnt);
FolderUserStore.displaySpecSetting(0 >= cnt
|| Math.max(10, Math.min(100, pInt(Settings.app('folderSpecLimit')))) < cnt);
FolderUserStore.folderList(this);

View file

@ -20,7 +20,7 @@
}
.b-folders-user {
.e-link.print-count.system .badge {
a.print-count.system .badge {
display: none !important;
}
}
@ -75,7 +75,7 @@
overflow: hidden;
white-space: nowrap;
.e-link {
a {
display: block;
position: relative;
z-index: 1;
@ -108,9 +108,7 @@
display: inline;
}
padding: 0;
padding-left: @folderItemPadding;
padding-right: @folderItemPadding;
padding: 0 @folderItemPadding;
text-decoration: none;
@ -203,21 +201,21 @@
font-weight: bold;
}
.b-sub-folders .e-item .e-link {
.b-sub-folders .e-item a {
padding-left: @subPadding * 1 + @folderItemPadding;
}
.b-sub-folders .b-sub-folders .e-item .e-link {
.b-sub-folders .b-sub-folders .e-item a {
padding-left: @subPadding * 2 + @folderItemPadding;
}
.b-sub-folders .b-sub-folders .b-sub-folders .e-item .e-link {
.b-sub-folders .b-sub-folders .b-sub-folders .e-item a {
padding-left: @subPadding * 3 + @folderItemPadding;
}
.b-sub-folders .b-sub-folders .b-sub-folders .b-sub-folders .e-item .e-link {
.b-sub-folders .b-sub-folders .b-sub-folders .b-sub-folders .e-item a {
padding-left: @subPadding * 4 + @folderItemPadding;
}
/**/
&.single-root-inbox .i-am-inbox.e-link {
&.single-root-inbox a.i-am-inbox {
display: none !important;
}
@ -228,16 +226,16 @@
}
&.single-root-inbox .i-am-inbox-wrapper {
.b-sub-folders .e-item .e-link {
.b-sub-folders .e-item a {
padding-left: @folderItemPadding;
}
.b-sub-folders .b-sub-folders .e-item .e-link {
.b-sub-folders .b-sub-folders .e-item a {
padding-left: @subPadding * 1 + @folderItemPadding;
}
.b-sub-folders .b-sub-folders .b-sub-folders .e-item .e-link {
.b-sub-folders .b-sub-folders .b-sub-folders .e-item a {
padding-left: @subPadding * 2 + @folderItemPadding;
}
.b-sub-folders .b-sub-folders .b-sub-folders .b-sub-folders .e-item .e-link {
.b-sub-folders .b-sub-folders .b-sub-folders .b-sub-folders .e-item a {
padding-left: @subPadding * 3 + @folderItemPadding;
}
}

View file

@ -108,16 +108,16 @@ export class FolderListMailBoxUserView extends AbstractViewLeft {
}
}
el = eqs(event, '.b-folders .e-item .e-link.selectable .inbox-star-icon');
el = eqs(event, '.b-folders .e-item a.selectable .inbox-star-icon');
el && fSelectFolder(el, event, !this.isInboxStarred());
el = eqs(event, '.b-folders .e-item .e-link.selectable');
el = eqs(event, '.b-folders .e-item a.selectable');
el && fSelectFolder(el, event, false);
});
shortcuts.add('arrowup,arrowdown', '', Scope.FolderList, event => {
let items = [], index = 0;
dom.querySelectorAll('.b-folders .e-item .e-link:not(.hidden)').forEach(node => {
dom.querySelectorAll('.b-folders .e-item a:not(.hidden)').forEach(node => {
if (node.offsetHeight || node.getClientRects().length) {
items.push(node);
if (node.matches('.focused')) {
@ -140,7 +140,7 @@ export class FolderListMailBoxUserView extends AbstractViewLeft {
});
shortcuts.add('enter,open', '', Scope.FolderList, () => {
const item = qs('.b-folders .e-item .e-link:not(.hidden).focused');
const item = qs('.b-folders .e-item a:not(.hidden).focused');
if (item) {
AppUserStore.focusedState(Scope.MessageList);
item.click();
@ -150,7 +150,7 @@ export class FolderListMailBoxUserView extends AbstractViewLeft {
});
shortcuts.add('space', '', Scope.FolderList, () => {
const item = qs('.b-folders .e-item .e-link:not(.hidden).focused'),
const item = qs('.b-folders .e-item a:not(.hidden).focused'),
folder = item && ko.dataFor(item);
if (folder) {
const collapsed = folder.collapsed();
@ -169,11 +169,11 @@ export class FolderListMailBoxUserView extends AbstractViewLeft {
});
AppUserStore.focusedState.subscribe(value => {
let el = qs('.b-folders .e-item .e-link.focused');
el && qs('.b-folders .e-item .e-link.focused').classList.remove('focused');
let el = qs('.b-folders .e-item a.focused');
el && qs('.b-folders .e-item a.focused').classList.remove('focused');
if (Scope.FolderList === value) {
el = qs('.b-folders .e-item .e-link.selected');
el && qs('.b-folders .e-item .e-link.selected').classList.add('focused');
el = qs('.b-folders .e-item a.selected');
el && qs('.b-folders .e-item a.selected').classList.add('focused');
}
});
}
@ -181,7 +181,7 @@ export class FolderListMailBoxUserView extends AbstractViewLeft {
scrollToFocused() {
const scrollable = this.oContentScrollable;
if (scrollable) {
let block, focused = scrollable.querySelector('.e-item .e-link.focused');
let block, focused = scrollable.querySelector('.e-item a.focused');
if (focused) {
const fRect = focused.getBoundingClientRect(),
sRect = scrollable.getBoundingClientRect();