diff --git a/src/public/app/dialogs/clone_to.js b/src/public/app/dialogs/clone_to.js index 34910aa1e..e1ec951fa 100644 --- a/src/public/app/dialogs/clone_to.js +++ b/src/public/app/dialogs/clone_to.js @@ -16,7 +16,7 @@ let clonedNoteIds; export async function showDialog(noteIds) { if (!noteIds || noteIds.length === 0) { - noteIds = [ appContext.tabManager.getActiveContextNoteId() ] + noteIds = [ appContext.tabManager.getActiveContextNoteId() ]; } clonedNoteIds = []; diff --git a/src/public/app/layouts/desktop_layout.js b/src/public/app/layouts/desktop_layout.js index 7293d83c8..a0e6fee27 100644 --- a/src/public/app/layouts/desktop_layout.js +++ b/src/public/app/layouts/desktop_layout.js @@ -38,6 +38,7 @@ import BookPropertiesWidget from "../widgets/type_property_widgets/book_properti import ShowNoteSourceButton from "../widgets/buttons/show_note_source.js"; import LinkMapWidget from "../widgets/type_property_widgets/link_map.js"; import NotePathsWidget from "../widgets/type_property_widgets/note_paths.js"; +import SimilarNotesWidget from "../widgets/type_property_widgets/similar_notes.js"; export default class DesktopLayout { constructor(customWidgets) { @@ -115,6 +116,7 @@ export default class DesktopLayout { .section(new InheritedAttributesWidget()) .section(new NotePathsWidget()) .section(new LinkMapWidget()) + .section(new SimilarNotesWidget()) .section(new NoteInfoWidget()) .button(new ButtonWidget() .icon('bx bx-history') diff --git a/src/public/app/widgets/similar_notes.js b/src/public/app/widgets/similar_notes.js deleted file mode 100644 index a23c8bb2e..000000000 --- a/src/public/app/widgets/similar_notes.js +++ /dev/null @@ -1,151 +0,0 @@ -import linkService from "../services/link.js"; -import server from "../services/server.js"; -import froca from "../services/froca.js"; -import NoteContextAwareWidget from "./note_context_aware_widget.js"; -import options from "../services/options.js"; - -const TPL = ` -
-`; - -export default class SimilarNotesWidget extends NoteContextAwareWidget { - isEnabled() { - return super.isEnabled() - && this.note.type !== 'search' - && !this.note.hasLabel('similarNotesWidgetDisabled'); - } - - doRender() { - this.$widget = $(TPL); - this.overflowing(); - - this.$similarNotesWrapper = this.$widget.find(".similar-notes-wrapper"); - this.$expanderText = this.$widget.find(".area-expander-text"); - - this.$expander = this.$widget.find('.area-expander'); - this.$expander.on('click', async () => { - const collapse = this.$similarNotesWrapper.is(":visible"); - - await options.save('similarNotesExpanded', !collapse); - - this.triggerEvent(`similarNotesCollapsedStateChanged`, {collapse}); - }); - - return this.$widget; - } - - noteSwitched() { - const noteId = this.noteId; - - this.toggleInt(false); - this.$similarNotesWrapper.hide(); // we'll open it in refresh() if needed - - // avoid executing this expensive operation multiple times when just going through notes (with keyboard especially) - // until the users settles on a note - setTimeout(() => { - if (this.noteId === noteId) { - this.refresh(); - } - }, 1000); - } - - async refresh() { - if (!this.isEnabled()) { - return; - } - - // remember which title was when we found the similar notes - this.title = this.note.title; - - const similarNotes = await server.get('similar-notes/' + this.noteId); - - if (!similarNotes) { - this.toggleInt(false); - return; - } - - this.toggleInt(similarNotes.length > 0); - - if (similarNotes.length === 0) { - return; - } - - if (options.is('similarNotesExpanded')) { - this.$similarNotesWrapper.show(); - } - - this.$expanderText.text(`${similarNotes.length} similar note${similarNotes.length === 1 ? '': "s"}`); - - const noteIds = similarNotes.flatMap(note => note.notePath); - - await froca.getNotes(noteIds, true); // preload all at once - - const $list = $('