From b0694360394616c2afe1f4b2d4184d714461284c Mon Sep 17 00:00:00 2001 From: zadam Date: Sat, 7 Sep 2019 10:11:59 +0200 Subject: [PATCH] added "edited notes on date" widget --- db/migrations/0144__edited_notes_widget.sql | 2 + .../javascripts/dialogs/options/sidebar.js | 3 +- src/public/javascripts/services/sidebar.js | 3 +- .../javascripts/widgets/edited_notes.js | 51 +++++++++++++++++++ .../javascripts/widgets/standard_widget.js | 5 +- src/routes/api/note_revisions.js | 24 ++++++++- src/routes/api/options.js | 1 + src/routes/routes.js | 2 + src/services/app_info.js | 2 +- src/services/note_cache.js | 1 + 10 files changed, 89 insertions(+), 5 deletions(-) create mode 100644 db/migrations/0144__edited_notes_widget.sql create mode 100644 src/public/javascripts/widgets/edited_notes.js 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 = $('