improved note list pager for many pages

This commit is contained in:
zadam 2020-12-12 12:07:15 +01:00
parent 5098dda376
commit 60e2026850
6 changed files with 29 additions and 18 deletions

View file

@ -239,7 +239,12 @@ class NoteListRenderer {
$pager.toggle(pageCount > 1);
let lastPrinted;
for (let i = 1; i <= pageCount; i++) {
if (pageCount < 20 || i <= 5 || pageCount - i <= 5 || Math.abs(this.page - i) <= 2) {
lastPrinted = true;
$pager.append(
i === this.page
? $('<span>').text(i).css('text-decoration', 'underline').css('font-weight', "bold")
@ -252,6 +257,12 @@ class NoteListRenderer {
" &nbsp; "
);
}
else if (lastPrinted) {
$pager.append("... &nbsp; ");
lastPrinted = false;
}
}
}
async renderNote(note, expand = false) {

View file

@ -97,9 +97,6 @@ function getNotesAndBranchesAndAttributes(noteIds) {
});
}
branches.sort((a, b) => a.notePosition - b.notePosition < 0 ? -1 : 1);
attributes.sort((a, b) => a.position - b.position < 0 ? -1 : 1);
return {
branches,
notes,

View file

@ -13,7 +13,7 @@ class Attribute {
/** @param {string} */
this.type = row.type;
/** @param {string} */
this.name = row.name.toLowerCase();
this.name = row.name;
/** @param {int} */
this.position = row.position;

View file

@ -17,7 +17,7 @@ class Branch {
/** @param {int} */
this.notePosition = row.notePosition;
/** @param {boolean} */
this.isExpanded = row.isExpanded;
this.isExpanded = !!row.isExpanded;
if (this.branchId === 'root') {
return;

View file

@ -14,7 +14,7 @@ class NoteCache {
this.childParentToBranch = {};
/** @type {Object.<String, Attribute>} */
this.attributes = [];
/** @type {Object.<String, Attribute[]>} Points from attribute type-name to list of attributes them */
/** @type {Object.<String, Attribute[]>} Points from attribute type-name to list of attributes */
this.attributeIndex = {};
this.loaded = false;
@ -22,7 +22,7 @@ class NoteCache {
/** @return {Attribute[]} */
findAttributes(type, name) {
return this.attributeIndex[`${type}-${name}`] || [];
return this.attributeIndex[`${type}-${name.toLowerCase()}`] || [];
}
/** @return {Attribute[]} */

View file

@ -14,6 +14,7 @@ sqlInit.dbReady.then(() => {
});
function load() {
const start = Date.now();
noteCache.reset();
for (const row of sql.iterateRows(`SELECT noteId, title, type, mime, isProtected, dateCreated, dateModified, utcDateCreated, utcDateModified FROM notes WHERE isDeleted = 0`, [])) {
@ -29,6 +30,8 @@ function load() {
}
noteCache.loaded = true;
log.info(`Note cache load took ${Date.now() - start}ms`);
}
eventService.subscribe([eventService.ENTITY_CHANGED, eventService.ENTITY_DELETED, eventService.ENTITY_SYNCED], ({entityName, entity}) => {