2017-11-04 19:38:50 -04:00
|
|
|
"use strict";
|
|
|
|
|
2017-11-04 22:18:36 -04:00
|
|
|
const treeUtils = (function() {
|
|
|
|
const treeEl = $("#tree");
|
2017-11-04 19:28:49 -04:00
|
|
|
|
2017-11-18 17:05:50 -05:00
|
|
|
function getParentNoteTreeId(node) {
|
|
|
|
return node.note_pid;
|
2017-11-04 22:18:36 -04:00
|
|
|
}
|
2017-09-09 12:06:15 -04:00
|
|
|
|
2017-11-14 23:01:23 -05:00
|
|
|
function getParentProtectedStatus(node) {
|
2017-11-14 21:54:12 -05:00
|
|
|
return node.getParent() === null ? 0 : node.getParent().data.is_protected;
|
2017-11-04 22:18:36 -04:00
|
|
|
}
|
2017-09-09 12:06:15 -04:00
|
|
|
|
2017-11-18 17:05:50 -05:00
|
|
|
function getNodeByKey(key) {
|
|
|
|
return treeEl.fancytree('getNodeByKey', key);
|
2017-10-01 23:07:32 -04:00
|
|
|
}
|
|
|
|
|
2017-11-18 17:05:50 -05:00
|
|
|
function getNodeByNoteTreeId(noteTreeId) {
|
|
|
|
const key = noteTree.getKeyFromNoteTreeId(noteTreeId);
|
2017-10-01 23:07:32 -04:00
|
|
|
|
2017-11-18 17:05:50 -05:00
|
|
|
return getNodeByKey(key);
|
|
|
|
}
|
|
|
|
|
|
|
|
async function activateNode(noteTreeIdToActivate) {
|
|
|
|
const noteTreeIdPath = [ noteTreeIdToActivate ];
|
|
|
|
|
|
|
|
let note = noteTree.getByNoteId(noteTreeIdToActivate);
|
2017-11-17 22:52:24 -05:00
|
|
|
|
|
|
|
while (note) {
|
|
|
|
if (note.note_pid !== 'root') {
|
2017-11-18 17:05:50 -05:00
|
|
|
noteTreeIdPath.push(note.note_pid);
|
2017-11-17 22:52:24 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
note = noteTree.getByNoteId(note.note_pid);
|
|
|
|
}
|
|
|
|
|
2017-11-18 17:05:50 -05:00
|
|
|
for (const noteTreeId of noteTreeIdPath.reverse()) {
|
|
|
|
const node = treeUtils.getNodeByNoteTreeId(noteTreeId);
|
2017-11-17 22:52:24 -05:00
|
|
|
|
2017-11-18 17:05:50 -05:00
|
|
|
if (noteTreeId !== noteTreeIdToActivate) {
|
2017-11-17 22:52:24 -05:00
|
|
|
await node.setExpanded();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
await node.setActive();
|
|
|
|
}
|
|
|
|
}
|
2017-10-01 23:07:32 -04:00
|
|
|
}
|
|
|
|
|
2017-11-04 22:18:36 -04:00
|
|
|
function getNoteTitle(noteId) {
|
|
|
|
const note = treeUtils.getNodeByKey(noteId);
|
|
|
|
if (!note) {
|
|
|
|
return;
|
|
|
|
}
|
2017-10-01 23:07:32 -04:00
|
|
|
|
2017-11-04 22:18:36 -04:00
|
|
|
let noteTitle = note.title;
|
2017-09-18 20:48:02 -04:00
|
|
|
|
2017-11-04 22:18:36 -04:00
|
|
|
if (noteTitle.endsWith(" (clone)")) {
|
|
|
|
noteTitle = noteTitle.substr(0, noteTitle.length - 8);
|
|
|
|
}
|
2017-10-11 19:41:45 -04:00
|
|
|
|
2017-11-04 22:18:36 -04:00
|
|
|
return noteTitle;
|
2017-09-18 20:48:02 -04:00
|
|
|
}
|
|
|
|
|
2017-11-18 17:05:50 -05:00
|
|
|
function getFullName(noteTreeId) {
|
|
|
|
let note = noteTree.getByNoteId(noteTreeId);
|
2017-09-09 12:06:15 -04:00
|
|
|
|
2017-11-04 22:18:36 -04:00
|
|
|
if (note === null) {
|
|
|
|
return "[unknown]";
|
2017-11-04 11:32:05 -04:00
|
|
|
}
|
2017-11-04 22:18:36 -04:00
|
|
|
|
|
|
|
const path = [];
|
|
|
|
|
|
|
|
while (note) {
|
2017-11-17 22:37:11 -05:00
|
|
|
path.push(note.note_title);
|
2017-11-04 22:18:36 -04:00
|
|
|
|
2017-11-17 22:37:11 -05:00
|
|
|
note = noteTree.getByNoteId(note.note_pid);
|
2017-11-04 22:18:36 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
return path.reverse().join(" > ");
|
|
|
|
}
|
2017-09-09 12:06:15 -04:00
|
|
|
|
2017-11-04 22:18:36 -04:00
|
|
|
return {
|
2017-11-18 17:05:50 -05:00
|
|
|
getParentNoteTreeId,
|
2017-11-14 23:01:23 -05:00
|
|
|
getParentProtectedStatus,
|
2017-11-04 22:18:36 -04:00
|
|
|
getNodeByKey,
|
2017-11-18 17:05:50 -05:00
|
|
|
getNodeByNoteTreeId,
|
2017-11-04 22:18:36 -04:00
|
|
|
activateNode,
|
|
|
|
getNoteTitle,
|
|
|
|
getFullName
|
|
|
|
};
|
|
|
|
})();
|