diff --git a/db/migrations/0144__edited_notes_widget.sql b/db/migrations/0144__edited_notes_widget.sql new file mode 100644 index 000000000..b635c142f --- /dev/null +++ b/db/migrations/0144__edited_notes_widget.sql @@ -0,0 +1,2 @@ +INSERT INTO options (name, value, utcDateCreated, utcDateModified, isSynced) +VALUES ('editedNotesWidget', '{"enabled":true,"expanded":true,"position":5}', '2018-07-29T18:31:00.874Z', '2018-07-29T18:31:00.874Z', 0); \ No newline at end of file diff --git a/src/public/javascripts/dialogs/options/sidebar.js b/src/public/javascripts/dialogs/options/sidebar.js index 5fc29a712..43cc8a4c5 100644 --- a/src/public/javascripts/dialogs/options/sidebar.js +++ b/src/public/javascripts/dialogs/options/sidebar.js @@ -52,7 +52,8 @@ export default class SidebarOptions { {name: 'noteInfo', title: 'Note info'}, {name: 'noteRevisions', title: 'Note revisions'}, {name: 'whatLinksHere', title: 'What links here'}, - {name: 'similarNotes', title: 'Similar notes'} + {name: 'similarNotes', title: 'Similar notes'}, + {name: 'editedNotes', title: 'Edited notes (only on day note)'} ].map(widget => { widget.option = this.parseJsonSafely(options[widget.name + 'Widget']) || { enabled: true, diff --git a/src/public/javascripts/services/sidebar.js b/src/public/javascripts/services/sidebar.js index e8fc7f19c..3985a2cb0 100644 --- a/src/public/javascripts/services/sidebar.js +++ b/src/public/javascripts/services/sidebar.js @@ -66,7 +66,8 @@ class Sidebar { import("../widgets/note_revisions.js"), import("../widgets/attributes.js"), import("../widgets/what_links_here.js"), - import("../widgets/similar_notes.js") + import("../widgets/similar_notes.js"), + import("../widgets/edited_notes.js"), ])).map(m => m.default); const options = await optionsService.waitForOptions(); diff --git a/src/public/javascripts/widgets/edited_notes.js b/src/public/javascripts/widgets/edited_notes.js new file mode 100644 index 000000000..a700e7bb1 --- /dev/null +++ b/src/public/javascripts/widgets/edited_notes.js @@ -0,0 +1,51 @@ +import StandardWidget from "./standard_widget.js"; +import linkService from "../services/link.js"; +import server from "../services/server.js"; +import treeCache from "../services/tree_cache.js"; + +class EditedNotesWidget extends StandardWidget { + getWidgetTitle() { return "Edited notes on this day"; } + + getMaxHeight() { return "200px"; } + + async isEnabled() { + return await this.ctx.note.hasLabel("dateNote"); + } + + async doRenderBody() { + // remember which title was when we found the similar notes + this.title = this.ctx.note.title; + + let editedNotes = await server.get('edited-notes/' + await this.ctx.note.getLabelValue("dateNote")); + + editedNotes = editedNotes.filter(note => note.noteId !== this.ctx.note.noteId); + + if (editedNotes.length === 0) { + this.$body.text("No edited notes on this day yet ..."); + return; + } + + const noteIds = editedNotes.flatMap(note => note.notePath); + + await treeCache.getNotes(noteIds); // preload all at once + + const $list = $('