prefixes are now displayed also in all autocompletes and recent notes

This commit is contained in:
azivner 2017-11-29 22:03:03 -05:00
parent 69f77ac439
commit 8bd76721ad
7 changed files with 36 additions and 38 deletions

View File

@ -60,8 +60,10 @@ const jumpToNote = (function() {
noteDetailEl.summernote('editor.restoreRange'); noteDetailEl.summernote('editor.restoreRange');
const noteId = treeUtils.getNoteIdFromNotePath(notePath);
noteDetailEl.summernote('createLink', { noteDetailEl.summernote('createLink', {
text: noteTree.getNoteTitle(notePath), text: noteTree.getNoteTitle(noteId),
url: 'app#' + notePath, url: 'app#' + notePath,
isNewWindow: true isNewWindow: true
}); });

View File

@ -48,7 +48,7 @@ const recentNotes = (function() {
const recNotes = list.filter(note => note !== noteTree.getCurrentNotePath()); const recNotes = list.filter(note => note !== noteTree.getCurrentNotePath());
$.each(recNotes, (key, valueNotePath) => { $.each(recNotes, (key, valueNotePath) => {
const noteTitle = treeUtils.getFullNameForPath(valueNotePath); const noteTitle = noteTree.getNotePathTitle(valueNotePath);
const option = $("<option></option>") const option = $("<option></option>")
.attr("value", valueNotePath) .attr("value", valueNotePath)
@ -82,8 +82,9 @@ const recentNotes = (function() {
function addLinkBasedOnRecentNotes() { function addLinkBasedOnRecentNotes() {
const notePath = getSelectedNotePath(); const notePath = getSelectedNotePath();
const noteId = treeUtils.getNoteIdFromNotePath(notePath);
const linkTitle = noteTree.getNoteTitle(notePath); const linkTitle = noteTree.getNoteTitle(noteId);
dialogEl.dialog("close"); dialogEl.dialog("close");

View File

@ -22,8 +22,10 @@ const link = (function() {
return null; return null;
} }
function createNoteLink(noteId, noteTitle) { function createNoteLink(notePath, noteTitle) {
if (!noteTitle) { if (!noteTitle) {
const noteId = treeUtils.getNoteIdFromNotePath(notePath);
noteTitle = noteTree.getNoteTitle(noteId); noteTitle = noteTree.getNoteTitle(noteId);
} }
@ -31,7 +33,7 @@ const link = (function() {
href: 'javascript:', href: 'javascript:',
text: noteTitle text: noteTitle
}).attr('action', 'note') }).attr('action', 'note')
.attr('note-path', noteId); .attr('note-path', notePath);
return noteLink; return noteLink;
} }

View File

@ -5,7 +5,6 @@ const noteTree = (function() {
const parentListEl = $("#parent-list"); const parentListEl = $("#parent-list");
let startNoteTreeId = null; let startNoteTreeId = null;
let treeLoadTime = null;
let notesTreeMap = {}; let notesTreeMap = {};
let parentToChildren = {}; let parentToChildren = {};
@ -14,32 +13,33 @@ const noteTree = (function() {
let parentChildToNoteTreeId = {}; let parentChildToNoteTreeId = {};
let noteIdToTitle = {}; let noteIdToTitle = {};
function getTreeLoadTime() {
return treeLoadTime;
}
function getNoteTreeId(parentNoteId, childNoteId) { function getNoteTreeId(parentNoteId, childNoteId) {
const key = parentNoteId + "-" + childNoteId; const key = parentNoteId + "-" + childNoteId;
const noteTreeId = parentChildToNoteTreeId[key]; // this can return undefined and client code should deal with it somehow
if (!noteTreeId) { return parentChildToNoteTreeId[key];
console.trace();
throw new Error("Can't find note tree id for parent=" + parentNoteId + ", child=" + childNoteId);
} }
return noteTreeId; function getNoteTitle(noteId, parentNoteId = null) {
} let title = noteIdToTitle[noteId];
function getNoteTitle(notePath) {
const noteId = treeUtils.getNoteIdFromNotePath(notePath);
const title = noteIdToTitle[noteId];
if (!title) { if (!title) {
throw new Error("Can't find title for noteId='" + noteId + "'"); throw new Error("Can't find title for noteId='" + noteId + "'");
} }
if (parentNoteId !== null) {
const noteTreeId = getNoteTreeId(parentNoteId, noteId);
if (noteTreeId) {
const noteTree = notesTreeMap[noteTreeId];
if (noteTree.prefix) {
title = noteTree.prefix + ' - ' + title;
}
}
}
return title; return title;
} }
@ -286,8 +286,12 @@ const noteTree = (function() {
function getNotePathTitle(notePath) { function getNotePathTitle(notePath) {
const titlePath = []; const titlePath = [];
for (const path of notePath.split('/')) { let parentNoteId = 'root';
titlePath.push(getNoteTitle(path));
for (const noteId of notePath.split('/')) {
titlePath.push(getNoteTitle(noteId, parentNoteId));
parentNoteId = noteId;
} }
return titlePath.join(' / '); return titlePath.join(' / ');
@ -476,7 +480,6 @@ const noteTree = (function() {
function loadTree() { function loadTree() {
return server.get('tree').then(resp => { return server.get('tree').then(resp => {
startNoteTreeId = resp.start_note_tree_id; startNoteTreeId = resp.start_note_tree_id;
treeLoadTime = resp.tree_load_time;
if (document.location.hash) { if (document.location.hash) {
startNoteTreeId = document.location.hash.substr(1); // strip initial # startNoteTreeId = document.location.hash.substr(1); // strip initial #
@ -531,7 +534,7 @@ const noteTree = (function() {
for (const childNoteId of parentToChildren[parentNoteId]) { for (const childNoteId of parentToChildren[parentNoteId]) {
const childNotePath = (notePath ? (notePath + '/') : '') + childNoteId; const childNotePath = (notePath ? (notePath + '/') : '') + childNoteId;
const childTitlePath = (titlePath ? (titlePath + ' / ') : '') + getNoteTitle(childNoteId); const childTitlePath = (titlePath ? (titlePath + ' / ') : '') + getNoteTitle(childNoteId, parentNoteId);
autocompleteItems.push({ autocompleteItems.push({
value: childTitlePath + ' (' + childNotePath + ')', value: childTitlePath + ' (' + childNotePath + ')',
@ -608,7 +611,6 @@ const noteTree = (function() {
} }
return { return {
getTreeLoadTime,
reload, reload,
collapseTree, collapseTree,
scrollToCurrentNote, scrollToCurrentNote,
@ -623,6 +625,6 @@ const noteTree = (function() {
createNewTopLevelNote, createNewTopLevelNote,
createNote, createNote,
setPrefix, setPrefix,
getNodesByNoteTreeId getNotePathTitle
}; };
})(); })();

View File

@ -67,7 +67,7 @@ const server = (function() {
} }
return await $.ajax(options).catch(e => { return await $.ajax(options).catch(e => {
showError("Error when calling " + method + " " + url + ": " + e); showError("Error when calling " + method + " " + url + ": " + e.status + " - " + e.statusText);
}); });
} }

View File

@ -17,13 +17,6 @@ const treeUtils = (function() {
return path[path.length - 1]; return path[path.length - 1];
} }
function getFullNameForPath(notePath) {
const path = notePath.split("/");
const titlePath = path.map(noteId => noteTree.getNoteTitle(noteId));
return titlePath.join(" > ");
}
function getNotePath(node) { function getNotePath(node) {
const path = []; const path = [];
@ -50,7 +43,6 @@ const treeUtils = (function() {
return { return {
getParentProtectedStatus, getParentProtectedStatus,
getNodeByKey, getNodeByKey,
getFullNameForPath,
getNotePath, getNotePath,
getNoteIdFromNotePath, getNoteIdFromNotePath,
setNodeTitleWithPrefix setNodeTitleWithPrefix

View File

@ -31,8 +31,7 @@ router.get('/', auth.checkApiAuth, async (req, res, next) => {
res.send({ res.send({
notes: notes, notes: notes,
start_note_tree_id: await options.getOption('start_note_tree_id'), start_note_tree_id: await options.getOption('start_note_tree_id')
tree_load_time: utils.nowTimestamp()
}); });
}); });