mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
split tree_cache and entities from note_tree
This commit is contained in:
parent
a699210a29
commit
f52d7e3c28
22
src/public/javascripts/entities/branch.js
Normal file
22
src/public/javascripts/entities/branch.js
Normal file
@ -0,0 +1,22 @@
|
||||
class Branch {
|
||||
constructor(treeCache, row) {
|
||||
this.treeCache = treeCache;
|
||||
this.branchId = row.branchId;
|
||||
this.noteId = row.noteId;
|
||||
this.note = null;
|
||||
this.parentNoteId = row.parentNoteId;
|
||||
this.notePosition = row.notePosition;
|
||||
this.prefix = row.prefix;
|
||||
this.isExpanded = row.isExpanded;
|
||||
}
|
||||
|
||||
async getNote() {
|
||||
return this.treeCache.getNote(this.noteId);
|
||||
}
|
||||
|
||||
get toString() {
|
||||
return `Branch(branchId=${this.branchId})`;
|
||||
}
|
||||
}
|
||||
|
||||
export default Branch;
|
45
src/public/javascripts/entities/note_short.js
Normal file
45
src/public/javascripts/entities/note_short.js
Normal file
@ -0,0 +1,45 @@
|
||||
class NoteShort {
|
||||
constructor(treeCache, row) {
|
||||
this.treeCache = treeCache;
|
||||
this.noteId = row.noteId;
|
||||
this.title = row.title;
|
||||
this.isProtected = row.isProtected;
|
||||
this.type = row.type;
|
||||
this.mime = row.mime;
|
||||
this.hideInAutocomplete = row.hideInAutocomplete;
|
||||
}
|
||||
|
||||
async getBranches() {
|
||||
const branches = [];
|
||||
|
||||
for (const parent of this.treeCache.parents[this.noteId]) {
|
||||
branches.push(await this.treeCache.getBranchByChildParent(this.noteId, p.noteId));
|
||||
}
|
||||
|
||||
return branches;
|
||||
}
|
||||
|
||||
async getChildBranches() {
|
||||
const branches = [];
|
||||
|
||||
for (const child of this.treeCache.children[this.noteId]) {
|
||||
branches.push(await this.treeCache.getBranchByChildParent(child.noteId, this.noteId));
|
||||
}
|
||||
|
||||
return branches;
|
||||
}
|
||||
|
||||
async getParentNotes() {
|
||||
return this.treeCache.parents[this.noteId] || [];
|
||||
}
|
||||
|
||||
async getChildNotes() {
|
||||
return this.treeCache.children[this.noteId] || [];
|
||||
}
|
||||
|
||||
get toString() {
|
||||
return `Note(noteId=${this.noteId}, title=${this.title})`;
|
||||
}
|
||||
}
|
||||
|
||||
export default NoteShort;
|
@ -11,134 +11,7 @@ import treeUtils from './tree_utils.js';
|
||||
import utils from './utils.js';
|
||||
import server from './server.js';
|
||||
import recentNotes from './dialogs/recent_notes.js';
|
||||
|
||||
class TreeCache {
|
||||
constructor(noteRows, branchRows) {
|
||||
this.parents = [];
|
||||
this.children = [];
|
||||
this.childParentToBranch = {};
|
||||
|
||||
/** @type {Object.<string, NoteShort>} */
|
||||
this.notes = {};
|
||||
for (const noteRow of noteRows) {
|
||||
const note = new NoteShort(this, noteRow);
|
||||
|
||||
this.notes[note.noteId] = note;
|
||||
}
|
||||
|
||||
/** @type {Object.<string, Branch>} */
|
||||
this.branches = {};
|
||||
for (const branchRow of branchRows) {
|
||||
const branch = new Branch(this, branchRow);
|
||||
|
||||
this.addBranch(branch);
|
||||
}
|
||||
}
|
||||
|
||||
getNote(noteId) {
|
||||
return this.notes[noteId];
|
||||
}
|
||||
|
||||
addBranch(branch) {
|
||||
this.branches[branch.branchId] = branch;
|
||||
|
||||
this.parents[branch.noteId] = this.parents[branch.noteId] || [];
|
||||
this.parents[branch.noteId].push(this.notes[branch.parentNoteId]);
|
||||
|
||||
this.children[branch.parentNoteId] = this.children[branch.parentNoteId] || [];
|
||||
this.children[branch.parentNoteId].push(this.notes[branch.noteId]);
|
||||
|
||||
this.childParentToBranch[branch.noteId + '-' + branch.parentNoteId] = branch;
|
||||
}
|
||||
|
||||
add(note, branch) {
|
||||
this.notes[note.noteId] = note;
|
||||
|
||||
this.addBranch(branch);
|
||||
}
|
||||
|
||||
getBranch(branchId) {
|
||||
return this.branches[branchId];
|
||||
}
|
||||
|
||||
getBranchByChildParent(childNoteId, parentNoteId) {
|
||||
const key = (childNoteId + '-' + parentNoteId);
|
||||
const branch = this.childParentToBranch[key];
|
||||
|
||||
if (!branch) {
|
||||
utils.throwError("Cannot find branch for child-parent=" + key);
|
||||
}
|
||||
|
||||
return branch;
|
||||
}
|
||||
}
|
||||
|
||||
class NoteShort {
|
||||
constructor(treeCache, row) {
|
||||
this.treeCache = treeCache;
|
||||
this.noteId = row.noteId;
|
||||
this.title = row.title;
|
||||
this.isProtected = row.isProtected;
|
||||
this.type = row.type;
|
||||
this.mime = row.mime;
|
||||
this.hideInAutocomplete = row.hideInAutocomplete;
|
||||
}
|
||||
|
||||
async getBranches() {
|
||||
const branches = [];
|
||||
|
||||
for (const parent of this.treeCache.parents[this.noteId]) {
|
||||
branches.push(await this.treeCache.getBranchByChildParent(this.noteId, p.noteId));
|
||||
}
|
||||
|
||||
return branches;
|
||||
}
|
||||
|
||||
async getChildBranches() {
|
||||
const branches = [];
|
||||
|
||||
for (const child of this.treeCache.children[this.noteId]) {
|
||||
branches.push(await this.treeCache.getBranchByChildParent(child.noteId, this.noteId));
|
||||
}
|
||||
|
||||
return branches;
|
||||
}
|
||||
|
||||
async getParentNotes() {
|
||||
return this.treeCache.parents[this.noteId] || [];
|
||||
}
|
||||
|
||||
async getChildNotes() {
|
||||
return this.treeCache.children[this.noteId] || [];
|
||||
}
|
||||
|
||||
get toString() {
|
||||
return `Note(noteId=${this.noteId}, title=${this.title})`;
|
||||
}
|
||||
}
|
||||
|
||||
class Branch {
|
||||
constructor(treeCache, row) {
|
||||
this.treeCache = treeCache;
|
||||
this.branchId = row.branchId;
|
||||
this.noteId = row.noteId;
|
||||
this.note = null;
|
||||
this.parentNoteId = row.parentNoteId;
|
||||
this.notePosition = row.notePosition;
|
||||
this.prefix = row.prefix;
|
||||
this.isExpanded = row.isExpanded;
|
||||
}
|
||||
|
||||
async getNote() {
|
||||
return this.treeCache.getNote(this.noteId);
|
||||
}
|
||||
|
||||
get toString() {
|
||||
return `Branch(branchId=${this.branchId})`;
|
||||
}
|
||||
}
|
||||
|
||||
let treeCache;
|
||||
import treeCache from './tree_cache.js';
|
||||
|
||||
const $tree = $("#tree");
|
||||
const $parentList = $("#parent-list");
|
||||
@ -244,7 +117,7 @@ function setParentChildRelation(branchId, parentNoteId, childNoteId) {
|
||||
async function prepareBranch(noteRows, branchRows) {
|
||||
utils.assertArguments(noteRows);
|
||||
|
||||
treeCache = new TreeCache(noteRows, branchRows);
|
||||
treeCache.load(noteRows, branchRows);
|
||||
|
||||
return await prepareBranchInner(treeCache.getNote('root'));
|
||||
}
|
||||
|
68
src/public/javascripts/tree_cache.js
Normal file
68
src/public/javascripts/tree_cache.js
Normal file
@ -0,0 +1,68 @@
|
||||
import utils from "./utils.js";
|
||||
import Branch from "./entities/branch.js";
|
||||
import NoteShort from "./entities/note_short.js";
|
||||
|
||||
class TreeCache {
|
||||
load(noteRows, branchRows) {
|
||||
this.parents = [];
|
||||
this.children = [];
|
||||
this.childParentToBranch = {};
|
||||
|
||||
/** @type {Object.<string, NoteShort>} */
|
||||
this.notes = {};
|
||||
for (const noteRow of noteRows) {
|
||||
const note = new NoteShort(this, noteRow);
|
||||
|
||||
this.notes[note.noteId] = note;
|
||||
}
|
||||
|
||||
/** @type {Object.<string, Branch>} */
|
||||
this.branches = {};
|
||||
for (const branchRow of branchRows) {
|
||||
const branch = new Branch(this, branchRow);
|
||||
|
||||
this.addBranch(branch);
|
||||
}
|
||||
}
|
||||
|
||||
getNote(noteId) {
|
||||
return this.notes[noteId];
|
||||
}
|
||||
|
||||
addBranch(branch) {
|
||||
this.branches[branch.branchId] = branch;
|
||||
|
||||
this.parents[branch.noteId] = this.parents[branch.noteId] || [];
|
||||
this.parents[branch.noteId].push(this.notes[branch.parentNoteId]);
|
||||
|
||||
this.children[branch.parentNoteId] = this.children[branch.parentNoteId] || [];
|
||||
this.children[branch.parentNoteId].push(this.notes[branch.noteId]);
|
||||
|
||||
this.childParentToBranch[branch.noteId + '-' + branch.parentNoteId] = branch;
|
||||
}
|
||||
|
||||
add(note, branch) {
|
||||
this.notes[note.noteId] = note;
|
||||
|
||||
this.addBranch(branch);
|
||||
}
|
||||
|
||||
getBranch(branchId) {
|
||||
return this.branches[branchId];
|
||||
}
|
||||
|
||||
getBranchByChildParent(childNoteId, parentNoteId) {
|
||||
const key = (childNoteId + '-' + parentNoteId);
|
||||
const branch = this.childParentToBranch[key];
|
||||
|
||||
if (!branch) {
|
||||
utils.throwError("Cannot find branch for child-parent=" + key);
|
||||
}
|
||||
|
||||
return branch;
|
||||
}
|
||||
}
|
||||
|
||||
const treeCache = new TreeCache();
|
||||
|
||||
export default treeCache;
|
Loading…
x
Reference in New Issue
Block a user