From 3a26054619732f8e567bbec4e053d6ba7b61bcf4 Mon Sep 17 00:00:00 2001 From: azivner Date: Sun, 3 Dec 2017 17:46:56 -0500 Subject: [PATCH] fixes to recent changes --- public/javascripts/dialogs/recent_changes.js | 11 ++++- public/javascripts/note_tree.js | 48 +++++++++++++------- routes/api/recent_changes.js | 12 ++++- 3 files changed, 52 insertions(+), 19 deletions(-) diff --git a/public/javascripts/dialogs/recent_changes.js b/public/javascripts/dialogs/recent_changes.js index d2547dddb..8c58afd7a 100644 --- a/public/javascripts/dialogs/recent_changes.js +++ b/public/javascripts/dialogs/recent_changes.js @@ -33,9 +33,18 @@ const recentChanges = (function() { .attr('note-path', change.note_id) .attr('note-history-id', change.note_history_id); + let noteLink; + + if (change.current_is_deleted) { + noteLink = change.current_note_title; + } + else { + noteLink = link.createNoteLink(change.note_id, change.note_title); + } + changesListEl.append($('
  • ') .append(formattedTime + ' - ') - .append(link.createNoteLink(change.note_id)) + .append(noteLink) .append(' (').append(revLink).append(')')); } diff --git a/public/javascripts/note_tree.js b/public/javascripts/note_tree.js index edd23cf10..8fa2d537d 100644 --- a/public/javascripts/note_tree.js +++ b/public/javascripts/note_tree.js @@ -184,7 +184,32 @@ const noteTree = (function() { } async function activateNode(notePath) { + const runPath = getRunPath(notePath); + const noteId = treeUtils.getNoteIdFromNotePath(notePath); + + let parentNoteId = 'root'; + + for (const childNoteId of runPath) { + const node = getNodesByNoteId(childNoteId).find(node => node.data.note_pid === parentNoteId); + + if (childNoteId === noteId) { + await node.setActive(); + } + else { + await node.setExpanded(); + } + + parentNoteId = childNoteId; + } + } + + /** + * Accepts notePath and tries to resolve it. Part of the path might not be valid because of note moving (which causes + * path change) or other corruption, in that case this will try to get some other valid path to the correct note. + */ + function getRunPath(notePath) { const path = notePath.split("/").reverse(); + path.push('root'); const effectivePath = []; let childNoteId = null; @@ -224,27 +249,16 @@ const noteTree = (function() { } } - effectivePath.push(parentNoteId); - childNoteId = parentNoteId; - } - - const noteId = treeUtils.getNoteIdFromNotePath(notePath); - - const runPath = effectivePath.reverse(); - let parentNoteId = 'root'; - - for (const childNoteId of runPath) { - const node = getNodesByNoteId(childNoteId).find(node => node.data.note_pid === parentNoteId); - - if (childNoteId === noteId) { - await node.setActive(); + if (parentNoteId === 'root') { + break; } else { - await node.setExpanded(); + effectivePath.push(parentNoteId); + childNoteId = parentNoteId; } - - parentNoteId = childNoteId; } + + return effectivePath.reverse(); } function showParentList(noteId, node) { diff --git a/routes/api/recent_changes.js b/routes/api/recent_changes.js index 018e163da..873587700 100644 --- a/routes/api/recent_changes.js +++ b/routes/api/recent_changes.js @@ -6,7 +6,17 @@ const sql = require('../../services/sql'); const auth = require('../../services/auth'); router.get('/', auth.checkApiAuth, async (req, res, next) => { - const recentChanges = await sql.getResults("SELECT * FROM notes_history order by date_modified_to desc limit 1000"); + const recentChanges = await sql.getResults( + `SELECT + notes.is_deleted AS current_is_deleted, + notes.note_title AS current_note_title, + notes_history.* + FROM + notes_history + JOIN notes USING(note_id) + ORDER BY + date_modified_to DESC + LIMIT 1000`); res.send(recentChanges); });