From 85e4bd817b5b463c905d26f98056c5948526558b Mon Sep 17 00:00:00 2001 From: zadam Date: Thu, 25 Jul 2019 22:31:09 +0200 Subject: [PATCH] note revisions sidebar --- src/public/javascripts/services/sidebar.js | 11 ++++- .../javascripts/widgets/note_revisions.js | 44 +++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 src/public/javascripts/widgets/note_revisions.js diff --git a/src/public/javascripts/services/sidebar.js b/src/public/javascripts/services/sidebar.js index debdaf0d3..32415c376 100644 --- a/src/public/javascripts/services/sidebar.js +++ b/src/public/javascripts/services/sidebar.js @@ -1,5 +1,6 @@ import NoteInfoWidget from "../widgets/note_info.js"; import LinkMapWidget from "../widgets/link_map.js"; +import NoteRevisionsWidget from "../widgets/note_revisions.js"; const WIDGET_TPL = `
@@ -48,6 +49,7 @@ class Sidebar { this.addNoteInfoWidget(); this.addLinkMapWidget(); + this.addNoteRevisionsWidget(); } async addNoteInfoWidget() { @@ -65,7 +67,14 @@ class Sidebar { const linkMapWidget = new LinkMapWidget(this.ctx, $widget); await linkMapWidget.renderBody(); - console.log($widget); + this.$widgets.append($widget); + } + + async addNoteRevisionsWidget() { + const $widget = this.createWidgetElement(); + + const noteRevisionsWidget = new NoteRevisionsWidget(this.ctx, $widget); + await noteRevisionsWidget.renderBody(); this.$widgets.append($widget); } diff --git a/src/public/javascripts/widgets/note_revisions.js b/src/public/javascripts/widgets/note_revisions.js new file mode 100644 index 000000000..b24c1af36 --- /dev/null +++ b/src/public/javascripts/widgets/note_revisions.js @@ -0,0 +1,44 @@ +import server from "../services/server.js"; + +const TPL = ` + +`; + +class NoteRevisionsWidget { + /** + * @param {TabContext} ctx + * @param {jQuery} $widget + */ + constructor(ctx, $widget) { + this.ctx = ctx; + this.$widget = $widget; + this.$title = this.$widget.find('.widget-title'); + this.$title.text("Note revisions"); + } + + async renderBody() { + const $body = this.$widget.find('.card-body'); + const revisionItems = await server.get(`notes/${this.ctx.note.noteId}/revisions`); + + if (revisionItems.length === 0) { + $body.text("No revisions yet..."); + return; + } + + $body.html(TPL); + + const $list = $body.find('.note-revision-list'); + + for (const item of revisionItems) { + $list.append($('
  • ').append($("", { + 'data-action': 'note-revision', + 'data-note-path': this.ctx.note.noteId, + 'data-note-revision-id': item.noteRevisionId, + href: 'javascript:' + }).text(item.dateModifiedFrom))); + } + } +} + +export default NoteRevisionsWidget; \ No newline at end of file